🐛 Trying to fix file migration again
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user