♻️ Finish centerlizing the data models

This commit is contained in:
2025-09-27 15:14:05 +08:00
parent e70d8371f8
commit 9ce31c4dd8
167 changed files with 780 additions and 42880 deletions

View File

@@ -28,11 +28,11 @@ public class FileService(
private const string CacheKeyPrefix = "file:";
private static readonly TimeSpan CacheDuration = TimeSpan.FromMinutes(15);
public async Task<CloudFile?> GetFileAsync(string fileId)
public async Task<SnCloudFile?> GetFileAsync(string fileId)
{
var cacheKey = $"{CacheKeyPrefix}{fileId}";
var cachedFile = await cache.GetAsync<CloudFile>(cacheKey);
var cachedFile = await cache.GetAsync<SnCloudFile>(cacheKey);
if (cachedFile is not null)
return cachedFile;
@@ -48,15 +48,15 @@ public class FileService(
return file;
}
public async Task<List<CloudFile>> GetFilesAsync(List<string> fileIds)
public async Task<List<SnCloudFile>> GetFilesAsync(List<string> fileIds)
{
var cachedFiles = new Dictionary<string, CloudFile>();
var cachedFiles = new Dictionary<string, SnCloudFile>();
var uncachedIds = new List<string>();
foreach (var fileId in fileIds)
{
var cacheKey = $"{CacheKeyPrefix}{fileId}";
var cachedFile = await cache.GetAsync<CloudFile>(cacheKey);
var cachedFile = await cache.GetAsync<SnCloudFile>(cacheKey);
if (cachedFile != null)
cachedFiles[fileId] = cachedFile;
@@ -82,11 +82,11 @@ public class FileService(
return fileIds
.Select(f => cachedFiles.GetValueOrDefault(f))
.Where(f => f != null)
.Cast<CloudFile>()
.Cast<SnCloudFile>()
.ToList();
}
public async Task<CloudFile> ProcessNewFileAsync(
public async Task<SnCloudFile> ProcessNewFileAsync(
Account account,
string fileId,
string filePool,
@@ -131,7 +131,7 @@ public class FileService(
var finalContentType = contentType ??
(!fileName.Contains('.') ? "application/octet-stream" : MimeTypes.GetMimeType(fileName));
var file = new CloudFile
var file = new SnCloudFile
{
Id = fileId,
Name = fileName,
@@ -190,7 +190,7 @@ public class FileService(
return file;
}
private async Task ExtractMetadataAsync(CloudFile file, string filePath)
private async Task ExtractMetadataAsync(SnCloudFile file, string filePath)
{
switch (file.MimeType?.Split('/')[0])
{
@@ -373,7 +373,7 @@ public class FileService(
);
}
public async Task<CloudFile> UpdateFileAsync(CloudFile file, FieldMask updateMask)
public async Task<SnCloudFile> UpdateFileAsync(SnCloudFile file, FieldMask updateMask)
{
var existingFile = await db.Files.FirstOrDefaultAsync(f => f.Id == file.Id);
if (existingFile == null)
@@ -414,7 +414,7 @@ public class FileService(
return await db.Files.AsNoTracking().FirstAsync(f => f.Id == file.Id);
}
public async Task DeleteFileAsync(CloudFile file)
public async Task DeleteFileAsync(SnCloudFile file)
{
db.Remove(file);
await db.SaveChangesAsync();
@@ -423,7 +423,7 @@ public class FileService(
await DeleteFileDataAsync(file);
}
public async Task DeleteFileDataAsync(CloudFile file, bool force = false)
public async Task DeleteFileDataAsync(SnCloudFile file, bool force = false)
{
if (!file.PoolId.HasValue) return;
@@ -482,7 +482,7 @@ public class FileService(
}
}
public async Task DeleteFileDataBatchAsync(List<CloudFile> files)
public async Task DeleteFileDataBatchAsync(List<SnCloudFile> files)
{
files = files.Where(f => f.PoolId.HasValue).ToList();
@@ -569,15 +569,15 @@ public class FileService(
await Task.WhenAll(tasks);
}
public async Task<List<CloudFile?>> LoadFromReference(List<SnCloudFileReferenceObject> references)
public async Task<List<SnCloudFile?>> LoadFromReference(List<SnCloudFileReferenceObject> references)
{
var cachedFiles = new Dictionary<string, CloudFile>();
var cachedFiles = new Dictionary<string, SnCloudFile>();
var uncachedIds = new List<string>();
foreach (var reference in references)
{
var cacheKey = $"{CacheKeyPrefix}{reference.Id}";
var cachedFile = await cache.GetAsync<CloudFile>(cacheKey);
var cachedFile = await cache.GetAsync<SnCloudFile>(cacheKey);
if (cachedFile != null)
{
@@ -603,10 +603,9 @@ public class FileService(
}
}
return references
return [.. references
.Select(r => cachedFiles.GetValueOrDefault(r.Id))
.Where(f => f != null)
.ToList();
.Where(f => f != null)];
}
public async Task<int> GetReferenceCountAsync(string fileId)
@@ -685,7 +684,7 @@ public class FileService(
return count;
}
public async Task<string> CreateFastUploadLinkAsync(CloudFile file)
public async Task<string> CreateFastUploadLinkAsync(SnCloudFile file)
{
if (file.PoolId is null) throw new InvalidOperationException("Pool ID is null");
@@ -707,7 +706,7 @@ public class FileService(
}
}
file class UpdatableCloudFile(CloudFile file)
file class UpdatableCloudFile(SnCloudFile file)
{
public string Name { get; set; } = file.Name;
public string? Description { get; set; } = file.Description;
@@ -715,9 +714,9 @@ file class UpdatableCloudFile(CloudFile file)
public Dictionary<string, object?>? UserMeta { get; set; } = file.UserMeta;
public bool IsMarkedRecycle { get; set; } = file.IsMarkedRecycle;
public Expression<Func<SetPropertyCalls<CloudFile>, SetPropertyCalls<CloudFile>>> ToSetPropertyCalls()
public Expression<Func<SetPropertyCalls<SnCloudFile>, SetPropertyCalls<SnCloudFile>>> ToSetPropertyCalls()
{
var userMeta = UserMeta ?? new Dictionary<string, object?>();
var userMeta = UserMeta ?? [];
return setter => setter
.SetProperty(f => f.Name, Name)
.SetProperty(f => f.Description, Description)