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