添加项目文件。

This commit is contained in:
Zel
2025-01-22 23:31:03 +08:00
parent 1b8ba6771f
commit 2ae76476fb
894 changed files with 774558 additions and 0 deletions

View File

@@ -0,0 +1,160 @@
using TightWiki.Library;
using TightWiki.Models.DataModels;
namespace TightWiki.Repository
{
public static partial class EmojiRepository
{
public static List<Emoji> GetAllEmojis()
=> ManagedDataStorage.Emoji.Query<Emoji>("GetAllEmojis.sql").ToList();
public static IEnumerable<Emoji> GetEmojisByCategory(string category)
=> ManagedDataStorage.Emoji.Query<Emoji>("GetEmojisByCategory.sql", new { Category = category });
public static IEnumerable<EmojiCategory> GetEmojiCategoriesGrouped()
=> ManagedDataStorage.Emoji.Query<EmojiCategory>("GetEmojiCategoriesGrouped.sql");
public static IEnumerable<int> SearchEmojiCategoryIds(List<string> categories)
{
return ManagedDataStorage.Emoji.Ephemeral(o =>
{
var param = new
{
SearchTokenCount = categories.Count
};
using var tempTable = o.CreateTempTableFrom("TempCategories", categories);
return o.Query<int>("SearchEmojiCategoryIds.sql", param);
});
}
public static List<EmojiCategory> GetEmojiCategoriesByName(string name)
{
var param = new
{
Name = name
};
return ManagedDataStorage.Emoji.Query<EmojiCategory>("GetEmojiCategoriesByName.sql", param).ToList();
}
public static void DeleteById(int id)
{
var param = new
{
Id = id
};
ManagedDataStorage.Emoji.Execute("DeleteEmojiById.sql", param);
ConfigurationRepository.ReloadEmojis();
}
public static Emoji? GetEmojiByName(string name)
{
var param = new
{
Name = name
};
return ManagedDataStorage.Emoji.QuerySingleOrDefault<Emoji>("GetEmojiByName.sql", param);
}
public static int UpsertEmoji(UpsertEmoji emoji)
{
int emojiId = ManagedDataStorage.Emoji.Ephemeral(o =>
{
var transaction = o.BeginTransaction();
try
{
if (emoji.Id == null || emoji.Id == 0)
{
var param = new
{
Name = emoji.Name,
ImageData = emoji.ImageData == null ? null : Utility.Compress(emoji.ImageData),
MimeType = emoji.MimeType
};
emoji.Id = o.ExecuteScalar<int>("InsertEmoji.sql", param);
}
else
{
var param = new
{
EmojiId = emoji.Id,
Name = emoji.Name,
ImageData = emoji.ImageData == null ? null : Utility.Compress(emoji.ImageData),
MimeType = emoji.MimeType
};
o.ExecuteScalar<int>("UpdateEmoji.sql", param);
}
var upsertEmojiCategoriesParam = new
{
EmojiId = emoji.Id
};
using var tempTable = o.CreateTempTableFrom("TempEmojiCategories", emoji.Categories, transaction);
o.Execute("UpsertEmojiCategories.sql", upsertEmojiCategoriesParam);
transaction.Commit();
return (int)emoji.Id;
}
catch
{
transaction.Rollback();
throw;
}
});
ConfigurationRepository.ReloadEmojis();
return emojiId;
}
public static List<Emoji> GetAllEmojisPaged(int pageNumber,
string? orderBy = null, string? orderByDirection = null, List<string>? categories = null)
{
int pageSize = ConfigurationRepository.Get<int>("Customization", "Pagination Size");
if (categories == null || categories.Count == 0)
{
var param = new
{
PageNumber = pageNumber,
PageSize = pageSize
};
var query = RepositoryHelper.TransposeOrderby("GetAllEmojisPaged.sql", orderBy, orderByDirection);
return ManagedDataStorage.Emoji.Query<Emoji>(query, param).ToList();
}
else
{
var emojiCategoryIds = SearchEmojiCategoryIds(categories);
var param = new
{
PageNumber = pageNumber,
PageSize = pageSize
};
return ManagedDataStorage.Emoji.Ephemeral(o =>
{
var getAllEmojisPagedByCategoriesParam = new
{
SearchTokenCount = emojiCategoryIds.Count(),
PageNumber = pageNumber,
PageSize = pageSize
};
using var tempTable = o.CreateTempTableFrom("TempEmojiCategoryIds", emojiCategoryIds);
var query = RepositoryHelper.TransposeOrderby("GetAllEmojisPagedByCategories.sql", orderBy, orderByDirection);
return o.Query<Emoji>(query, getAllEmojisPagedByCategoriesParam).ToList();
});
}
}
}
}