🐛 Trying to fix file migration again

This commit is contained in:
2026-01-13 00:50:37 +08:00
parent dadf3c67bf
commit 2d1e43b02e

View File

@@ -20,16 +20,14 @@ public class FileMigrationService(AppDatabase db, ILogger<FileMigrationService>
foreach (var cf in cloudFiles)
{
if (await db.FileObjects.AnyAsync(fo => fo.Id == cf.Id))
{
logger.LogWarning("FileObject for {Id} already exists, skipping.", cf.Id);
continue;
}
var ext = Path.GetExtension(cf.Name);
var mimeType = ext != "" && MimeTypes.TryGetMimeType(ext, out var mime) ? mime : "application/octet-stream";
var fileObject = new SnFileObject
var fileObject = await db.FileObjects.FindAsync(cf.Id);
if (fileObject == null)
{
fileObject = new SnFileObject
{
Id = cf.Id,
MimeType = mimeType,
@@ -37,6 +35,15 @@ public class FileMigrationService(AppDatabase db, ILogger<FileMigrationService>
HasThumbnail = mimeType.StartsWith("video/")
};
db.FileObjects.Add(fileObject);
}
var replicaExists = await db.FileReplicas.AnyAsync(r =>
r.ObjectId == fileObject.Id &&
r.PoolId == cf.PoolId!.Value);
if (!replicaExists)
{
var fileReplica = new SnFileReplica
{
Id = Guid.NewGuid(),
@@ -47,6 +54,14 @@ public class FileMigrationService(AppDatabase db, ILogger<FileMigrationService>
IsPrimary = true
};
fileObject.FileReplicas.Add(fileReplica);
db.FileReplicas.Add(fileReplica);
}
var permissionExists = await db.FilePermissions.AnyAsync(p => p.FileId == cf.Id);
if (!permissionExists)
{
var permission = new SnFilePermission
{
Id = Guid.NewGuid(),
@@ -56,11 +71,8 @@ public class FileMigrationService(AppDatabase db, ILogger<FileMigrationService>
Permission = SnFilePermissionLevel.Read
};
fileObject.FileReplicas.Add(fileReplica);
db.FileObjects.Add(fileObject);
db.FileReplicas.Add(fileReplica);
db.FilePermissions.Add(permission);
}
cf.ObjectId = fileObject.Id;
cf.Object = fileObject;