🗑️ Remove the unused reference system

This commit is contained in:
2026-01-10 22:55:05 +08:00
parent 1aff1d7731
commit f3779cc788
12 changed files with 7 additions and 602 deletions

View File

@@ -15,8 +15,7 @@ public class StickerController(
AppDatabase db,
StickerService st,
Publisher.PublisherService ps,
FileService.FileServiceClient files,
FileReferenceService.FileReferenceServiceClient fileRefs
FileService.FileServiceClient files
) : ControllerBase
{
private async Task<IActionResult> _CheckStickerPackPermissions(
@@ -161,16 +160,6 @@ public class StickerController(
db.StickerPacks.Add(pack);
await db.SaveChangesAsync();
if (pack.Icon is not null)
{
await fileRefs.CreateReferenceAsync(new CreateReferenceRequest
{
FileId = pack.Icon.Id,
Usage = StickerService.StickerPackUsageIdentifier,
ResourceId = pack.ResourceIdentifier
});
}
return Ok(pack);
}
@@ -207,24 +196,7 @@ public class StickerController(
if (file is null)
return BadRequest("Icon not found.");
if (file.Id != pack.Icon?.Id)
{
await fileRefs.DeleteResourceReferencesAsync(new DeleteResourceReferencesRequest
{ ResourceId = pack.ResourceIdentifier, Usage = StickerService.StickerPackUsageIdentifier });
pack.Icon = SnCloudFileReferenceObject.FromProtoValue(file);
await fileRefs.CreateReferenceAsync(new CreateReferenceRequest
{
FileId = pack.Icon.Id,
Usage = StickerService.StickerPackUsageIdentifier,
ResourceId = pack.ResourceIdentifier
});
}
else
{
// Still update the column in case user want to sync the changes of the file meta
pack.Icon = SnCloudFileReferenceObject.FromProtoValue(file);
}
pack.Icon = SnCloudFileReferenceObject.FromProtoValue(file);
}
db.StickerPacks.Update(pack);

View File

@@ -7,13 +7,9 @@ namespace DysonNetwork.Sphere.Sticker;
public class StickerService(
AppDatabase db,
FileReferenceService.FileReferenceServiceClient fileRefs,
ICacheService cache
)
{
public const string StickerFileUsageIdentifier = "sticker";
public const string StickerPackUsageIdentifier = "sticker.pack";
private static readonly TimeSpan CacheDuration = TimeSpan.FromMinutes(15);
public async Task<SnSticker> CreateStickerAsync(SnSticker sticker)
@@ -23,34 +19,14 @@ public class StickerService(
db.Stickers.Add(sticker);
await db.SaveChangesAsync();
await fileRefs.CreateReferenceAsync(new CreateReferenceRequest
{
FileId = sticker.Image.Id,
Usage = StickerFileUsageIdentifier,
ResourceId = sticker.ResourceIdentifier
});
return sticker;
}
public async Task<SnSticker> UpdateStickerAsync(SnSticker sticker, SnCloudFileReferenceObject? newImage)
{
if (newImage is not null)
{
await fileRefs.DeleteResourceReferencesAsync(new DeleteResourceReferencesRequest
{ ResourceId = sticker.ResourceIdentifier });
sticker.Image = newImage;
// Create new reference
await fileRefs.CreateReferenceAsync(new CreateReferenceRequest
{
FileId = newImage.Id,
Usage = StickerFileUsageIdentifier,
ResourceId = sticker.ResourceIdentifier
});
}
db.Stickers.Update(sticker);
await db.SaveChangesAsync();
@@ -62,12 +38,6 @@ public class StickerService(
public async Task DeleteStickerAsync(SnSticker sticker)
{
var stickerResourceId = $"sticker:{sticker.Id}";
// Delete all file references for this sticker
await fileRefs.DeleteResourceReferencesAsync(new DeleteResourceReferencesRequest
{ ResourceId = stickerResourceId });
db.Stickers.Remove(sticker);
await db.SaveChangesAsync();
@@ -81,17 +51,6 @@ public class StickerService(
.Where(s => s.PackId == pack.Id)
.ToListAsync();
var images = stickers.Select(s => s.Image).ToList();
// Delete all file references for each sticker in the pack
foreach (var stickerResourceId in stickers.Select(sticker => $"sticker:{sticker.Id}"))
await fileRefs.DeleteResourceReferencesAsync(new DeleteResourceReferencesRequest
{ ResourceId = stickerResourceId });
// Delete any references for the pack itself
await fileRefs.DeleteResourceReferencesAsync(new DeleteResourceReferencesRequest
{ ResourceId = pack.ResourceIdentifier });
db.Stickers.RemoveRange(stickers);
db.StickerPacks.Remove(pack);
await db.SaveChangesAsync();