diff --git a/ShoppingAssistantApi.Application/IRepositories/IBaseRepository.cs b/ShoppingAssistantApi.Application/IRepositories/IBaseRepository.cs index f2a2ceb..ebcb860 100644 --- a/ShoppingAssistantApi.Application/IRepositories/IBaseRepository.cs +++ b/ShoppingAssistantApi.Application/IRepositories/IBaseRepository.cs @@ -1,4 +1,5 @@ -using ShoppingAssistantApi.Domain.Common; +using MongoDB.Bson; +using ShoppingAssistantApi.Domain.Common; using System.Linq.Expressions; namespace ShoppingAssistantApi.Application.IRepositories; @@ -7,6 +8,10 @@ public interface IBaseRepository where TEntity : EntityBase { Task AddAsync(TEntity entity, CancellationToken cancellationToken); + Task GetOneAsync(ObjectId id, CancellationToken cancellationToken); + + Task GetOneAsync(Expression> predicate, CancellationToken cancellationToken); + Task> GetPageAsync(int pageNumber, int pageSize, CancellationToken cancellationToken); Task> GetPageAsync(int pageNumber, int pageSize, Expression> predicate, CancellationToken cancellationToken); diff --git a/ShoppingAssistantApi.Persistance/Repositories/BaseRepository.cs b/ShoppingAssistantApi.Persistance/Repositories/BaseRepository.cs index 565112e..dbfba85 100644 --- a/ShoppingAssistantApi.Persistance/Repositories/BaseRepository.cs +++ b/ShoppingAssistantApi.Persistance/Repositories/BaseRepository.cs @@ -1,11 +1,13 @@ -using MongoDB.Driver; +using MongoDB.Bson; +using MongoDB.Driver; +using ShoppingAssistantApi.Application.IRepositories; using ShoppingAssistantApi.Domain.Common; using ShoppingAssistantApi.Persistance.Database; using System.Linq.Expressions; namespace ShoppingAssistantApi.Persistance.Repositories; -public abstract class BaseRepository where TEntity : EntityBase +public abstract class BaseRepository : IBaseRepository where TEntity : EntityBase { protected MongoDbContext _db; @@ -17,6 +19,16 @@ public abstract class BaseRepository where TEntity : EntityBase this._collection = _db.Db.GetCollection(collectionName); } + public async Task GetOneAsync(ObjectId id, CancellationToken cancellationToken) + { + return await this._collection.Find(x => x.Id == id).FirstOrDefaultAsync(cancellationToken); + } + + public async Task GetOneAsync(Expression> predicate, CancellationToken cancellationToken) + { + return await this._collection.Find(predicate).FirstOrDefaultAsync(cancellationToken); + } + public async Task AddAsync(TEntity entity, CancellationToken cancellationToken) { await this._collection.InsertOneAsync(entity, new InsertOneOptions(), cancellationToken);