FlowMessageRepository.cs 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. using System.Collections.Generic;
  2. using System.Threading.Tasks;
  3. using GxPress.Common.AppOptions;
  4. using GxPress.Common.Tools;
  5. using GxPress.Entity.WorkFlow;
  6. using GxPress.EnumConst;
  7. using GxPress.Repository.Interface.WorkFlow;
  8. using GxPress.Request.App.Flow;
  9. using Microsoft.Extensions.Options;
  10. using Datory;
  11. namespace GxPress.Repository.Implement.WorkFlow
  12. {
  13. public class FlowMessageRepository : IFlowMessageRepository
  14. {
  15. private readonly Repository<FlowMessage> _repository;
  16. public FlowMessageRepository(IOptionsMonitor<DatabaseOptions> dbOptionsAccessor)
  17. {
  18. var databaseType = StringUtils.ToEnum<DatabaseType>(dbOptionsAccessor.CurrentValue.DatabaseType, DatabaseType.MySql);
  19. var database = new Database(databaseType, dbOptionsAccessor.CurrentValue.ConnectionString);
  20. _repository = new Repository<FlowMessage>(database);
  21. }
  22. public IDatabase Database => _repository.Database;
  23. public string TableName => _repository.TableName;
  24. public List<TableColumn> TableColumns => _repository.TableColumns;
  25. public async Task<int> InsertAsync(FlowMessage item)
  26. {
  27. return await _repository.InsertAsync(item);
  28. }
  29. public async Task<IEnumerable<FlowMessage>> GetListByFlowIdAsync(int flowId, string type)
  30. {
  31. return await _repository.GetAllAsync(Q
  32. .Where(nameof(FlowMessage.FlowId), flowId)
  33. .Where(nameof(FlowMessage.Type), type)
  34. .OrderByDesc(nameof(FlowMessage.Id))
  35. );
  36. }
  37. public async Task<bool> DeleteAllAsync(int flowId)
  38. {
  39. return await _repository.DeleteAsync(Q
  40. .Where(nameof(FlowMessage.FlowId), flowId)
  41. ) > 0;
  42. }
  43. }
  44. }