-
Notifications
You must be signed in to change notification settings - Fork 23
/
Copy pathCachedAsyncRepository.cs
69 lines (52 loc) · 2.92 KB
/
CachedAsyncRepository.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
using System.Linq.Expressions;
using Application.Common.Interfaces.UnitOfWorks;
namespace Infrastructure.UnitOfWorks.CachedRepositories;
public partial class CachedAsyncRepository<T>(IAsyncRepository<T> repository) : IAsyncRepository<T>
where T : class
{
public async Task<T?> FindByIdAsync<TId>(TId id, CancellationToken cancellationToken = default)
where TId : notnull => await repository.FindByIdAsync(id, cancellationToken);
public async Task<T?> FindByConditionAsync(
Expression<Func<T, bool>> criteria,
CancellationToken cancellationToken = default
) => await repository.FindByConditionAsync(criteria, cancellationToken);
public async Task<TResult?> FindByConditionAsync<TResult>(
Expression<Func<T, bool>> criteria,
Expression<Func<T, TResult>> mappingResult,
CancellationToken cancellationToken = default
)
where TResult : class =>
await repository.FindByConditionAsync(criteria, mappingResult, cancellationToken);
public async Task<IEnumerable<T>> ListAsync(CancellationToken cancellationToken = default) =>
await repository.ListAsync(cancellationToken);
public async Task<IEnumerable<TResult>> ListAsync<TResult>(
Expression<Func<T, TResult>> mappingResult,
CancellationToken cancellationToken = default
)
where TResult : class => await repository.ListAsync(mappingResult, cancellationToken);
public async Task<T> AddAsync(T entity, CancellationToken cancellationToken = default) =>
await repository.AddAsync(entity, cancellationToken);
public async Task<IEnumerable<T>> AddRangeAsync(
IEnumerable<T> entities,
CancellationToken cancellationToken = default
) => await repository.AddRangeAsync(entities, cancellationToken);
public async Task EditAsync(T entity) => await repository.EditAsync(entity);
public async Task UpdateAsync(T entity) => await repository.UpdateAsync(entity);
public async Task UpdateRangeAsync(IEnumerable<T> entities) =>
await repository.UpdateRangeAsync(entities);
public async Task DeleteAsync(T entity) => await repository.DeleteAsync(entity);
public async Task DeleteRangeAsync(IEnumerable<T> entities) =>
await repository.DeleteRangeAsync(entities);
public async Task<bool> AnyAsync(
Expression<Func<T, bool>>? criteria = null,
CancellationToken cancellationToken = default
) => await repository.AnyAsync(criteria, cancellationToken);
public async Task<int> CountAsync(
Expression<Func<T, bool>>? criteria = null,
CancellationToken cancellationToken = default
) => await repository.CountAsync(criteria, cancellationToken);
public IQueryable<T> QueryAsync(Expression<Func<T, bool>>? criteria = null) =>
repository.QueryAsync(criteria);
public IQueryable<T> Fromsql(string sqlQuery, params object[] parameters) =>
repository.Fromsql(sqlQuery, parameters);
}