diff --git a/src/X1.Domain/Repositories/Base/IBaseRepository.cs b/src/X1.Domain/Repositories/Base/IBaseRepository.cs index bbc11e1..6373c0b 100644 --- a/src/X1.Domain/Repositories/Base/IBaseRepository.cs +++ b/src/X1.Domain/Repositories/Base/IBaseRepository.cs @@ -110,29 +110,32 @@ namespace CellularManagement.Domain.Repositories.Base /// 根据ID查询单个实体 /// /// 要查询的实体ID + /// 查询条件表达式 /// 取消令牌,用于取消异步操作 /// 查询到的实体,如果不存在则返回 null /// /// 这是一个异步操作,因为需要等待数据库的查询操作完成 /// 使用主键进行查询,性能最优 /// - Task GetByIdAsync(string id, CancellationToken cancellationToken = default); + Task GetByIdAsync(string id, Func, IQueryable>? include = null, CancellationToken cancellationToken = default); /// /// 查询所有实体 /// + /// 查询条件表达式 /// 取消令牌,用于取消异步操作 /// 所有实体的集合 /// /// 这是一个异步操作,因为需要等待数据库的查询操作完成 /// 注意:对于大数据量的表,建议使用分页查询 /// - Task> GetAllAsync(CancellationToken cancellationToken = default); + Task> GetAllAsync(Func, IQueryable>? include = null, CancellationToken cancellationToken = default); /// /// 根据条件查询实体 /// /// 查询条件表达式 + /// 查询条件表达式 /// 取消令牌,用于取消异步操作 /// 符合条件的实体集合 /// @@ -140,13 +143,14 @@ namespace CellularManagement.Domain.Repositories.Base /// 使用 LINQ 表达式树构建查询条件 /// 条件查询会被转换为 SQL 语句在数据库端执行 /// - Task> FindAsync(Expression> predicate, CancellationToken cancellationToken = default); + Task> FindAsync(Expression> predicate, Func, IQueryable>? include = null, CancellationToken cancellationToken = default); /// /// 分页查询实体 /// /// 页码,从1开始 /// 每页记录数 + /// 查询条件表达式 /// 取消令牌,用于取消异步操作 /// 分页查询结果,包含总记录数和当前页数据 /// @@ -154,7 +158,7 @@ namespace CellularManagement.Domain.Repositories.Base /// 分页查询可以有效减少数据传输量,提高性能 /// 建议在查询大数据量时使用 /// - Task<(int TotalCount, IEnumerable Items)> GetPagedAsync(int pageNumber, int pageSize, CancellationToken cancellationToken = default); + Task<(int TotalCount, IEnumerable Items)> GetPagedAsync(int pageNumber, int pageSize, Func, IQueryable>? include = null, CancellationToken cancellationToken = default); /// /// 根据条件分页查询实体 @@ -162,6 +166,7 @@ namespace CellularManagement.Domain.Repositories.Base /// 查询条件表达式 /// 页码,从1开始 /// 每页记录数 + /// 查询条件表达式 /// 取消令牌,用于取消异步操作 /// 分页查询结果,包含总记录数和当前页数据 /// @@ -172,12 +177,14 @@ namespace CellularManagement.Domain.Repositories.Base Expression> predicate, int pageNumber, int pageSize, + Func, IQueryable>? include = null, CancellationToken cancellationToken = default); /// /// 查询单个实体 /// /// 查询条件表达式 + /// 查询条件表达式 /// 取消令牌,用于取消异步操作 /// 查询到的实体,如果不存在则返回 null /// @@ -185,31 +192,33 @@ namespace CellularManagement.Domain.Repositories.Base /// 如果查询结果包含多个实体,将返回第一个 /// 建议在确定只会返回一个结果时使用 /// - Task FirstOrDefaultAsync(Expression> predicate, CancellationToken cancellationToken = default); + Task FirstOrDefaultAsync(Expression> predicate, Func, IQueryable>? include = null, CancellationToken cancellationToken = default); /// /// 查询实体是否存在 /// /// 查询条件表达式 + /// 查询条件表达式 /// 取消令牌,用于取消异步操作 /// 是否存在符合条件的实体 /// /// 这是一个异步操作,因为需要等待数据库的查询操作完成 /// 使用 EXISTS 语句在数据库端执行,性能优于获取完整实体 /// - Task AnyAsync(Expression> predicate, CancellationToken cancellationToken = default); + Task AnyAsync(Expression> predicate, Func, IQueryable>? include = null, CancellationToken cancellationToken = default); /// /// 统计符合条件的实体数量 /// /// 查询条件表达式 + /// 查询条件表达式 /// 取消令牌,用于取消异步操作 /// 符合条件的实体数量 /// /// 这是一个异步操作,因为需要等待数据库的查询操作完成 /// 使用 COUNT 语句在数据库端执行,性能优于获取完整实体 /// - Task CountAsync(Expression> predicate, CancellationToken cancellationToken = default); + Task CountAsync(Expression> predicate, Func, IQueryable>? include = null, CancellationToken cancellationToken = default); /// /// 执行SQL复制查询 diff --git a/src/X1.Domain/Repositories/Base/IQueryRepository.cs b/src/X1.Domain/Repositories/Base/IQueryRepository.cs index ec4f3d8..1e4034f 100644 --- a/src/X1.Domain/Repositories/Base/IQueryRepository.cs +++ b/src/X1.Domain/Repositories/Base/IQueryRepository.cs @@ -21,29 +21,32 @@ public interface IQueryRepository where T : class /// 根据ID查询单个实体 /// /// 要查询的实体ID + /// 查询条件表达式 /// 取消令牌,用于取消异步操作 /// 查询到的实体,如果不存在则返回 null /// /// 这是一个异步操作,因为需要等待数据库的查询操作完成 /// 使用主键进行查询,性能最优 /// - Task GetByIdAsync(string id, CancellationToken cancellationToken = default); + Task GetByIdAsync(string id, Func, IQueryable>? include = null, CancellationToken cancellationToken = default); /// /// 查询所有实体 /// + /// 查询条件表达式 /// 取消令牌,用于取消异步操作 /// 所有实体的集合 /// /// 这是一个异步操作,因为需要等待数据库的查询操作完成 /// 注意:对于大数据量的表,建议使用分页查询 /// - Task> GetAllAsync(CancellationToken cancellationToken = default); + Task> GetAllAsync(Func, IQueryable>? include = null, CancellationToken cancellationToken = default); /// /// 根据条件查询实体 /// /// 查询条件表达式 + /// 查询条件表达式 /// 取消令牌,用于取消异步操作 /// 符合条件的实体集合 /// @@ -51,13 +54,14 @@ public interface IQueryRepository where T : class /// 使用 LINQ 表达式树构建查询条件 /// 条件查询会被转换为 SQL 语句在数据库端执行 /// - Task> FindAsync(Expression> predicate, CancellationToken cancellationToken = default); + Task> FindAsync(Expression> predicate, Func, IQueryable>? include = null, CancellationToken cancellationToken = default); /// /// 分页查询实体 /// /// 页码,从1开始 /// 每页记录数 + /// 查询条件表达式 /// 取消令牌,用于取消异步操作 /// 分页查询结果,包含总记录数和当前页数据 /// @@ -65,7 +69,7 @@ public interface IQueryRepository where T : class /// 分页查询可以有效减少数据传输量,提高性能 /// 建议在查询大数据量时使用 /// - Task<(int TotalCount, IEnumerable Items)> GetPagedAsync(int pageNumber, int pageSize, CancellationToken cancellationToken = default); + Task<(int TotalCount, IEnumerable Items)> GetPagedAsync(int pageNumber, int pageSize, Func, IQueryable>? include = null, CancellationToken cancellationToken = default); /// /// 根据条件分页查询实体 @@ -73,6 +77,7 @@ public interface IQueryRepository where T : class /// 查询条件表达式 /// 页码,从1开始 /// 每页记录数 + /// 查询条件表达式 /// 取消令牌,用于取消异步操作 /// 分页查询结果,包含总记录数和当前页数据 /// @@ -83,12 +88,14 @@ public interface IQueryRepository where T : class Expression> predicate, int pageNumber, int pageSize, + Func, IQueryable>? include = null, CancellationToken cancellationToken = default); /// /// 查询单个实体 /// /// 查询条件表达式 + /// 查询条件表达式 /// 取消令牌,用于取消异步操作 /// 查询到的实体,如果不存在则返回 null /// @@ -96,31 +103,33 @@ public interface IQueryRepository where T : class /// 如果查询结果包含多个实体,将返回第一个 /// 建议在确定只会返回一个结果时使用 /// - Task FirstOrDefaultAsync(Expression> predicate, CancellationToken cancellationToken = default); + Task FirstOrDefaultAsync(Expression> predicate, Func, IQueryable>? include = null, CancellationToken cancellationToken = default); /// /// 查询实体是否存在 /// /// 查询条件表达式 + /// 查询条件表达式 /// 取消令牌,用于取消异步操作 /// 是否存在符合条件的实体 /// /// 这是一个异步操作,因为需要等待数据库的查询操作完成 /// 使用 EXISTS 语句在数据库端执行,性能优于获取完整实体 /// - Task AnyAsync(Expression> predicate, CancellationToken cancellationToken = default); + Task AnyAsync(Expression> predicate, Func, IQueryable>? include = null, CancellationToken cancellationToken = default); /// /// 统计符合条件的实体数量 /// /// 查询条件表达式 + /// 查询条件表达式 /// 取消令牌,用于取消异步操作 /// 符合条件的实体数量 /// /// 这是一个异步操作,因为需要等待数据库的查询操作完成 /// 使用 COUNT 语句在数据库端执行,性能优于获取完整实体 /// - Task CountAsync(Expression> predicate, CancellationToken cancellationToken = default); + Task CountAsync(Expression> predicate, Func, IQueryable>? include = null, CancellationToken cancellationToken = default); /// /// 执行SQL复制查询 diff --git a/src/X1.Infrastructure/Repositories/Base/BaseRepository.cs b/src/X1.Infrastructure/Repositories/Base/BaseRepository.cs index 55ee5e0..6f082f7 100644 --- a/src/X1.Infrastructure/Repositories/Base/BaseRepository.cs +++ b/src/X1.Infrastructure/Repositories/Base/BaseRepository.cs @@ -111,69 +111,65 @@ public abstract class BaseRepository : IBaseRepository where T : class /// /// 根据ID查询实体 /// - public virtual async Task GetByIdAsync(string id, CancellationToken cancellationToken = default) + public virtual async Task GetByIdAsync(string id, Func, IQueryable>? include = null, CancellationToken cancellationToken = default) { - return await QueryRepository.GetByIdAsync(id, cancellationToken); + return await QueryRepository.GetByIdAsync(id, include, cancellationToken); } /// /// 查询所有实体 /// - public virtual async Task> GetAllAsync(CancellationToken cancellationToken = default) + public virtual async Task> GetAllAsync(Func, IQueryable>? include = null, CancellationToken cancellationToken = default) { - return await QueryRepository.GetAllAsync(cancellationToken); + return await QueryRepository.GetAllAsync(include, cancellationToken); } /// /// 根据条件查询实体 /// - public virtual async Task> FindAsync(System.Linq.Expressions.Expression> predicate, CancellationToken cancellationToken = default) + public virtual async Task> FindAsync(System.Linq.Expressions.Expression> predicate, Func, IQueryable>? include = null, CancellationToken cancellationToken = default) { - return await QueryRepository.FindAsync(predicate, cancellationToken); + return await QueryRepository.FindAsync(predicate, include, cancellationToken); } /// /// 分页查询实体 /// - public virtual async Task<(int TotalCount, IEnumerable Items)> GetPagedAsync(int pageNumber, int pageSize, CancellationToken cancellationToken = default) + public virtual async Task<(int TotalCount, IEnumerable Items)> GetPagedAsync(int pageNumber, int pageSize, Func, IQueryable>? include = null, CancellationToken cancellationToken = default) { - return await QueryRepository.GetPagedAsync(pageNumber, pageSize, cancellationToken); + return await QueryRepository.GetPagedAsync(pageNumber, pageSize, include, cancellationToken); } /// /// 根据条件分页查询实体 /// - public virtual async Task<(int TotalCount, IEnumerable Items)> GetPagedAsync( - System.Linq.Expressions.Expression> predicate, - int pageNumber, - int pageSize, - CancellationToken cancellationToken = default) + public virtual async Task<(int TotalCount, IEnumerable Items)> GetPagedAsync(System.Linq.Expressions.Expression> predicate, int pageNumber, int pageSize, Func, IQueryable>? include = null, CancellationToken cancellationToken = default) { - return await QueryRepository.GetPagedAsync(predicate, pageNumber, pageSize, cancellationToken); + return await QueryRepository.GetPagedAsync(predicate, pageNumber, pageSize, include, cancellationToken); } /// /// 查询单个实体 /// - public virtual async Task FirstOrDefaultAsync(System.Linq.Expressions.Expression> predicate, CancellationToken cancellationToken = default) + public virtual async Task FirstOrDefaultAsync(System.Linq.Expressions.Expression> predicate, Func, IQueryable>? include = null, CancellationToken cancellationToken = default) { - return await QueryRepository.FirstOrDefaultAsync(predicate, cancellationToken); + return await QueryRepository.FirstOrDefaultAsync(predicate, include, cancellationToken); } /// /// 查询实体是否存在 /// - public virtual async Task AnyAsync(System.Linq.Expressions.Expression> predicate, CancellationToken cancellationToken = default) + public virtual async Task AnyAsync(System.Linq.Expressions.Expression> predicate, Func, IQueryable>? include = null, CancellationToken cancellationToken = default) { - return await QueryRepository.AnyAsync(predicate, cancellationToken); + return await QueryRepository.AnyAsync(predicate, include, cancellationToken); } /// /// 统计符合条件的实体数量 /// - public virtual async Task CountAsync(System.Linq.Expressions.Expression> predicate, CancellationToken cancellationToken = default) + public virtual async Task CountAsync(System.Linq.Expressions.Expression> predicate, Func, IQueryable>? include = null, CancellationToken cancellationToken = default) { - return await QueryRepository.CountAsync(predicate, cancellationToken); + return await QueryRepository.CountAsync(predicate, include, cancellationToken); } /// diff --git a/src/X1.Infrastructure/Repositories/CQRS/QueryRepository.cs b/src/X1.Infrastructure/Repositories/CQRS/QueryRepository.cs index c01d997..18d4915 100644 --- a/src/X1.Infrastructure/Repositories/CQRS/QueryRepository.cs +++ b/src/X1.Infrastructure/Repositories/CQRS/QueryRepository.cs @@ -44,82 +44,99 @@ public class QueryRepository : IQueryRepository where T : class /// /// 根据ID查询单个实体 /// - public async Task GetByIdAsync(string id, CancellationToken cancellationToken = default) + public async Task GetByIdAsync(string id, Func, IQueryable>? include = null, CancellationToken cancellationToken = default) { - return await _dbSet.FindAsync(new object[] { id }, cancellationToken); + IQueryable query = _dbSet; + if (include != null) + query = include(query); + return await query.FirstOrDefaultAsync(e => EF.Property(e, "Id") == id, cancellationToken); } /// /// 查询所有实体 /// - public async Task> GetAllAsync(CancellationToken cancellationToken = default) + public async Task> GetAllAsync(Func, IQueryable>? include = null, CancellationToken cancellationToken = default) { - return await _dbSet.ToListAsync(cancellationToken); + IQueryable query = _dbSet; + if (include != null) + query = include(query); + return await query.ToListAsync(cancellationToken); } /// /// 根据条件查询实体 /// - public async Task> FindAsync(Expression> predicate, CancellationToken cancellationToken = default) + public async Task> FindAsync(Expression> predicate, Func, IQueryable>? include = null, CancellationToken cancellationToken = default) { - return await _dbSet.Where(predicate).ToListAsync(cancellationToken); + IQueryable query = _dbSet.Where(predicate); + if (include != null) + query = include(query); + return await query.ToListAsync(cancellationToken); } /// /// 分页查询实体 /// - public async Task<(int TotalCount, IEnumerable Items)> GetPagedAsync(int pageNumber, int pageSize, CancellationToken cancellationToken = default) + public async Task<(int TotalCount, IEnumerable Items)> GetPagedAsync(int pageNumber, int pageSize, Func, IQueryable>? include = null, CancellationToken cancellationToken = default) { - var totalCount = await _dbSet.CountAsync(cancellationToken); - var items = await _dbSet + IQueryable query = _dbSet; + if (include != null) + query = include(query); + var totalCount = await query.CountAsync(cancellationToken); + var items = await query .Skip((pageNumber - 1) * pageSize) .Take(pageSize) .ToListAsync(cancellationToken); - return (totalCount, items); } /// /// 根据条件分页查询实体 /// - public async Task<(int TotalCount, IEnumerable Items)> GetPagedAsync( - Expression> predicate, - int pageNumber, - int pageSize, - CancellationToken cancellationToken = default) + public async Task<(int TotalCount, IEnumerable Items)> GetPagedAsync(Expression> predicate, int pageNumber, int pageSize, Func, IQueryable>? include = null, CancellationToken cancellationToken = default) { - var query = _dbSet.Where(predicate); + IQueryable query = _dbSet.Where(predicate); + if (include != null) + query = include(query); var totalCount = await query.CountAsync(cancellationToken); var items = await query .Skip((pageNumber - 1) * pageSize) .Take(pageSize) .ToListAsync(cancellationToken); - return (totalCount, items); } /// /// 查询单个实体 /// - public async Task FirstOrDefaultAsync(Expression> predicate, CancellationToken cancellationToken = default) + public async Task FirstOrDefaultAsync(Expression> predicate, Func, IQueryable>? include = null, CancellationToken cancellationToken = default) { - return await _dbSet.FirstOrDefaultAsync(predicate, cancellationToken); + IQueryable query = _dbSet.Where(predicate); + if (include != null) + query = include(query); + return await query.FirstOrDefaultAsync(cancellationToken); } /// /// 查询实体是否存在 /// - public async Task AnyAsync(Expression> predicate, CancellationToken cancellationToken = default) + public async Task AnyAsync(Expression> predicate, Func, IQueryable>? include = null, CancellationToken cancellationToken = default) { - return await _dbSet.AnyAsync(predicate, cancellationToken); + IQueryable query = _dbSet.Where(predicate); + if (include != null) + query = include(query); + return await query.AnyAsync(cancellationToken); } /// /// 统计符合条件的实体数量 /// - public async Task CountAsync(Expression> predicate, CancellationToken cancellationToken = default) + public async Task CountAsync(Expression> predicate, Func, IQueryable>? include = null, CancellationToken cancellationToken = default) { - return await _dbSet.CountAsync(predicate, cancellationToken); + IQueryable query = _dbSet.Where(predicate); + if (include != null) + query = include(query); + return await query.CountAsync(cancellationToken); } /// diff --git a/src/X1.Infrastructure/Repositories/Device/CellularDeviceRepository.cs b/src/X1.Infrastructure/Repositories/Device/CellularDeviceRepository.cs index c033a1d..75856ec 100644 --- a/src/X1.Infrastructure/Repositories/Device/CellularDeviceRepository.cs +++ b/src/X1.Infrastructure/Repositories/Device/CellularDeviceRepository.cs @@ -64,7 +64,7 @@ public class CellularDeviceRepository : BaseRepository, ICellula /// public async Task> GetAllDevicesAsync(CancellationToken cancellationToken = default) { - var devices = await QueryRepository.GetAllAsync(cancellationToken); + var devices = await QueryRepository.GetAllAsync(cancellationToken: cancellationToken); return devices.ToList(); } @@ -73,7 +73,7 @@ public class CellularDeviceRepository : BaseRepository, ICellula /// public async Task GetDeviceByIdAsync(string id, CancellationToken cancellationToken = default) { - return await QueryRepository.GetByIdAsync(id, cancellationToken); + return await QueryRepository.GetByIdAsync(id, cancellationToken: cancellationToken); } @@ -85,7 +85,7 @@ public class CellularDeviceRepository : BaseRepository, ICellula /// public async Task GetDeviceBySerialNumberAsync(string serialNumber, CancellationToken cancellationToken = default) { - return await QueryRepository.FirstOrDefaultAsync(d => d.SerialNumber == serialNumber, cancellationToken); + return await QueryRepository.FirstOrDefaultAsync(d => d.SerialNumber == serialNumber, cancellationToken: cancellationToken); } /// @@ -95,7 +95,7 @@ public class CellularDeviceRepository : BaseRepository, ICellula string? keyword, CancellationToken cancellationToken = default) { - var query = await QueryRepository.FindAsync(d => true, cancellationToken); + var query = await QueryRepository.FindAsync(d => true, cancellationToken: cancellationToken); if (!string.IsNullOrWhiteSpace(keyword)) { @@ -118,7 +118,7 @@ public class CellularDeviceRepository : BaseRepository, ICellula /// public async Task ExistsAsync(string id, CancellationToken cancellationToken = default) { - return await QueryRepository.AnyAsync(d => d.Id == id, cancellationToken); + return await QueryRepository.AnyAsync(d => d.Id == id, cancellationToken: cancellationToken); } /// @@ -126,6 +126,6 @@ public class CellularDeviceRepository : BaseRepository, ICellula /// public async Task SerialNumberExistsAsync(string serialNumber, CancellationToken cancellationToken = default) { - return await QueryRepository.AnyAsync(d => d.SerialNumber == serialNumber, cancellationToken); + return await QueryRepository.AnyAsync(d => d.SerialNumber == serialNumber, cancellationToken: cancellationToken); } } \ No newline at end of file diff --git a/src/X1.Infrastructure/Repositories/Device/ProtocolVersionRepository.cs b/src/X1.Infrastructure/Repositories/Device/ProtocolVersionRepository.cs index 32d0d2c..5a23fd7 100644 --- a/src/X1.Infrastructure/Repositories/Device/ProtocolVersionRepository.cs +++ b/src/X1.Infrastructure/Repositories/Device/ProtocolVersionRepository.cs @@ -62,7 +62,7 @@ public class ProtocolVersionRepository : BaseRepository, IProto /// public async Task> GetAllProtocolVersionsAsync(CancellationToken cancellationToken = default) { - var protocolVersions = await QueryRepository.GetAllAsync(cancellationToken); + var protocolVersions = await QueryRepository.GetAllAsync(cancellationToken:cancellationToken); return protocolVersions.ToList(); } @@ -71,7 +71,7 @@ public class ProtocolVersionRepository : BaseRepository, IProto /// public async Task GetProtocolVersionByIdAsync(string id, CancellationToken cancellationToken = default) { - return await QueryRepository.GetByIdAsync(id, cancellationToken); + return await QueryRepository.GetByIdAsync(id, cancellationToken:cancellationToken); } /// @@ -79,7 +79,7 @@ public class ProtocolVersionRepository : BaseRepository, IProto /// public async Task GetProtocolVersionByVersionAsync(string version, CancellationToken cancellationToken = default) { - return await QueryRepository.FirstOrDefaultAsync(pv => pv.Version == version, cancellationToken); + return await QueryRepository.FirstOrDefaultAsync(pv => pv.Version == version, cancellationToken:cancellationToken); } /// @@ -89,7 +89,7 @@ public class ProtocolVersionRepository : BaseRepository, IProto string? keyword, CancellationToken cancellationToken = default) { - var query = await QueryRepository.FindAsync(pv => true, cancellationToken); + var query = await QueryRepository.FindAsync(pv => true, cancellationToken:cancellationToken); if (!string.IsNullOrWhiteSpace(keyword)) { @@ -108,7 +108,7 @@ public class ProtocolVersionRepository : BaseRepository, IProto /// public async Task ExistsAsync(string id, CancellationToken cancellationToken = default) { - return await QueryRepository.AnyAsync(pv => pv.Id == id, cancellationToken); + return await QueryRepository.AnyAsync(pv => pv.Id == id, cancellationToken: cancellationToken); } /// @@ -116,7 +116,7 @@ public class ProtocolVersionRepository : BaseRepository, IProto /// public async Task VersionExistsAsync(string version, CancellationToken cancellationToken = default) { - return await QueryRepository.AnyAsync(pv => pv.Version == version, cancellationToken); + return await QueryRepository.AnyAsync(pv => pv.Version == version, cancellationToken: cancellationToken); } /// @@ -124,7 +124,7 @@ public class ProtocolVersionRepository : BaseRepository, IProto /// public async Task> GetEnabledProtocolVersionsAsync(CancellationToken cancellationToken = default) { - var protocolVersions = await QueryRepository.FindAsync(pv => pv.IsEnabled, cancellationToken); + var protocolVersions = await QueryRepository.FindAsync(pv => pv.IsEnabled, cancellationToken: cancellationToken); return protocolVersions.ToList(); } } \ No newline at end of file diff --git a/src/X1.Infrastructure/Repositories/Identity/LoginLogRepository.cs b/src/X1.Infrastructure/Repositories/Identity/LoginLogRepository.cs index bbc8d87..122eee8 100644 --- a/src/X1.Infrastructure/Repositories/Identity/LoginLogRepository.cs +++ b/src/X1.Infrastructure/Repositories/Identity/LoginLogRepository.cs @@ -55,7 +55,7 @@ public class LoginLogRepository : BaseRepository, ILoginLogRepository { var logs = await QueryRepository.FindAsync( log => log.UserId == userId, - cancellationToken); + cancellationToken: cancellationToken); return logs.OrderByDescending(l => l.LoginTime) .Take(count) @@ -72,7 +72,7 @@ public class LoginLogRepository : BaseRepository, ILoginLogRepository log => log.IpAddress == ipAddress && !log.IsSuccess && log.LoginTime >= windowStart, - cancellationToken); + cancellationToken: cancellationToken); return failedAttempts >= MaxLoginAttempts; } @@ -87,7 +87,7 @@ public class LoginLogRepository : BaseRepository, ILoginLogRepository log => log.IpAddress == ipAddress && !log.IsSuccess && log.LoginTime >= windowStart, - cancellationToken); + cancellationToken: cancellationToken); } /// @@ -114,7 +114,7 @@ public class LoginLogRepository : BaseRepository, ILoginLogRepository { return await QueryRepository.FindAsync( log => log.UserId == userId, - cancellationToken); + cancellationToken: cancellationToken); } /// @@ -124,7 +124,7 @@ public class LoginLogRepository : BaseRepository, ILoginLogRepository { return await QueryRepository.FindAsync( log => true, - cancellationToken); + cancellationToken: cancellationToken); } /// @@ -134,7 +134,7 @@ public class LoginLogRepository : BaseRepository, ILoginLogRepository { return await QueryRepository.FindAsync( log => !log.IsSuccess && log.CreatedAt >= startTime && log.CreatedAt <= endTime, - cancellationToken); + cancellationToken: cancellationToken); } /// @@ -144,7 +144,7 @@ public class LoginLogRepository : BaseRepository, ILoginLogRepository { return await QueryRepository.FindAsync( log => log.IpAddress == ipAddress, - cancellationToken); + cancellationToken: cancellationToken); } /// @@ -154,7 +154,7 @@ public class LoginLogRepository : BaseRepository, ILoginLogRepository { var oldLogs = await QueryRepository.FindAsync( log => log.CreatedAt < before, - cancellationToken); + cancellationToken: cancellationToken); if (oldLogs.Any()) { @@ -172,7 +172,7 @@ public class LoginLogRepository : BaseRepository, ILoginLogRepository { var logs = await QueryRepository.FindAsync( log => log.CreatedAt >= startTime && log.CreatedAt <= endTime, - cancellationToken); + cancellationToken: cancellationToken); return new LoginStatistics { diff --git a/src/X1.Infrastructure/Repositories/Identity/PermissionRepository.cs b/src/X1.Infrastructure/Repositories/Identity/PermissionRepository.cs index f4815f4..b1a9669 100644 --- a/src/X1.Infrastructure/Repositories/Identity/PermissionRepository.cs +++ b/src/X1.Infrastructure/Repositories/Identity/PermissionRepository.cs @@ -53,7 +53,7 @@ public class PermissionRepository : BaseRepository, IPermissionRepos /// public async Task DeletePermissionAsync(string permissionId, CancellationToken cancellationToken = default) { - var permission = await QueryRepository.GetByIdAsync(permissionId, cancellationToken); + var permission = await QueryRepository.GetByIdAsync(permissionId, cancellationToken: cancellationToken); if (permission != null) { CommandRepository.Delete(permission); @@ -81,7 +81,7 @@ public class PermissionRepository : BaseRepository, IPermissionRepos /// public async Task DeletePermissionsAsync(IEnumerable permissionIds, CancellationToken cancellationToken = default) { - var permissions = await QueryRepository.FindAsync(p => permissionIds.Contains(p.Id), cancellationToken); + var permissions = await QueryRepository.FindAsync(p => permissionIds.Contains(p.Id), cancellationToken: cancellationToken); if (permissions.Any()) { CommandRepository.DeleteRange(permissions); @@ -97,7 +97,7 @@ public class PermissionRepository : BaseRepository, IPermissionRepos /// public async Task> GetAllPermissionsAsync(CancellationToken cancellationToken = default) { - return await QueryRepository.GetAllAsync(cancellationToken); + return await QueryRepository.GetAllAsync(cancellationToken: cancellationToken); } /// @@ -105,7 +105,7 @@ public class PermissionRepository : BaseRepository, IPermissionRepos /// public async Task GetPermissionByIdAsync(string permissionId, CancellationToken cancellationToken = default) { - return await QueryRepository.GetByIdAsync(permissionId, cancellationToken); + return await QueryRepository.GetByIdAsync(permissionId, cancellationToken: cancellationToken); } /// @@ -113,7 +113,7 @@ public class PermissionRepository : BaseRepository, IPermissionRepos /// public async Task GetPermissionByNameAsync(string name, CancellationToken cancellationToken = default) { - return await QueryRepository.FirstOrDefaultAsync(p => p.Name == name, cancellationToken); + return await QueryRepository.FirstOrDefaultAsync(p => p.Name == name, cancellationToken: cancellationToken); } /// @@ -121,7 +121,7 @@ public class PermissionRepository : BaseRepository, IPermissionRepos /// public async Task> GetPermissionsByTypeAsync(string type, CancellationToken cancellationToken = default) { - return await QueryRepository.FindAsync(p => p.Type == type, cancellationToken); + return await QueryRepository.FindAsync(p => p.Type == type, cancellationToken: cancellationToken); } /// @@ -129,7 +129,7 @@ public class PermissionRepository : BaseRepository, IPermissionRepos /// public async Task ExistsAsync(string permissionId, CancellationToken cancellationToken = default) { - return await QueryRepository.AnyAsync(p => p.Id == permissionId, cancellationToken); + return await QueryRepository.AnyAsync(p => p.Id == permissionId, cancellationToken: cancellationToken); } /// @@ -137,7 +137,7 @@ public class PermissionRepository : BaseRepository, IPermissionRepos /// public async Task NameExistsAsync(string name, CancellationToken cancellationToken = default) { - return await QueryRepository.AnyAsync(p => p.Name == name, cancellationToken); + return await QueryRepository.AnyAsync(p => p.Name == name, cancellationToken: cancellationToken); } /// @@ -145,7 +145,7 @@ public class PermissionRepository : BaseRepository, IPermissionRepos /// public async Task GetByNameAsync(string name, CancellationToken cancellationToken = default) { - return await QueryRepository.FirstOrDefaultAsync(p => p.Name == name, cancellationToken); + return await QueryRepository.FirstOrDefaultAsync(p => p.Name == name, cancellationToken: cancellationToken); } #endregion diff --git a/src/X1.Infrastructure/Repositories/Identity/RolePermissionRepository.cs b/src/X1.Infrastructure/Repositories/Identity/RolePermissionRepository.cs index 8550f50..d556730 100644 --- a/src/X1.Infrastructure/Repositories/Identity/RolePermissionRepository.cs +++ b/src/X1.Infrastructure/Repositories/Identity/RolePermissionRepository.cs @@ -45,10 +45,10 @@ public class RolePermissionRepository : BaseRepository, IRolePer { var rolePermissions = await QueryRepository.FindAsync( rp => rp.RoleId == roleId, - cancellationToken); + cancellationToken: cancellationToken); var permissionIds = rolePermissions.Select(rp => rp.PermissionId); - return await _permissionQueryRepository.FindAsync(p => permissionIds.Contains(p.Id), cancellationToken); + return await _permissionQueryRepository.FindAsync(p => permissionIds.Contains(p.Id), cancellationToken: cancellationToken); } /// @@ -58,10 +58,10 @@ public class RolePermissionRepository : BaseRepository, IRolePer { var rolePermissions = await QueryRepository.FindAsync( rp => rp.PermissionId == permissionId, - cancellationToken); + cancellationToken: cancellationToken); var roleIds = rolePermissions.Select(rp => rp.RoleId); - return await _roleQueryRepository.FindAsync(r => roleIds.Contains(r.Id), cancellationToken); + return await _roleQueryRepository.FindAsync(r => roleIds.Contains(r.Id), cancellationToken: cancellationToken); } /// @@ -71,7 +71,7 @@ public class RolePermissionRepository : BaseRepository, IRolePer { return await QueryRepository.AnyAsync( rp => rp.RoleId == roleId && rp.PermissionId == permissionId, - cancellationToken); + cancellationToken: cancellationToken); } /// @@ -92,7 +92,7 @@ public class RolePermissionRepository : BaseRepository, IRolePer { var rolePermissions = await QueryRepository.FindAsync( rp => rp.RoleId == roleId && permissionIds.Contains(rp.PermissionId), - cancellationToken); + cancellationToken: cancellationToken); if (rolePermissions.Any()) { @@ -110,7 +110,7 @@ public class RolePermissionRepository : BaseRepository, IRolePer { return await QueryRepository.FindAsync( rp => rp.RoleId == roleId, - cancellationToken); + cancellationToken: cancellationToken); } /// @@ -120,7 +120,7 @@ public class RolePermissionRepository : BaseRepository, IRolePer { var rolePermissions = await QueryRepository.FindAsync( rp => rp.RoleId == roleId && permissionIds.Contains(rp.PermissionId), - cancellationToken); + cancellationToken: cancellationToken); return rolePermissions.Count() == permissionIds.Count(); } @@ -132,7 +132,7 @@ public class RolePermissionRepository : BaseRepository, IRolePer { var rolePermissions = await QueryRepository.FindAsync( rp => rp.RoleId == roleId && permissionIds.Contains(rp.PermissionId), - cancellationToken); + cancellationToken: cancellationToken); var existingPermissionIds = rolePermissions.Select(rp => rp.PermissionId); return permissionIds.Except(existingPermissionIds); diff --git a/src/X1.Infrastructure/Repositories/Identity/UserRoleRepository.cs b/src/X1.Infrastructure/Repositories/Identity/UserRoleRepository.cs index 1db76c1..2d4104d 100644 --- a/src/X1.Infrastructure/Repositories/Identity/UserRoleRepository.cs +++ b/src/X1.Infrastructure/Repositories/Identity/UserRoleRepository.cs @@ -45,7 +45,7 @@ public class UserRoleRepository : BaseRepository, IUserRoleRepository { var userRole = await QueryRepository.FirstOrDefaultAsync( ur => ur.UserId == userId && ur.RoleId == roleId, - cancellationToken); + cancellationToken: cancellationToken); if (userRole != null) { @@ -68,7 +68,7 @@ public class UserRoleRepository : BaseRepository, IUserRoleRepository { var userRoles = await QueryRepository.FindAsync( ur => ur.UserId == userId && roleIds.Contains(ur.RoleId), - cancellationToken); + cancellationToken: cancellationToken); if (userRoles.Any()) { @@ -87,7 +87,7 @@ public class UserRoleRepository : BaseRepository, IUserRoleRepository { var userRoles = await QueryRepository.FindAsync( ur => ur.UserId == userId, - cancellationToken); + cancellationToken: cancellationToken); return userRoles.Select(ur => ur.RoleId).ToList(); } @@ -99,7 +99,7 @@ public class UserRoleRepository : BaseRepository, IUserRoleRepository { var userRoles = await QueryRepository.FindAsync( ur => ur.RoleId == roleId, - cancellationToken); + cancellationToken: cancellationToken); return userRoles.Select(ur => ur.UserId).ToList(); } @@ -111,7 +111,7 @@ public class UserRoleRepository : BaseRepository, IUserRoleRepository { return await QueryRepository.AnyAsync( ur => ur.UserId == userId && ur.RoleId == roleId, - cancellationToken); + cancellationToken: cancellationToken); } /// @@ -121,7 +121,7 @@ public class UserRoleRepository : BaseRepository, IUserRoleRepository { return await QueryRepository.FirstOrDefaultAsync( ur => ur.UserId == userId && ur.RoleId == roleId, - cancellationToken); + cancellationToken: cancellationToken); } #endregion