using System.Linq.Expressions; using MongoDB.Bson; using MongoDB.Driver; using MongoRepository; namespace CommonService { public class MongoBaseService : IMongoBaseService where TDocument : MongoBaseEntity, new() { public IMongoBaseRepository baseDal; public virtual IQueryable AsQueryable() { return baseDal.AsQueryable(); } public virtual IEnumerable FilterBy( Expression> filterExpression) { return baseDal.FilterBy(filterExpression); } public virtual IEnumerable FilterBy( Expression> filterExpression, Expression> projectionExpression) { return baseDal.FilterBy(filterExpression, projectionExpression); } public virtual TDocument FindOne(Expression> filterExpression) { return baseDal.FindOne(filterExpression); } public virtual async Task FindOneAsync(Expression> filterExpression) { return await baseDal.FindOneAsync(filterExpression); } public virtual TDocument FindById(string id) { return baseDal.FindById(id); } public virtual async Task FindByIdAsync(string id) { return await baseDal.FindByIdAsync(id); } public virtual (long count, List list) QueryPage(Expression> filterExpression, Expression> orderExpression, bool desc, int pageSize, int pageIndex) { return baseDal.QueryPage(filterExpression, orderExpression, desc, pageSize, pageIndex); } public virtual async Task<(long count, List list)> QueryPageAsync(Expression> filterExpression, Expression> orderExpression, bool desc, int pageSize, int pageIndex) { return await baseDal.QueryPageAsync(filterExpression, orderExpression, desc, pageSize, pageIndex); } public virtual (bool ok, string message) InsertOne(TDocument document) { return baseDal.InsertOne(document); } public virtual async Task<(bool ok, string message)> InsertOneAsync(TDocument document) { return await baseDal.InsertOneAsync(document); } public (bool ok, string message) InsertMany(ICollection documents) { return baseDal.InsertMany(documents); } public virtual async Task<(bool ok, string message)> InsertManyAsync(ICollection documents) { return await baseDal.InsertManyAsync(documents); } public virtual (bool ok, string message) UpdateById(string id, UpdateDefinition updateDefinition) { return baseDal.UpdateById(id, updateDefinition); } public virtual async Task<(bool ok, string message)> UpdateByIdAsync(string id, UpdateDefinition updateDefinition) { return await baseDal.UpdateByIdAsync(id, updateDefinition); } public virtual (bool ok, string message) UpdateMany(Expression> filterExpression, UpdateDefinition updateDefinition) { return baseDal.UpdateMany(filterExpression, updateDefinition); } public virtual async Task<(bool ok, string message)> UpdateManyAsync(Expression> filterExpression, UpdateDefinition updateDefinition) { return await baseDal.UpdateManyAsync(filterExpression, updateDefinition); } public (bool ok, string message) ReplaceOne(TDocument document) { return baseDal.ReplaceOne(document); } public virtual async Task<(bool ok, string message)> ReplaceOneAsync(TDocument document) { return await baseDal.ReplaceOneAsync(document); } public (bool ok, string message) DeleteOne(Expression> filterExpression) { return baseDal.DeleteOne(filterExpression); } public async Task<(bool ok, string message)> DeleteOneAsync(Expression> filterExpression) { return await baseDal.DeleteOneAsync(filterExpression); } public (bool ok, string message) DeleteById(string id) { return baseDal.DeleteById(id); } public async Task<(bool ok, string message)> DeleteByIdAsync(string id) { return await baseDal.DeleteByIdAsync(id); } public (bool ok, string message) DeleteMany(Expression> filterExpression) { return baseDal.DeleteMany(filterExpression); } public async Task<(bool ok, string message)> DeleteManyAsync(Expression> filterExpression) { return await baseDal.DeleteManyAsync(filterExpression); } public async Task> Aggregate(FilterDefinition filterExpression, ProjectionDefinition group) { return await baseDal.Aggregate(filterExpression, group); } } }