Files
monorepo/LCU.API.Internal.Document/LCU.API.Internal.DocumentLib/DataAccess/BlobApiDao.cs
T
2026-03-13 09:11:35 -05:00

44 lines
1.3 KiB
C#

using System;
using System.IO;
using System.Threading.Tasks;
using Azure;
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
namespace LCU.API.Internal.DocumentLib.DataAccess;
public class BlobApiDao : IBlobApiDao
{
private readonly BlobContainerClient _client;
public BlobApiDao(IBlobStorageClient storageClient)
{
_client = storageClient.GetClient();
}
public async Task<Guid> SaveDocumentToBlob(byte[] fileData)
{
var blobDocumentId = Guid.NewGuid();
using var stream = new MemoryStream(fileData, false);
await _client.GetBlobClient(blobDocumentId.ToString()).UploadAsync(stream);
return blobDocumentId;
}
public async Task UpdateDocumentInBlob(Guid blobDocumentId, byte[] fileData)
{
using var stream = new MemoryStream(fileData, false);
await _client.GetBlobClient(blobDocumentId.ToString()).UploadAsync(stream, true);
}
public async Task<Response> RemoveDocumentFromBlob(Guid blobDocumentId)
{
return await _client.GetBlobClient(blobDocumentId.ToString())
.DeleteAsync(DeleteSnapshotsOption.IncludeSnapshots);
}
public async Task<Response<BlobDownloadStreamingResult>> GetDocumentFromBlob(Guid blobDocumentId)
{
return await _client.GetBlobClient(blobDocumentId.ToString()).DownloadStreamingAsync();
}
}