New version of sticker rendering support

This commit is contained in:
2025-10-08 21:28:48 +08:00
parent 3850ae6a8e
commit fc0bc936ce

View File

@@ -109,9 +109,25 @@ public class StickerService(
// If not in cache, fetch from the database // If not in cache, fetch from the database
IQueryable<SnSticker> query = db.Stickers IQueryable<SnSticker> query = db.Stickers
.Include(e => e.Pack); .Include(e => e.Pack);
query = Guid.TryParse(identifier, out var guid)
? query.Where(e => e.Id == guid) var isV2 = identifier.Contains("+");
: query.Where(e => EF.Functions.ILike(e.Pack.Prefix + e.Slug, identifier));
var identifierParts = identifier.Split('+');
if (identifierParts.Length < 2) isV2 = false;
if (isV2)
{
var packPart = identifierParts[0];
var stickerPart = identifierParts[1];
query = query.Where(e => EF.Functions.ILike(e.Pack.Prefix, packPart) && EF.Functions.ILike(e.Slug, stickerPart));
}
else
{
query = Guid.TryParse(identifier, out var guid)
? query.Where(e => e.Id == guid)
: query.Where(e => EF.Functions.ILike(e.Pack.Prefix + e.Slug, identifier));
}
var sticker = await query.FirstOrDefaultAsync(); var sticker = await query.FirstOrDefaultAsync();