proper asset creation/deletion, also raw file view in admin as well

This commit is contained in:
user
2026-03-01 18:22:49 +02:00
parent 6c2b917088
commit 9716deead7
10 changed files with 524 additions and 69 deletions

View File

@@ -13,12 +13,14 @@ import { traceResultAsync } from "@core/observability";
import { MobileRepository } from "./repository";
import { settings } from "@core/settings";
import { mobileErrors } from "./errors";
import { errAsync } from "neverthrow";
import { getFileController, type FileController } from "@domains/files/controller";
import { errAsync, okAsync } from "neverthrow";
import { db } from "@pkg/db";
export class MobileController {
constructor(
private mobileRepo: MobileRepository,
private fileController: FileController,
private defaultAdminEmail?: string,
) {}
@@ -201,11 +203,13 @@ export class MobileController {
"app.mobile.media_asset_id": mediaAssetId,
},
fn: () =>
this.mobileRepo.deleteMediaAsset(
fctx,
mediaAssetId,
ownerUserId,
),
this.mobileRepo
.deleteMediaAsset(fctx, mediaAssetId, ownerUserId)
.andThen((fileId) =>
this.fileController
.deleteFiles(fctx, [fileId], ownerUserId)
.map(() => true),
),
});
}
@@ -217,7 +221,31 @@ export class MobileController {
"app.user.id": ownerUserId,
"app.mobile.device_id": deviceId,
},
fn: () => this.mobileRepo.deleteDevice(fctx, deviceId, ownerUserId),
fn: () =>
this.mobileRepo
.deleteDevice(fctx, deviceId, ownerUserId)
.andThen((result) => {
const cleanup = result.fileIds.length
? this.fileController.deleteFiles(
fctx,
result.fileIds,
ownerUserId,
)
: okAsync(true);
return cleanup.andThen(() =>
this.mobileRepo
.finalizeDeleteDevice(
fctx,
deviceId,
ownerUserId,
)
.map(() => ({
deleted: true,
deletedFileCount: result.fileIds.length,
})),
);
}),
});
}
@@ -235,6 +263,7 @@ export class MobileController {
export function getMobileController(): MobileController {
return new MobileController(
new MobileRepository(db),
getFileController(),
settings.defaultAdminEmail || undefined,
);
}