mirror of
https://github.com/meysamhadeli/booking-microservices.git
synced 2026-04-12 03:12:11 +08:00
50 lines
1.8 KiB
C#
50 lines
1.8 KiB
C#
using System.Linq.Expressions;
|
|
using BuildingBlocks.Core.Model;
|
|
|
|
namespace BuildingBlocks.Mongo;
|
|
|
|
public interface IReadRepository<TEntity, in TId>
|
|
where TEntity : class, IAggregate<TId>
|
|
{
|
|
Task<TEntity?> FindByIdAsync(TId id, CancellationToken cancellationToken = default);
|
|
|
|
Task<TEntity?> FindOneAsync(
|
|
Expression<Func<TEntity, bool>> predicate,
|
|
CancellationToken cancellationToken = default);
|
|
|
|
Task<IReadOnlyList<TEntity>> FindAsync(
|
|
Expression<Func<TEntity, bool>> predicate,
|
|
CancellationToken cancellationToken = default);
|
|
|
|
Task<IReadOnlyList<TEntity>> GetAllAsync(CancellationToken cancellationToken = default);
|
|
|
|
public Task<IReadOnlyList<TEntity>> RawQuery(
|
|
string query,
|
|
CancellationToken cancellationToken = default,
|
|
params object[] queryParams);
|
|
}
|
|
|
|
public interface IWriteRepository<TEntity, in TId>
|
|
where TEntity : class, IAggregate<TId>
|
|
{
|
|
Task<TEntity> AddAsync(TEntity entity, CancellationToken cancellationToken = default);
|
|
Task<TEntity> UpdateAsync(TEntity entity, CancellationToken cancellationToken = default);
|
|
Task DeleteRangeAsync(IReadOnlyList<TEntity> entities, CancellationToken cancellationToken = default);
|
|
Task DeleteAsync(Expression<Func<TEntity, bool>> predicate, CancellationToken cancellationToken = default);
|
|
Task DeleteAsync(TEntity entity, CancellationToken cancellationToken = default);
|
|
Task DeleteByIdAsync(TId id, CancellationToken cancellationToken = default);
|
|
}
|
|
|
|
public interface IRepository<TEntity, in TId> :
|
|
IReadRepository<TEntity, TId>,
|
|
IWriteRepository<TEntity, TId>,
|
|
IDisposable
|
|
where TEntity : class, IAggregate<TId>
|
|
{
|
|
}
|
|
|
|
public interface IRepository<TEntity> : IRepository<TEntity, long>
|
|
where TEntity : class, IAggregate<long>
|
|
{
|
|
}
|