summary refs log tree commit diff
diff options
context:
space:
mode:
authorRory& <root@rory.gay>2026-02-20 03:20:06 +0100
committerRory& <root@rory.gay>2026-02-20 03:20:33 +0100
commit773b335971e564445073d47dadbd429ad562ec4a (patch)
tree8cde3df72860fb890e8863bc31b7b49e4abb0dbb
parentUAPI work (diff)
downloadserver-ts-773b335971e564445073d47dadbd429ad562ec4a.tar.xz
cdn fsck fix test
-rw-r--r--extra/admin-api/Utilities/Spacebar.Cdn.Fsck/FsckService.cs26
1 files changed, 19 insertions, 7 deletions
diff --git a/extra/admin-api/Utilities/Spacebar.Cdn.Fsck/FsckService.cs b/extra/admin-api/Utilities/Spacebar.Cdn.Fsck/FsckService.cs

index c0b0bbc3..6247df3b 100644 --- a/extra/admin-api/Utilities/Spacebar.Cdn.Fsck/FsckService.cs +++ b/extra/admin-api/Utilities/Spacebar.Cdn.Fsck/FsckService.cs
@@ -29,6 +29,7 @@ public class FsckService(ILogger<FsckService> logger, IServiceScopeFactory servi public struct FsckItem { public string Path; public string ItemId; + public bool IsSingleSubDirFile; } private async Task RunFsckAsync(string name, string path, IQueryable<FsckItem> items) { @@ -44,8 +45,17 @@ public class FsckService(ILogger<FsckService> logger, IServiceScopeFactory servi } i++; - if (!await fs.FileExists(item.Path)) - logger.LogWarning("{itemType} {itemId} is missing at {path}", name, item.ItemId, item.Path); + if (!item.IsSingleSubDirFile) { + if (!await fs.FileExists(item.Path)) + logger.LogWarning("{itemType} {itemId} is missing at {path}", name, item.ItemId, item.Path); + } + else if (item.IsSingleSubDirFile && fs is FilesystemFileSource ffs) { + if(!await ffs.DirectoryExists(Path.GetDirectoryName(item.Path))) + logger.LogWarning("{itemType} {itemId} is missing at {path} (directory missing)", name, item.ItemId, item.Path); + } + else { + logger.LogWarning("Unhandled case: {itemType} {itemId} -> {path} (IsSingleSubDirFile: {isSingleSubDirFile}, fstype: {fsType})", name, item.ItemId, item.Path, item.IsSingleSubDirFile, fs.GetType().Name); + } _fsckSemaphore.Release(); })); @@ -87,7 +97,7 @@ public class FsckService(ILogger<FsckService> logger, IServiceScopeFactory servi Path = $"/icons/{x.Id}/{x.Icon}", ItemId = x.Id }); - + public IQueryable<FsckItem> EnumerateRoleIconPathsAsync() => _db.Roles .Where(x => !string.IsNullOrWhiteSpace(x.Icon)) @@ -101,16 +111,18 @@ public class FsckService(ILogger<FsckService> logger, IServiceScopeFactory servi _db.Stickers .OrderBy(x => x.Id) .Select(x => new FsckItem { - Path = $"/stickers/{x.Id}.png", - ItemId = x.Id + Path = $"/stickers/{x.Id}", + ItemId = x.Id, + IsSingleSubDirFile = fs is FilesystemFileSource }); public IQueryable<FsckItem> EnumerateEmojiPathsAsync() => _db.Emojis .OrderBy(x => x.Id) .Select(x => new FsckItem { - Path = $"/emojis/{x.Id}", - ItemId = x.Id + Path = $"/emojis/{x.Id}/", + ItemId = x.Id, + IsSingleSubDirFile = fs is FilesystemFileSource }); #endregion