Files
gridpilot.gg/core/media/application/use-cases/ResolveMediaReferenceUseCase.ts
2026-01-16 12:55:48 +01:00

21 lines
728 B
TypeScript

import { Result } from '@core/shared/application/Result';
import type { MediaReference } from '@core/domain/media/MediaReference';
import type { MediaResolverPort } from '@core/ports/media/MediaResolverPort';
export type ResolveMediaReferenceInput = {
reference: MediaReference;
};
export class ResolveMediaReferenceUseCase {
constructor(private readonly mediaResolver: MediaResolverPort) {}
async execute(input: ResolveMediaReferenceInput): Promise<Result<string | null>> {
try {
const resolvedPath = await this.mediaResolver.resolve(input.reference);
return Result.ok(resolvedPath);
} catch (error) {
return Result.err(error instanceof Error ? error : new Error(String(error)));
}
}
}