AttachRepository.cs 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. using System.Collections.Generic;
  2. using System.Threading.Tasks;
  3. using AutoMapper;
  4. using Datory;
  5. using GxPress.Common.AppOptions;
  6. using GxPress.Common.Page;
  7. using GxPress.Common.Tools;
  8. using GxPress.Repository.Interface.Attach;
  9. using GxPress.Request.Attach;
  10. using Microsoft.Extensions.Options;
  11. namespace GxPress.Repository.Implement.Attach
  12. {
  13. public class AttachRepository : IAttachRepository
  14. {
  15. private readonly Repository<Entity.tede2.Attach.Attach> _repository;
  16. private readonly IMapper _mapper;
  17. private readonly string _connectionString;
  18. private readonly string _databaseTypestr;
  19. public AttachRepository(IOptionsMonitor<DatabaseOptions> dbOptionsAccessor, IMapper mapper)
  20. {
  21. _databaseTypestr = dbOptionsAccessor.CurrentValue.DatabaseType;
  22. _connectionString = dbOptionsAccessor.CurrentValue.ConnectionString;
  23. var databaseType =
  24. StringUtils.ToEnum<DatabaseType>(dbOptionsAccessor.CurrentValue.DatabaseType, DatabaseType.MySql);
  25. var database = new Database(databaseType, dbOptionsAccessor.CurrentValue.ConnectionString);
  26. _repository = new Repository<Entity.tede2.Attach.Attach>(database);
  27. _mapper = mapper;
  28. }
  29. public IDatabase Database => _repository.Database;
  30. public string TableName => _repository.TableName;
  31. public List<TableColumn> TableColumns => _repository.TableColumns;
  32. public async Task<bool> DeleteAsync(int id)
  33. {
  34. return await _repository.DeleteAsync(id);
  35. }
  36. public async Task<PagedList<Entity.tede2.Attach.Attach>> GetAllAsync(AttachRequest request)
  37. {
  38. var result = new PagedList<Entity.tede2.Attach.Attach>();
  39. var query = Q.NewQuery();
  40. query.Where(nameof(Entity.tede2.Attach.Attach.AttachType), request.TypeId);
  41. if (!string.IsNullOrEmpty(request.KeyWord))
  42. query.WhereLike(nameof(Entity.tede2.Attach.Attach.Name), $"%{request.KeyWord}%");
  43. if (request.CategoryId > 0)
  44. query.Where(nameof(Entity.tede2.Attach.Attach.CategoryId), request.CategoryId);
  45. if (request.AdminId > 0)
  46. query.Where(nameof(Entity.tede2.Attach.Attach.CategoryId), request.AdminId);
  47. if (request.WithdrawType > 0)
  48. query.Where(nameof(Entity.tede2.Attach.Attach.IsWithdraw), request.WithdrawType == 2);
  49. result.Items = await _repository.GetAllAsync(query.ForPage(request.Page, request.PerPage));
  50. result.Total = await _repository.CountAsync(query);
  51. return result;
  52. }
  53. public async Task<Entity.tede2.Attach.Attach> GetAsync(int id)
  54. {
  55. return await _repository.GetAsync(id);
  56. }
  57. public async Task<int> InsertAsync(Entity.tede2.Attach.Attach note)
  58. {
  59. return await _repository.InsertAsync(note);
  60. }
  61. public async Task<bool> UpdateAsync(Entity.tede2.Attach.Attach note)
  62. {
  63. return await _repository.UpdateAsync(note);
  64. }
  65. }
  66. }