IRepositorySqlSugar.cs 4.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Linq.Expressions;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using SqlSugar;
  8. using XF.Domain.Entities;
  9. namespace XF.Domain.Repository
  10. {
  11. public interface IRepositorySqlSugar<TEntity, TKey> : IRepositoryWithTKey<TEntity, string>
  12. where TEntity : class, IEntity<string>, new()
  13. {
  14. Task<(int Total, List<TEntity> Items)> QueryPagedAsync(
  15. Expression<Func<TEntity, bool>> predicate,
  16. Func<ISugarQueryable<TEntity>, ISugarQueryable<TEntity>> orderByCreator,
  17. int pageIndex,
  18. int pageSize,
  19. bool permissionVerify = false,
  20. params (bool isWhere, Expression<Func<TEntity, bool>> expression)[] whereIfs);
  21. Task<(int Total, List<TEntity> Items)> QueryPagedAsync(Expression<Func<TEntity, bool>> predicate,
  22. int pageIndex,
  23. int pageSize,
  24. Func<ISugarQueryable<TEntity>, ISugarQueryable<TEntity>>? includes = null,
  25. Func<ISugarQueryable<TEntity>, ISugarQueryable<TEntity>>? orderByCreator = null,
  26. bool permissionVerify = false,
  27. params (bool isWhere, Expression<Func<TEntity, bool>> expression)[] whereIfs);
  28. Task<List<TEntity>> QueryExtAsync(
  29. Expression<Func<TEntity, bool>> predicate,
  30. Func<ISugarQueryable<TEntity>, ISugarQueryable<TEntity>>? includes = null,
  31. Func<ISugarQueryable<TEntity>, ISugarQueryable<TEntity>>? orderByCreator = null,
  32. bool permissionVerify = false,
  33. params (bool isWhere, Expression<Func<TEntity, bool>> expression)[] whereIfs);
  34. Task<List<TEntity>> QueryExtAsync(
  35. Expression<Func<TEntity, bool>> predicate,
  36. Func<ISugarQueryable<TEntity>, ISugarQueryable<TEntity>> includes,
  37. bool permissionVerify = false);
  38. Task<TEntity> GetExtAsync(
  39. Expression<Func<TEntity, bool>> predicate,
  40. Func<ISugarQueryable<TEntity>, ISugarQueryable<TEntity>> includes,
  41. bool permissionVerify = false);
  42. Task<TEntity> GetExtAsync(
  43. TKey id,
  44. Func<ISugarQueryable<TEntity>, ISugarQueryable<TEntity>> includes,
  45. bool permissionVerify = false);
  46. TEntity Get(TKey id);
  47. TEntity Get(Expression<Func<TEntity, bool>> predicate);
  48. Task UpdateAsync(TEntity entity, bool ignoreNullColumns = true, CancellationToken cancellationToken = default);
  49. ISugarQueryable<TEntity> Queryable(bool permissionVerify = false, bool includeDeleted = false);
  50. IUpdateable<TEntity> Updateable();
  51. IUpdateable<TEntity> Updateable(TEntity entity);
  52. IUpdateable<TEntity> Updateable(List<TEntity> entities);
  53. IDeleteable<TEntity> Removeable();
  54. UpdateNavTaskInit<TEntity, TEntity> UpdateNav(TEntity entity);
  55. UpdateNavTaskInit<TEntity, TEntity> UpdateNav(TEntity entity, UpdateNavRootOptions options);
  56. UpdateNavTaskInit<TEntity, TEntity> UpdateNav(List<TEntity> entities);
  57. UpdateNavTaskInit<TEntity, TEntity> UpdateNav(List<TEntity> entities, UpdateNavRootOptions options);
  58. /// <summary>
  59. /// 未实现统一为子表赋值creatorId, creatorOrg等字段,插入前需手动赋值
  60. /// </summary>
  61. InsertNavTaskInit<TEntity, TEntity> AddNav(TEntity entity);
  62. InsertNavTaskInit<TEntity, TEntity> AddNav(TEntity entity, InsertNavRootOptions options);
  63. /// <summary>
  64. /// 未实现统一为子表赋值creatorId, creatorOrg等字段,插入前需手动赋值
  65. /// </summary>
  66. InsertNavTaskInit<TEntity, TEntity> AddNav(List<TEntity> entities);
  67. InsertNavTaskInit<TEntity, TEntity> AddNav(List<TEntity> entities, InsertNavRootOptions options);
  68. DeleteNavTaskInit<TEntity, TEntity> RemoveNav(TEntity entity);
  69. DeleteNavTaskInit<TEntity, TEntity> RemoveNav(List<TEntity> entities);
  70. DeleteNavTaskInit<TEntity, TEntity> RemoveNav(Expression<Func<TEntity, bool>> predicate);
  71. ISugarQueryable<TEntity> UnionAll(params ISugarQueryable<TEntity>[] queryables);
  72. }
  73. public interface IRepositorySqlSugar<TEntity> : IRepositorySqlSugar<TEntity, string>
  74. where TEntity : class, IEntity<string>, new()
  75. {
  76. }
  77. }