StickerDao.cs 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Linq.Expressions;
  5. using System.Threading.Tasks;
  6. using CardCollector.DataBase.Entity;
  7. using Microsoft.EntityFrameworkCore;
  8. namespace CardCollector.DataBase.EntityDao
  9. {
  10. /* Класс, предоставляющий доступ к объектам таблицы Stickers*/
  11. public static class StickerDao
  12. {
  13. /* Получение информации о стикере по его хешу, возвращает Null, если стикера не существует */
  14. public static async Task<StickerEntity> GetByHash(string hash)
  15. {
  16. var Table = BotDatabase.Instance.Stickers;
  17. return await Table.FirstOrDefaultAsync(item => item.Md5Hash == hash);
  18. }
  19. public static async Task<List<string>> GetAuthorsList()
  20. {
  21. var Table = BotDatabase.Instance.Stickers;
  22. var list = await Table.Select(item => item.Author).Distinct().ToListAsync();
  23. list.Sort();
  24. return list;
  25. }
  26. public static async Task<List<StickerEntity>> GetAll(string filter = "")
  27. {
  28. var Table = BotDatabase.Instance.Stickers;
  29. return await Table.Where(item => item.Contains(filter)).ToListAsync();
  30. }
  31. public static async Task AddNew(StickerEntity sticker)
  32. {
  33. var Table = BotDatabase.Instance.Stickers;
  34. await Table.AddAsync(sticker);
  35. await BotDatabase.SaveData();
  36. }
  37. public static async Task AddRange(IEnumerable<StickerEntity> stickers, int packId)
  38. {
  39. var Table = BotDatabase.Instance.Stickers;
  40. await Table.AddRangeAsync(stickers.Select(item => {
  41. item.PackId = packId;
  42. return item;
  43. }));
  44. await BotDatabase.SaveData();
  45. }
  46. public static async Task<List<StickerEntity>> GetListWhere(Expression<Func<StickerEntity, bool>> func)
  47. {
  48. var Table = BotDatabase.Instance.Stickers;
  49. return await Table.Where(func).ToListAsync();
  50. }
  51. public static async Task<StickerEntity> GetById(string id)
  52. {
  53. var Table = BotDatabase.Instance.Stickers;
  54. return await Table.FirstOrDefaultAsync(sticker => sticker.Id == id);
  55. }
  56. }
  57. }