♻️ Finish centerlizing the data models

This commit is contained in:
2025-09-27 15:14:05 +08:00
parent e70d8371f8
commit 9ce31c4dd8
167 changed files with 780 additions and 42880 deletions

View File

@@ -208,7 +208,7 @@ public class StickerController(
}
[HttpGet("{packId:guid}/content")]
public async Task<ActionResult<List<Sticker>>> ListStickers(Guid packId)
public async Task<ActionResult<List<SnSticker>>> ListStickers(Guid packId)
{
var stickers = await db.Stickers
.Where(s => s.Pack.Id == packId)
@@ -220,7 +220,7 @@ public class StickerController(
}
[HttpGet("lookup/{identifier}")]
public async Task<ActionResult<Sticker>> GetStickerByIdentifier(string identifier)
public async Task<ActionResult<SnSticker>> GetStickerByIdentifier(string identifier)
{
var sticker = await st.LookupStickerByIdentifierAsync(identifier);
@@ -229,7 +229,7 @@ public class StickerController(
}
[HttpGet("lookup/{identifier}/open")]
public async Task<ActionResult<Sticker>> OpenStickerByIdentifier(string identifier)
public async Task<ActionResult<SnSticker>> OpenStickerByIdentifier(string identifier)
{
var sticker = await st.LookupStickerByIdentifierAsync(identifier);
@@ -238,7 +238,7 @@ public class StickerController(
}
[HttpGet("{packId:guid}/content/{id:guid}")]
public async Task<ActionResult<Sticker>> GetSticker(Guid packId, Guid id)
public async Task<ActionResult<SnSticker>> GetSticker(Guid packId, Guid id)
{
var sticker = await db.Stickers
.Where(s => s.PackId == packId && s.Id == id)
@@ -347,7 +347,7 @@ public class StickerController(
if (file is null)
return BadRequest("Image not found.");
var sticker = new Sticker
var sticker = new SnSticker
{
Slug = request.Slug,
ImageId = file.Id,

View File

@@ -7,7 +7,6 @@ namespace DysonNetwork.Sphere.Sticker;
public class StickerService(
AppDatabase db,
FileService.FileServiceClient files,
FileReferenceService.FileReferenceServiceClient fileRefs,
ICacheService cache
)
@@ -16,7 +15,7 @@ public class StickerService(
private static readonly TimeSpan CacheDuration = TimeSpan.FromMinutes(15);
public async Task<Sticker> CreateStickerAsync(Sticker sticker)
public async Task<SnSticker> CreateStickerAsync(SnSticker sticker)
{
if (sticker.Image is null) throw new ArgumentNullException(nameof(sticker.Image));
@@ -33,7 +32,7 @@ public class StickerService(
return sticker;
}
public async Task<Sticker> UpdateStickerAsync(Sticker sticker, SnCloudFileReferenceObject? newImage)
public async Task<SnSticker> UpdateStickerAsync(SnSticker sticker, SnCloudFileReferenceObject? newImage)
{
if (newImage is not null)
{
@@ -59,7 +58,7 @@ public class StickerService(
return sticker;
}
public async Task DeleteStickerAsync(Sticker sticker)
public async Task DeleteStickerAsync(SnSticker sticker)
{
var stickerResourceId = $"sticker:{sticker.Id}";
@@ -98,17 +97,17 @@ public class StickerService(
await PurgeStickerCache(sticker);
}
public async Task<Sticker?> LookupStickerByIdentifierAsync(string identifier)
public async Task<SnSticker?> LookupStickerByIdentifierAsync(string identifier)
{
identifier = identifier.ToLower();
// Try to get from the cache first
var cacheKey = $"sticker:lookup:{identifier}";
var cachedSticker = await cache.GetAsync<Sticker>(cacheKey);
var cachedSticker = await cache.GetAsync<SnSticker>(cacheKey);
if (cachedSticker is not null)
return cachedSticker;
// If not in cache, fetch from the database
IQueryable<Sticker> query = db.Stickers
IQueryable<SnSticker> query = db.Stickers
.Include(e => e.Pack);
query = Guid.TryParse(identifier, out var guid)
? query.Where(e => e.Id == guid)
@@ -123,7 +122,7 @@ public class StickerService(
return sticker;
}
private async Task PurgeStickerCache(Sticker sticker)
private async Task PurgeStickerCache(SnSticker sticker)
{
// Remove both possible cache entries
await cache.RemoveAsync($"sticker:lookup:{sticker.Id}");