Add project files.
This commit is contained in:
		
							
								
								
									
										152
									
								
								Core.Blueprint.Mongo/Contracts/ICollectionRepository.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										152
									
								
								Core.Blueprint.Mongo/Contracts/ICollectionRepository.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,152 @@ | ||||
| using MongoDB.Driver; | ||||
| using System.Linq.Expressions; | ||||
|  | ||||
| namespace Core.Blueprint.Mongo | ||||
| { | ||||
|     /// <summary> | ||||
|     /// Interface for performing CRUD operations and queries on MongoDB collections. | ||||
|     /// The <typeparamref name="TDocument"/> represents the type of documents in the collection, | ||||
|     /// which must implement the <see cref="IDocument"/> interface. | ||||
|     /// </summary> | ||||
|     /// <typeparam name="TDocument">The type of document in the MongoDB collection, must implement <see cref="IDocument"/>.</typeparam> | ||||
|     public interface ICollectionsRepository<TDocument> where TDocument : IDocument | ||||
|     { | ||||
|         /// <summary> | ||||
|         /// Retrieves all documents from the collection as an enumerable queryable result. | ||||
|         /// </summary> | ||||
|         /// <returns>A <see cref="ValueTask"/> containing an <see cref="IEnumerable{TDocument}"/> representing the collection's documents.</returns> | ||||
|         ValueTask<IEnumerable<TDocument>> AsQueryable(); | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Filters the documents in the collection by the provided filter expression. | ||||
|         /// </summary> | ||||
|         /// <param name="filterExpression">An expression used to filter the documents based on the provided condition.</param> | ||||
|         /// <returns>A <see cref="Task"/> representing the asynchronous operation, with a result of an <see cref="IEnumerable{TDocument}"/> of filtered documents.</returns> | ||||
|         Task<IEnumerable<TDocument>> FilterBy( | ||||
|             Expression<Func<TDocument, bool>> filterExpression); | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Filters the documents in the collection by the provided filter expression and projects them to a different type. | ||||
|         /// </summary> | ||||
|         /// <typeparam name="TProjected">The type to project the documents into.</typeparam> | ||||
|         /// <param name="filterExpression">An expression used to filter the documents.</param> | ||||
|         /// <param name="projectionExpression">An expression used to project the filtered documents into the <typeparamref name="TProjected"/> type.</param> | ||||
|         /// <returns>An <see cref="IEnumerable{TProjected}"/> representing the projected documents.</returns> | ||||
|         IEnumerable<TProjected> FilterBy<TProjected>( | ||||
|             Expression<Func<TDocument, bool>> filterExpression, | ||||
|             Expression<Func<TDocument, TProjected>> projectionExpression); | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Filters documents in the collection based on the provided MongoDB filter definition. | ||||
|         /// </summary> | ||||
|         /// <param name="filterDefinition">A filter definition for MongoDB query.</param> | ||||
|         /// <returns>A task that represents the asynchronous operation. The task result contains a list of documents that match the filter.</returns> | ||||
|         Task<IEnumerable<TDocument>> FilterByMongoFilterAsync(FilterDefinition<TDocument> filterDefinition); | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Finds a single document by the provided filter expression. | ||||
|         /// </summary> | ||||
|         /// <param name="filterExpression">An expression used to filter the documents.</param> | ||||
|         /// <returns>The first matching <see cref="TDocument"/> or null if no match is found.</returns> | ||||
|         TDocument FindOne(Expression<Func<TDocument, bool>> filterExpression); | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Asynchronously finds a single document by the provided filter expression. | ||||
|         /// </summary> | ||||
|         /// <param name="filterExpression">An expression used to filter the documents.</param> | ||||
|         /// <returns>A <see cref="Task"/> representing the asynchronous operation, with the matching <see cref="TDocument"/> or null.</returns> | ||||
|         Task<TDocument> FindOneAsync(Expression<Func<TDocument, bool>> filterExpression); | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Finds a document by its identifier. | ||||
|         /// </summary> | ||||
|         /// <param name="id">The identifier of the document.</param> | ||||
|         /// <returns>The document with the provided identifier or null if not found.</returns> | ||||
|         TDocument FindById(string id); | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Asynchronously finds a document by its identifier. | ||||
|         /// </summary> | ||||
|         /// <param name="id">The identifier of the document.</param> | ||||
|         /// <returns>A <see cref="Task"/> representing the asynchronous operation, with the matching <see cref="TDocument"/> or null.</returns> | ||||
|         Task<TDocument> FindByIdAsync(string id); | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Inserts a single document into the collection. | ||||
|         /// </summary> | ||||
|         /// <param name="document">The document to insert.</param> | ||||
|         void InsertOne(TDocument document); | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Asynchronously inserts a single document into the collection. | ||||
|         /// </summary> | ||||
|         /// <param name="document">The document to insert.</param> | ||||
|         /// <returns>A <see cref="Task"/> representing the asynchronous operation.</returns> | ||||
|         Task InsertOneAsync(TDocument document); | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Inserts multiple documents into the collection. | ||||
|         /// </summary> | ||||
|         /// <param name="documents">The collection of documents to insert.</param> | ||||
|         void InsertMany(ICollection<TDocument> documents); | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Asynchronously inserts multiple documents into the collection. | ||||
|         /// </summary> | ||||
|         /// <param name="documents">The collection of documents to insert.</param> | ||||
|         /// <returns>A <see cref="Task"/> representing the asynchronous operation.</returns> | ||||
|         Task InsertManyAsync(ICollection<TDocument> documents); | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Replaces an existing document with a new one. | ||||
|         /// </summary> | ||||
|         /// <param name="document">The document to replace the existing one.</param> | ||||
|         void ReplaceOne(TDocument document); | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Asynchronously replaces an existing document with a new one. | ||||
|         /// </summary> | ||||
|         /// <param name="document">The document to replace the existing one.</param> | ||||
|         /// <returns>A <see cref="Task"/> representing the asynchronous operation.</returns> | ||||
|         Task ReplaceOneAsync(TDocument document); | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Deletes a single document by the provided filter expression. | ||||
|         /// </summary> | ||||
|         /// <param name="filterExpression">An expression used to filter the documents to delete.</param> | ||||
|         void DeleteOne(Expression<Func<TDocument, bool>> filterExpression); | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Asynchronously deletes a single document by the provided filter expression. | ||||
|         /// </summary> | ||||
|         /// <param name="filterExpression">An expression used to filter the documents to delete.</param> | ||||
|         /// <returns>A <see cref="Task"/> representing the asynchronous operation.</returns> | ||||
|         Task<TDocument> DeleteOneAsync(Expression<Func<TDocument, bool>> filterExpression); | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Deletes a single document by its identifier. | ||||
|         /// </summary> | ||||
|         /// <param name="id">The identifier of the document to delete.</param> | ||||
|         void DeleteById(string id); | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Asynchronously deletes a single document by its identifier. | ||||
|         /// </summary> | ||||
|         /// <param name="id">The identifier of the document to delete.</param> | ||||
|         /// <returns>A <see cref="Task"/> representing the asynchronous operation.</returns> | ||||
|         Task DeleteByIdAsync(string id); | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Deletes multiple documents that match the provided filter expression. | ||||
|         /// </summary> | ||||
|         /// <param name="filterExpression">An expression used to filter the documents to delete.</param> | ||||
|         void DeleteMany(Expression<Func<TDocument, bool>> filterExpression); | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Asynchronously deletes multiple documents that match the provided filter expression. | ||||
|         /// </summary> | ||||
|         /// <param name="filterExpression">An expression used to filter the documents to delete.</param> | ||||
|         /// <returns>A <see cref="Task"/> representing the asynchronous operation.</returns> | ||||
|         Task DeleteManyAsync(Expression<Func<TDocument, bool>> filterExpression); | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 Sergio Matias Urquin
					Sergio Matias Urquin