From 0828506c21b9e781e5a91a61749b40626c9ef526 Mon Sep 17 00:00:00 2001 From: Marc Mintel Date: Mon, 22 Dec 2025 15:59:17 +0100 Subject: [PATCH] refactor media module --- .../use-cases/UploadMediaUseCase.ts | 33 ++++++++++++++----- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/core/media/application/use-cases/UploadMediaUseCase.ts b/core/media/application/use-cases/UploadMediaUseCase.ts index fc8464fb7..99ea8f2d6 100644 --- a/core/media/application/use-cases/UploadMediaUseCase.ts +++ b/core/media/application/use-cases/UploadMediaUseCase.ts @@ -12,8 +12,22 @@ import type { ApplicationErrorCode } from '@core/shared/errors/ApplicationErrorC import { Media } from '../../domain/entities/Media'; import { v4 as uuidv4 } from 'uuid'; +// Define Multer file type locally since @types/multer is not available +export interface MulterFile { + fieldname: string; + originalname: string; + encoding: string; + mimetype: string; + size: number; + buffer: Buffer; + stream: NodeJS.ReadableStream; + destination: string; + filename: string; + path: string; +} + export interface UploadMediaInput { - file: Express.Multer.File; + file: MulterFile; uploadedBy: string; metadata?: Record; } @@ -46,11 +60,14 @@ export class UploadMediaUseCase { try { // Upload file to storage service - const uploadResult = await this.mediaStorage.uploadMedia(input.file.buffer, { + const uploadOptions: { filename: string; mimeType: string; metadata?: Record } = { filename: input.file.originalname, mimeType: input.file.mimetype, - metadata: input.metadata, - }); + }; + if (input.metadata !== undefined) { + uploadOptions.metadata = input.metadata; + } + const uploadResult = await this.mediaStorage.uploadMedia(input.file.buffer, uploadOptions); if (!uploadResult.success) { return Result.err({ @@ -86,10 +103,11 @@ export class UploadMediaUseCase { // Save to repository await this.mediaRepo.save(media); - this.output.present({ + const result: UploadMediaResult = { mediaId, url: uploadResult.url, - }); + }; + this.output.present(result); this.logger.info('[UploadMediaUseCase] Media uploaded successfully', { mediaId, @@ -99,8 +117,7 @@ export class UploadMediaUseCase { return Result.ok(undefined); } catch (error) { const err = error instanceof Error ? error : new Error(String(error)); - this.logger.error('[UploadMediaUseCase] Error uploading media', { - error: err.message, + this.logger.error('[UploadMediaUseCase] Error uploading media', err, { filename: input.file.originalname, });