femto-backend/Femto.Modules.Media/Contracts/LoadFile/LoadFileQueryHandler.cs
2025-05-04 21:46:24 +02:00

25 lines
788 B
C#

using Femto.Modules.Media.Contracts.LoadFile.Dto;
using Femto.Modules.Media.Data;
using Femto.Modules.Media.Infrastructure;
using MediatR;
using Microsoft.EntityFrameworkCore;
namespace Femto.Modules.Media.Contracts.LoadFile;
internal class LoadFileQueryHandler(IStorageProvider storage, MediaContext context)
: IRequestHandler<LoadFileQuery, LoadFileQueryResult>
{
public async Task<LoadFileQueryResult> Handle(
LoadFileQuery query,
CancellationToken cancellationToken
)
{
var blob = await context
.SavedBlobs.Where(b => b.Id == query.FileId)
.SingleAsync(cancellationToken: cancellationToken);
var data = await storage.LoadBlob(query.FileId.ToString());
return new(data, blob.Type, blob.Size);
}
}