🐛 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)
|
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 ext = Path.GetExtension(cf.Name);
|
||||||
var mimeType = ext != "" && MimeTypes.TryGetMimeType(ext, out var mime) ? mime : "application/octet-stream";
|
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,
|
Id = cf.Id,
|
||||||
MimeType = mimeType,
|
MimeType = mimeType,
|
||||||
@@ -37,6 +35,15 @@ public class FileMigrationService(AppDatabase db, ILogger<FileMigrationService>
|
|||||||
HasThumbnail = mimeType.StartsWith("video/")
|
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
|
var fileReplica = new SnFileReplica
|
||||||
{
|
{
|
||||||
Id = Guid.NewGuid(),
|
Id = Guid.NewGuid(),
|
||||||
@@ -47,6 +54,14 @@ public class FileMigrationService(AppDatabase db, ILogger<FileMigrationService>
|
|||||||
IsPrimary = true
|
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
|
var permission = new SnFilePermission
|
||||||
{
|
{
|
||||||
Id = Guid.NewGuid(),
|
Id = Guid.NewGuid(),
|
||||||
@@ -56,11 +71,8 @@ public class FileMigrationService(AppDatabase db, ILogger<FileMigrationService>
|
|||||||
Permission = SnFilePermissionLevel.Read
|
Permission = SnFilePermissionLevel.Read
|
||||||
};
|
};
|
||||||
|
|
||||||
fileObject.FileReplicas.Add(fileReplica);
|
|
||||||
|
|
||||||
db.FileObjects.Add(fileObject);
|
|
||||||
db.FileReplicas.Add(fileReplica);
|
|
||||||
db.FilePermissions.Add(permission);
|
db.FilePermissions.Add(permission);
|
||||||
|
}
|
||||||
|
|
||||||
cf.ObjectId = fileObject.Id;
|
cf.ObjectId = fileObject.Id;
|
||||||
cf.Object = fileObject;
|
cf.Object = fileObject;
|
||||||
|
|||||||
Reference in New Issue
Block a user