fixed various warnings
This commit is contained in:
@@ -62,18 +62,18 @@ namespace CoreIntegrationTests.Infrastructure
|
||||
}
|
||||
|
||||
#region IDisposable Support
|
||||
private bool disposedValue = false; // Pour détecter les appels redondants
|
||||
private bool _disposedValue; // Pour détecter les appels redondants
|
||||
|
||||
protected virtual void Dispose(bool disposing)
|
||||
{
|
||||
if (!disposedValue)
|
||||
if (!_disposedValue)
|
||||
{
|
||||
if (disposing)
|
||||
{
|
||||
Cleanup();
|
||||
}
|
||||
|
||||
disposedValue = true;
|
||||
_disposedValue = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -5,8 +5,8 @@ namespace CoreIntegrationTests.Infrastructure
|
||||
{
|
||||
internal static class MongoDbConfig
|
||||
{
|
||||
private static bool _initialized = false;
|
||||
private static object _initializationLock = new object();
|
||||
private static bool _initialized;
|
||||
private static object _initializationLock = new();
|
||||
private static object _initializationTarget;
|
||||
|
||||
public static void EnsureConfigured()
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
using MongoDbGenericRepository;
|
||||
using MongoDbGenericRepository.Models;
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
@@ -8,12 +6,12 @@ using System.Linq.Expressions;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using MongoDbGenericRepository.Models;
|
||||
using Xunit;
|
||||
|
||||
namespace CoreIntegrationTests.Infrastructure
|
||||
{
|
||||
public abstract partial class MongoDbDocumentTestBase<T> :
|
||||
IClassFixture<MongoDbTestFixture<T, Guid>>
|
||||
public abstract partial class MongoDbDocumentTestBase<T>
|
||||
where T : TestDoc, new()
|
||||
{
|
||||
|
||||
@@ -74,7 +72,7 @@ namespace CoreIntegrationTests.Infrastructure
|
||||
// Arrange
|
||||
var document = CreateTestDocument();
|
||||
// Act
|
||||
SUT.AddOne<T>(document);
|
||||
SUT.AddOne(document);
|
||||
// Assert
|
||||
long count = string.IsNullOrEmpty(PartitionKey) ? SUT.Count<T>(e => e.Id.Equals(document.Id))
|
||||
: SUT.Count<T>(e => e.Id.Equals(document.Id), PartitionKey);
|
||||
@@ -87,7 +85,7 @@ namespace CoreIntegrationTests.Infrastructure
|
||||
// Arrange
|
||||
var document = CreateTestDocument();
|
||||
// Act
|
||||
await SUT.AddOneAsync<T>(document);
|
||||
await SUT.AddOneAsync(document);
|
||||
// Assert
|
||||
long count = string.IsNullOrEmpty(PartitionKey) ? SUT.Count<T>(e => e.Id.Equals(document.Id))
|
||||
: SUT.Count<T>(e => e.Id.Equals(document.Id), PartitionKey);
|
||||
@@ -100,7 +98,7 @@ namespace CoreIntegrationTests.Infrastructure
|
||||
// Arrange
|
||||
var documents = CreateTestDocuments(2);
|
||||
// Act
|
||||
SUT.AddMany<T>(documents);
|
||||
SUT.AddMany(documents);
|
||||
// Assert
|
||||
long count = string.IsNullOrEmpty(PartitionKey) ? SUT.Count<T>(e => e.Id.Equals(documents[0].Id)
|
||||
|| e.Id.Equals(documents[1].Id))
|
||||
@@ -123,7 +121,7 @@ namespace CoreIntegrationTests.Infrastructure
|
||||
((IPartitionedDocument)documents[2]).PartitionKey = secondPartitionKey;
|
||||
((IPartitionedDocument)documents[3]).PartitionKey = secondPartitionKey;
|
||||
// Act
|
||||
SUT.AddMany<T>(documents);
|
||||
SUT.AddMany(documents);
|
||||
// Assert
|
||||
long count = SUT.Count<T>(e => e.Id.Equals(documents[0].Id) || e.Id.Equals(documents[1].Id), PartitionKey);
|
||||
long secondPartitionCount = SUT.Count<T>(e => e.Id.Equals(documents[2].Id) || e.Id.Equals(documents[3].Id), secondPartitionKey);
|
||||
@@ -141,7 +139,7 @@ namespace CoreIntegrationTests.Infrastructure
|
||||
// Arrange
|
||||
var documents = CreateTestDocuments(2);
|
||||
// Act
|
||||
await SUT.AddManyAsync<T>(documents);
|
||||
await SUT.AddManyAsync(documents);
|
||||
// Assert
|
||||
long count = string.IsNullOrEmpty(PartitionKey) ? SUT.Count<T>(e => e.Id.Equals(documents[0].Id)
|
||||
|| e.Id.Equals(documents[1].Id))
|
||||
@@ -164,7 +162,7 @@ namespace CoreIntegrationTests.Infrastructure
|
||||
((IPartitionedDocument)documents[2]).PartitionKey = secondPartitionKey;
|
||||
((IPartitionedDocument)documents[3]).PartitionKey = secondPartitionKey;
|
||||
// Act
|
||||
await SUT.AddManyAsync<T>(documents);
|
||||
await SUT.AddManyAsync(documents);
|
||||
// Assert
|
||||
long count = SUT.Count<T>(e => e.Id.Equals(documents[0].Id) || e.Id.Equals(documents[1].Id), PartitionKey);
|
||||
long secondPartitionCount = SUT.Count<T>(e => e.Id.Equals(documents[2].Id) || e.Id.Equals(documents[3].Id), secondPartitionKey);
|
||||
@@ -185,7 +183,7 @@ namespace CoreIntegrationTests.Infrastructure
|
||||
{
|
||||
// Arrange
|
||||
var document = CreateTestDocument();
|
||||
SUT.AddOne<T>(document);
|
||||
await SUT.AddOneAsync(document);
|
||||
// Act
|
||||
var result = await SUT.GetByIdAsync<T>(document.Id, PartitionKey);
|
||||
// Assert
|
||||
@@ -197,7 +195,7 @@ namespace CoreIntegrationTests.Infrastructure
|
||||
{
|
||||
// Arrange
|
||||
var document = CreateTestDocument();
|
||||
SUT.AddOne<T>(document);
|
||||
SUT.AddOne(document);
|
||||
// Act
|
||||
var result = SUT.GetById<T>(document.Id, PartitionKey);
|
||||
// Assert
|
||||
@@ -209,7 +207,7 @@ namespace CoreIntegrationTests.Infrastructure
|
||||
{
|
||||
// Arrange
|
||||
var document = CreateTestDocument();
|
||||
SUT.AddOne<T>(document);
|
||||
SUT.AddOne(document);
|
||||
// Act
|
||||
var result = await SUT.GetOneAsync<T>(x => x.Id.Equals(document.Id), PartitionKey);
|
||||
// Assert
|
||||
@@ -221,7 +219,7 @@ namespace CoreIntegrationTests.Infrastructure
|
||||
{
|
||||
// Arrange
|
||||
var document = CreateTestDocument();
|
||||
SUT.AddOne<T>(document);
|
||||
SUT.AddOne(document);
|
||||
// Act
|
||||
var result = SUT.GetOne<T>(x => x.Id.Equals(document.Id), PartitionKey);
|
||||
// Assert
|
||||
@@ -233,7 +231,7 @@ namespace CoreIntegrationTests.Infrastructure
|
||||
{
|
||||
// Arrange
|
||||
var document = CreateTestDocument();
|
||||
SUT.AddOne<T>(document);
|
||||
SUT.AddOne(document);
|
||||
// Act
|
||||
var cursor = SUT.GetCursor<T>(x => x.Id.Equals(document.Id), PartitionKey);
|
||||
var count = cursor.CountDocuments();
|
||||
@@ -246,7 +244,7 @@ namespace CoreIntegrationTests.Infrastructure
|
||||
{
|
||||
// Arrange
|
||||
var document = CreateTestDocument();
|
||||
SUT.AddOne<T>(document);
|
||||
SUT.AddOne(document);
|
||||
// Act
|
||||
var result = await SUT.AnyAsync<T>(x => x.Id.Equals(document.Id), PartitionKey);
|
||||
// Assert
|
||||
@@ -258,7 +256,7 @@ namespace CoreIntegrationTests.Infrastructure
|
||||
{
|
||||
// Arrange
|
||||
var document = CreateTestDocument();
|
||||
SUT.AddOne<T>(document);
|
||||
SUT.AddOne(document);
|
||||
// Act
|
||||
var result = await SUT.AnyAsync<T>(x => x.Id.Equals(Guid.NewGuid()), PartitionKey);
|
||||
// Assert
|
||||
@@ -270,7 +268,7 @@ namespace CoreIntegrationTests.Infrastructure
|
||||
{
|
||||
// Arrange
|
||||
var document = CreateTestDocument();
|
||||
SUT.AddOne<T>(document);
|
||||
SUT.AddOne(document);
|
||||
// Act
|
||||
var result = SUT.Any<T>(x => x.Id.Equals(document.Id), PartitionKey);
|
||||
// Assert
|
||||
@@ -282,7 +280,7 @@ namespace CoreIntegrationTests.Infrastructure
|
||||
{
|
||||
// Arrange
|
||||
var document = CreateTestDocument();
|
||||
SUT.AddOne<T>(document);
|
||||
SUT.AddOne(document);
|
||||
// Act
|
||||
var result = SUT.Any<T>(x => x.Id.Equals(Guid.NewGuid()), PartitionKey);
|
||||
// Assert
|
||||
@@ -296,7 +294,7 @@ namespace CoreIntegrationTests.Infrastructure
|
||||
var documents = CreateTestDocuments(5);
|
||||
var content = GetContent();
|
||||
documents.ForEach(e => e.SomeContent = content);
|
||||
SUT.AddMany<T>(documents);
|
||||
SUT.AddMany(documents);
|
||||
// Act
|
||||
var result = await SUT.GetAllAsync<T>(x => x.SomeContent == content, PartitionKey);
|
||||
// Assert
|
||||
@@ -310,7 +308,7 @@ namespace CoreIntegrationTests.Infrastructure
|
||||
var documents = CreateTestDocuments(5);
|
||||
var content = GetContent();
|
||||
documents.ForEach(e => e.SomeContent = content);
|
||||
SUT.AddMany<T>(documents);
|
||||
SUT.AddMany(documents);
|
||||
// Act
|
||||
var result = SUT.GetAll<T>(x => x.SomeContent == content, PartitionKey);
|
||||
// Assert
|
||||
@@ -324,7 +322,7 @@ namespace CoreIntegrationTests.Infrastructure
|
||||
var documents = CreateTestDocuments(5);
|
||||
var content = GetContent();
|
||||
documents.ForEach(e => e.SomeContent = content);
|
||||
SUT.AddMany<T>(documents);
|
||||
SUT.AddMany(documents);
|
||||
// Act
|
||||
var result = await SUT.CountAsync<T>(x => x.SomeContent == content, PartitionKey);
|
||||
// Assert
|
||||
@@ -338,7 +336,7 @@ namespace CoreIntegrationTests.Infrastructure
|
||||
var documents = CreateTestDocuments(5);
|
||||
var content = GetContent();
|
||||
documents.ForEach(e => e.SomeContent = content);
|
||||
SUT.AddMany<T>(documents);
|
||||
SUT.AddMany(documents);
|
||||
// Act
|
||||
var result = SUT.Count<T>(x => x.SomeContent == content, PartitionKey);
|
||||
// Assert
|
||||
@@ -354,9 +352,9 @@ namespace CoreIntegrationTests.Infrastructure
|
||||
{
|
||||
// Arrange
|
||||
var document = CreateTestDocument();
|
||||
SUT.AddOne<T>(document);
|
||||
SUT.AddOne(document);
|
||||
// Act
|
||||
var result = SUT.DeleteOne<T>(document);
|
||||
var result = SUT.DeleteOne(document);
|
||||
// Assert
|
||||
Assert.True(1 == result);
|
||||
Assert.False(SUT.Any<T>(e => e.Id.Equals(document.Id), PartitionKey), GetTestName());
|
||||
@@ -367,7 +365,7 @@ namespace CoreIntegrationTests.Infrastructure
|
||||
{
|
||||
// Arrange
|
||||
var document = CreateTestDocument();
|
||||
SUT.AddOne<T>(document);
|
||||
SUT.AddOne(document);
|
||||
// Act
|
||||
var result = SUT.DeleteOne<T>(e => e.Id.Equals(document.Id), PartitionKey);
|
||||
// Assert
|
||||
@@ -380,9 +378,9 @@ namespace CoreIntegrationTests.Infrastructure
|
||||
{
|
||||
// Arrange
|
||||
var document = CreateTestDocument();
|
||||
SUT.AddOne<T>(document);
|
||||
SUT.AddOne(document);
|
||||
// Act
|
||||
var result = await SUT.DeleteOneAsync<T>(document);
|
||||
var result = await SUT.DeleteOneAsync(document);
|
||||
// Assert
|
||||
Assert.True(1 == result);
|
||||
Assert.False(SUT.Any<T>(e => e.Id.Equals(document.Id), PartitionKey), GetTestName());
|
||||
@@ -393,7 +391,7 @@ namespace CoreIntegrationTests.Infrastructure
|
||||
{
|
||||
// Arrange
|
||||
var document = CreateTestDocument();
|
||||
SUT.AddOne<T>(document);
|
||||
SUT.AddOne(document);
|
||||
// Act
|
||||
var result = await SUT.DeleteOneAsync<T>(e => e.Id.Equals(document.Id), PartitionKey);
|
||||
// Assert
|
||||
@@ -408,7 +406,7 @@ namespace CoreIntegrationTests.Infrastructure
|
||||
var criteria = $"{GetTestName()}.{DocumentTypeName}";
|
||||
var documents = CreateTestDocuments(5);
|
||||
documents.ForEach(e => e.SomeContent = criteria);
|
||||
SUT.AddMany<T>(documents);
|
||||
SUT.AddMany(documents);
|
||||
// Act
|
||||
var result = await SUT.DeleteManyAsync<T>(e => e.SomeContent == criteria, PartitionKey);
|
||||
// Assert
|
||||
@@ -432,9 +430,9 @@ namespace CoreIntegrationTests.Infrastructure
|
||||
((IPartitionedDocument)documents[4]).PartitionKey = secondKey;
|
||||
}
|
||||
|
||||
SUT.AddMany<T>(documents);
|
||||
SUT.AddMany(documents);
|
||||
// Act
|
||||
var result = await SUT.DeleteManyAsync<T>(documents);
|
||||
var result = await SUT.DeleteManyAsync(documents);
|
||||
// Assert
|
||||
Assert.True(5 == result);
|
||||
Assert.False(SUT.Any<T>(e => e.SomeContent == criteria, PartitionKey), GetTestName());
|
||||
@@ -451,7 +449,7 @@ namespace CoreIntegrationTests.Infrastructure
|
||||
var criteria = $"{GetTestName()}.{DocumentTypeName}";
|
||||
var documents = CreateTestDocuments(5);
|
||||
documents.ForEach(e => e.SomeContent = criteria);
|
||||
SUT.AddMany<T>(documents);
|
||||
SUT.AddMany(documents);
|
||||
// Act
|
||||
var result = SUT.DeleteMany<T>(e => e.SomeContent == criteria, PartitionKey);
|
||||
// Assert
|
||||
@@ -475,9 +473,9 @@ namespace CoreIntegrationTests.Infrastructure
|
||||
((IPartitionedDocument)documents[4]).PartitionKey = secondKey;
|
||||
}
|
||||
|
||||
SUT.AddMany<T>(documents);
|
||||
SUT.AddMany(documents);
|
||||
// Act
|
||||
var result = SUT.DeleteMany<T>(documents);
|
||||
var result = SUT.DeleteMany(documents);
|
||||
// Assert
|
||||
Assert.True(5 == result);
|
||||
Assert.False(SUT.Any<T>(e => e.SomeContent == criteria, PartitionKey), GetTestName());
|
||||
@@ -500,7 +498,7 @@ namespace CoreIntegrationTests.Infrastructure
|
||||
var document = CreateTestDocument();
|
||||
document.SomeContent = someContent;
|
||||
document.Nested.SomeDate = someDate;
|
||||
SUT.AddOne<T>(document);
|
||||
SUT.AddOne(document);
|
||||
// Act
|
||||
var result = await SUT.ProjectOneAsync<T, MyTestProjection>(
|
||||
x => x.Id.Equals(document.Id),
|
||||
@@ -526,7 +524,7 @@ namespace CoreIntegrationTests.Infrastructure
|
||||
var document = CreateTestDocument();
|
||||
document.SomeContent = someContent;
|
||||
document.Nested.SomeDate = someDate;
|
||||
SUT.AddOne<T>(document);
|
||||
SUT.AddOne(document);
|
||||
// Act
|
||||
var result = SUT.ProjectOne<T, MyTestProjection>(
|
||||
x => x.Id.Equals(document.Id),
|
||||
@@ -556,7 +554,7 @@ namespace CoreIntegrationTests.Infrastructure
|
||||
e.Nested.SomeDate = someDate;
|
||||
});
|
||||
|
||||
SUT.AddMany<T>(documents);
|
||||
SUT.AddMany(documents);
|
||||
// Act
|
||||
var result = await SUT.ProjectManyAsync<T, MyTestProjection>(
|
||||
x => x.SomeContent == someContent,
|
||||
@@ -586,7 +584,7 @@ namespace CoreIntegrationTests.Infrastructure
|
||||
e.Nested.SomeDate = someDate;
|
||||
});
|
||||
|
||||
SUT.AddMany<T>(documents);
|
||||
SUT.AddMany(documents);
|
||||
// Act
|
||||
var result = SUT.ProjectMany<T, MyTestProjection>(
|
||||
x => x.SomeContent == someContent,
|
||||
@@ -619,7 +617,7 @@ namespace CoreIntegrationTests.Infrastructure
|
||||
e.Nested.SomeDate = e.Nested.SomeDate.AddDays(i++);
|
||||
e.SomeContent = criteria;
|
||||
});
|
||||
SUT.AddMany<T>(documents);
|
||||
SUT.AddMany(documents);
|
||||
var expectedMax = documents.OrderByDescending(e => e.Nested.SomeDate).First();
|
||||
|
||||
// Act
|
||||
@@ -642,7 +640,7 @@ namespace CoreIntegrationTests.Infrastructure
|
||||
e.Nested.SomeDate = e.Nested.SomeDate.AddDays(i++);
|
||||
e.SomeContent = criteria;
|
||||
});
|
||||
SUT.AddMany<T>(documents);
|
||||
SUT.AddMany(documents);
|
||||
var expectedMax = documents.OrderByDescending(e => e.Nested.SomeDate).First();
|
||||
|
||||
// Act
|
||||
@@ -665,7 +663,7 @@ namespace CoreIntegrationTests.Infrastructure
|
||||
e.Nested.SomeDate = e.Nested.SomeDate.AddDays(i++);
|
||||
e.SomeContent = criteria;
|
||||
});
|
||||
SUT.AddMany<T>(documents);
|
||||
SUT.AddMany(documents);
|
||||
var expectedMin = documents.OrderBy(e => e.Nested.SomeDate).First();
|
||||
|
||||
// Act
|
||||
@@ -688,7 +686,7 @@ namespace CoreIntegrationTests.Infrastructure
|
||||
e.Nested.SomeDate = e.Nested.SomeDate.AddDays(i++);
|
||||
e.SomeContent = criteria;
|
||||
});
|
||||
SUT.AddMany<T>(documents);
|
||||
SUT.AddMany(documents);
|
||||
var expectedMin = documents.OrderBy(e => e.Nested.SomeDate).First();
|
||||
|
||||
// Act
|
||||
@@ -711,7 +709,7 @@ namespace CoreIntegrationTests.Infrastructure
|
||||
e.Nested.SomeDate = e.Nested.SomeDate.AddDays(i++);
|
||||
e.SomeContent = criteria;
|
||||
});
|
||||
SUT.AddMany<T>(documents);
|
||||
SUT.AddMany(documents);
|
||||
var expectedMin = documents.OrderBy(e => e.Nested.SomeDate).First();
|
||||
|
||||
// Act
|
||||
@@ -734,7 +732,7 @@ namespace CoreIntegrationTests.Infrastructure
|
||||
e.Nested.SomeDate = e.Nested.SomeDate.AddDays(i++);
|
||||
e.SomeContent = criteria;
|
||||
});
|
||||
SUT.AddMany<T>(documents);
|
||||
SUT.AddMany(documents);
|
||||
var expectedMin = documents.OrderBy(e => e.Nested.SomeDate).First();
|
||||
|
||||
// Act
|
||||
@@ -757,7 +755,7 @@ namespace CoreIntegrationTests.Infrastructure
|
||||
e.Nested.SomeDate = e.Nested.SomeDate.AddDays(i++);
|
||||
e.SomeContent = criteria;
|
||||
});
|
||||
SUT.AddMany<T>(documents);
|
||||
SUT.AddMany(documents);
|
||||
var expectedMax = documents.OrderByDescending(e => e.Nested.SomeDate).First();
|
||||
|
||||
// Act
|
||||
@@ -780,7 +778,7 @@ namespace CoreIntegrationTests.Infrastructure
|
||||
e.Nested.SomeDate = e.Nested.SomeDate.AddDays(i++);
|
||||
e.SomeContent = criteria;
|
||||
});
|
||||
SUT.AddMany<T>(documents);
|
||||
SUT.AddMany(documents);
|
||||
var expectedMin = documents.OrderByDescending(e => e.Nested.SomeDate).First();
|
||||
|
||||
// Act
|
||||
@@ -910,7 +908,7 @@ namespace CoreIntegrationTests.Infrastructure
|
||||
// Act
|
||||
Expression <Func<T, object>> ex = x => x.SomeContent2;
|
||||
Expression <Func<T, object>> ex2 = x => x.SomeContent3;
|
||||
var result = await SUT.CreateCombinedTextIndexAsync<T>(new[] { ex, ex2 }, null, PartitionKey);
|
||||
var result = await SUT.CreateCombinedTextIndexAsync(new[] { ex, ex2 }, null, PartitionKey);
|
||||
|
||||
// Assert
|
||||
var listOfIndexNames = await SUT.GetIndexesNamesAsync<T>(PartitionKey);
|
||||
@@ -937,7 +935,7 @@ namespace CoreIntegrationTests.Infrastructure
|
||||
e.Nested.SomeAmount = 5m;
|
||||
e.SomeContent = criteria;
|
||||
});
|
||||
SUT.AddMany<T>(documents);
|
||||
SUT.AddMany(documents);
|
||||
var expectedSum = documents.Sum(e => e.Nested.SomeAmount);
|
||||
|
||||
// Act
|
||||
@@ -960,7 +958,7 @@ namespace CoreIntegrationTests.Infrastructure
|
||||
e.Nested.SomeAmount = 5m;
|
||||
e.SomeContent = criteria;
|
||||
});
|
||||
SUT.AddMany<T>(documents);
|
||||
SUT.AddMany(documents);
|
||||
var expectedSum = documents.Sum(e => e.Nested.SomeAmount);
|
||||
|
||||
// Act
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
using MongoDB.Driver;
|
||||
using MongoDbGenericRepository.Models;
|
||||
using System;
|
||||
|
||||
namespace MongoDbGenericRepository
|
||||
{
|
||||
|
||||
@@ -2,13 +2,16 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Linq.Expressions;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using MongoDB.Driver;
|
||||
using MongoDbGenericRepository.Models;
|
||||
|
||||
namespace MongoDbGenericRepository
|
||||
{
|
||||
/// <summary>
|
||||
/// read only repository interface
|
||||
/// </summary>
|
||||
/// <typeparam name="TKey">The key type</typeparam>
|
||||
public interface IReadOnlyMongoRepository<TKey> where TKey : IEquatable<TKey>
|
||||
{
|
||||
#region Read
|
||||
|
||||
@@ -11,6 +11,9 @@ namespace MongoDbGenericRepository
|
||||
{
|
||||
private volatile IMongoDbEraser _mongoDbEraser;
|
||||
|
||||
/// <summary>
|
||||
/// The MongoDbEraser used to delete documents.
|
||||
/// </summary>
|
||||
protected virtual IMongoDbEraser MongoDbEraser
|
||||
{
|
||||
get
|
||||
|
||||
@@ -15,6 +15,9 @@ namespace MongoDbGenericRepository
|
||||
{
|
||||
private volatile IMongoDbIndexHandler _mongoDbIndexHandler;
|
||||
|
||||
/// <summary>
|
||||
/// The MongoDb accessor to manage indexes.
|
||||
/// </summary>
|
||||
protected virtual IMongoDbIndexHandler MongoDbIndexHandler
|
||||
{
|
||||
get
|
||||
@@ -37,7 +40,6 @@ namespace MongoDbGenericRepository
|
||||
/// Returns the names of the indexes present on a collection.
|
||||
/// </summary>
|
||||
/// <typeparam name="TDocument">The type representing a Document.</typeparam>
|
||||
/// <typeparam name="TKey">The type of the primary key for a Document.</typeparam>
|
||||
/// <param name="partitionKey">An optional partition key</param>
|
||||
/// <returns>A list containing the names of the indexes on on the concerned collection.</returns>
|
||||
public async Task<List<string>> GetIndexesNamesAsync<TDocument>(string partitionKey = null)
|
||||
@@ -50,9 +52,10 @@ namespace MongoDbGenericRepository
|
||||
/// Returns the names of the indexes present on a collection.
|
||||
/// </summary>
|
||||
/// <typeparam name="TDocument">The type representing a Document.</typeparam>
|
||||
/// <typeparam name="TKey">The type for the key of the document.</typeparam>
|
||||
/// <param name="partitionKey">An optional partition key</param>
|
||||
/// <returns>A list containing the names of the indexes on on the concerned collection.</returns>
|
||||
public async virtual Task<List<string>> GetIndexesNamesAsync<TDocument, TKey>(string partitionKey = null)
|
||||
public virtual async Task<List<string>> GetIndexesNamesAsync<TDocument, TKey>(string partitionKey = null)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>
|
||||
{
|
||||
@@ -86,7 +89,7 @@ namespace MongoDbGenericRepository
|
||||
/// <param name="indexCreationOptions">Options for creating an index.</param>
|
||||
/// <param name="partitionKey">An optional partition key.</param>
|
||||
/// <returns>The result of the create index operation.</returns>
|
||||
public async virtual Task<string> CreateTextIndexAsync<TDocument, TKey>(Expression<Func<TDocument, object>> field, IndexCreationOptions indexCreationOptions = null, string partitionKey = null)
|
||||
public virtual async Task<string> CreateTextIndexAsync<TDocument, TKey>(Expression<Func<TDocument, object>> field, IndexCreationOptions indexCreationOptions = null, string partitionKey = null)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>
|
||||
{
|
||||
@@ -120,7 +123,7 @@ namespace MongoDbGenericRepository
|
||||
/// <param name="indexCreationOptions">Options for creating an index.</param>
|
||||
/// <param name="partitionKey">An optional partition key.</param>
|
||||
/// <returns>The result of the create index operation.</returns>
|
||||
public async virtual Task<string> CreateAscendingIndexAsync<TDocument, TKey>(Expression<Func<TDocument, object>> field, IndexCreationOptions indexCreationOptions = null, string partitionKey = null)
|
||||
public virtual async Task<string> CreateAscendingIndexAsync<TDocument, TKey>(Expression<Func<TDocument, object>> field, IndexCreationOptions indexCreationOptions = null, string partitionKey = null)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>
|
||||
{
|
||||
@@ -144,7 +147,7 @@ namespace MongoDbGenericRepository
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public async virtual Task<string> CreateDescendingIndexAsync<TDocument, TKey>(Expression<Func<TDocument, object>> field, IndexCreationOptions indexCreationOptions = null, string partitionKey = null)
|
||||
public virtual async Task<string> CreateDescendingIndexAsync<TDocument, TKey>(Expression<Func<TDocument, object>> field, IndexCreationOptions indexCreationOptions = null, string partitionKey = null)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>
|
||||
{
|
||||
@@ -168,7 +171,7 @@ namespace MongoDbGenericRepository
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public async virtual Task<string> CreateHashedIndexAsync<TDocument, TKey>(Expression<Func<TDocument, object>> field, IndexCreationOptions indexCreationOptions = null, string partitionKey = null)
|
||||
public virtual async Task<string> CreateHashedIndexAsync<TDocument, TKey>(Expression<Func<TDocument, object>> field, IndexCreationOptions indexCreationOptions = null, string partitionKey = null)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>
|
||||
{
|
||||
@@ -192,7 +195,7 @@ namespace MongoDbGenericRepository
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public async virtual Task<string> CreateCombinedTextIndexAsync<TDocument, TKey>(IEnumerable<Expression<Func<TDocument, object>>> fields, IndexCreationOptions indexCreationOptions = null, string partitionKey = null)
|
||||
public virtual async Task<string> CreateCombinedTextIndexAsync<TDocument, TKey>(IEnumerable<Expression<Func<TDocument, object>>> fields, IndexCreationOptions indexCreationOptions = null, string partitionKey = null)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>
|
||||
{
|
||||
@@ -212,7 +215,7 @@ namespace MongoDbGenericRepository
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public async virtual Task DropIndexAsync<TDocument, TKey>(string indexName, string partitionKey = null)
|
||||
public virtual async Task DropIndexAsync<TDocument, TKey>(string indexName, string partitionKey = null)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>
|
||||
{
|
||||
|
||||
@@ -15,6 +15,9 @@ namespace MongoDbGenericRepository
|
||||
{
|
||||
private volatile IMongoDbUpdater _mongoDbUpdater;
|
||||
|
||||
/// <summary>
|
||||
/// The MongoDb accessor to update data.
|
||||
/// </summary>
|
||||
protected virtual IMongoDbUpdater MongoDbUpdater
|
||||
{
|
||||
get
|
||||
@@ -203,7 +206,6 @@ namespace MongoDbGenericRepository
|
||||
/// For the entities selected by the filter, applies the update you have defined in MongoDb.
|
||||
/// </summary>
|
||||
/// <typeparam name="TDocument">The type representing a Document.</typeparam>
|
||||
/// <typeparam name="TKey">The type of the primary key for a Document.</typeparam>
|
||||
/// <param name="filter">The document filter.</param>
|
||||
/// <param name="updateDefinition">The update definition to apply.</param>
|
||||
/// <param name="partitionKey">The value of the partition key.</param>
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
using MongoDB.Driver.Linq;
|
||||
using MongoDbGenericRepository.Models;
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Linq.Expressions;
|
||||
|
||||
namespace MongoDbGenericRepository.DataAccess.Base
|
||||
|
||||
@@ -6,6 +6,9 @@ using MongoDbGenericRepository.Models;
|
||||
|
||||
namespace MongoDbGenericRepository.DataAccess.Base
|
||||
{
|
||||
/// <summary>
|
||||
/// A interface for accessing the Database and its Collections.
|
||||
/// </summary>
|
||||
public interface IDataAccessBase
|
||||
{
|
||||
/// <summary>
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq.Expressions;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using MongoDB.Driver;
|
||||
using MongoDB.Driver.Linq;
|
||||
using MongoDbGenericRepository.DataAccess.Base;
|
||||
using MongoDbGenericRepository.Models;
|
||||
|
||||
namespace MongoDbGenericRepository.DataAccess.Create
|
||||
{
|
||||
/// <summary>
|
||||
/// A interface for adding documents to the Database and its Collections.
|
||||
/// </summary>
|
||||
public interface IMongoDbCreator : IDataAccessBase
|
||||
{
|
||||
/// <summary>
|
||||
@@ -57,50 +57,5 @@ namespace MongoDbGenericRepository.DataAccess.Create
|
||||
void AddMany<TDocument, TKey>(IEnumerable<TDocument> documents)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>;
|
||||
|
||||
/// <summary>
|
||||
/// Gets a IMongoQueryable for a potentially partitioned document type and a filter.
|
||||
/// </summary>
|
||||
/// <typeparam name="TDocument">The document type.</typeparam>
|
||||
/// <typeparam name="TKey">The type of the primary key.</typeparam>
|
||||
/// <param name="filter">The filter definition.</param>
|
||||
/// <param name="partitionKey">The collection partition key.</param>
|
||||
/// <returns></returns>
|
||||
IMongoQueryable<TDocument> GetQuery<TDocument, TKey>(Expression<Func<TDocument, bool>> filter, string partitionKey = null)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>;
|
||||
|
||||
/// <summary>
|
||||
/// Gets a collections for a potentially partitioned document type.
|
||||
/// </summary>
|
||||
/// <typeparam name="TDocument">The document type.</typeparam>
|
||||
/// <typeparam name="TKey">The type of the primary key.</typeparam>
|
||||
/// <param name="document">The document.</param>
|
||||
/// <returns></returns>
|
||||
IMongoCollection<TDocument> HandlePartitioned<TDocument, TKey>(TDocument document)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>;
|
||||
|
||||
/// <summary>
|
||||
/// Gets a collections for a potentially partitioned document type.
|
||||
/// </summary>
|
||||
/// <typeparam name="TDocument">The document type.</typeparam>
|
||||
/// <typeparam name="TKey">The type of the primary key.</typeparam>
|
||||
/// <param name="partitionKey">The collection partition key.</param>
|
||||
/// <returns></returns>
|
||||
IMongoCollection<TDocument> HandlePartitioned<TDocument, TKey>(string partitionKey)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>;
|
||||
|
||||
/// <summary>
|
||||
/// Gets a collections for the type TDocument with a partition key.
|
||||
/// </summary>
|
||||
/// <typeparam name="TDocument">The document type.</typeparam>
|
||||
/// <typeparam name="TKey">The type of the primary key.</typeparam>
|
||||
/// <param name="partitionKey">The collection partition key.</param>
|
||||
/// <returns></returns>
|
||||
IMongoCollection<TDocument> GetCollection<TDocument, TKey>(string partitionKey = null)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>;
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,4 @@
|
||||
using MongoDB.Driver;
|
||||
using MongoDB.Driver.Linq;
|
||||
using MongoDbGenericRepository.DataAccess.Base;
|
||||
using MongoDbGenericRepository.DataAccess.Base;
|
||||
using MongoDbGenericRepository.Models;
|
||||
using MongoDbGenericRepository.Utils;
|
||||
using System;
|
||||
@@ -69,25 +67,29 @@ namespace MongoDbGenericRepository.DataAccess.Create
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>
|
||||
{
|
||||
if (!documents.Any())
|
||||
var documentsList = documents.ToList();
|
||||
|
||||
if (!documentsList.Any())
|
||||
{
|
||||
return;
|
||||
}
|
||||
foreach (var document in documents)
|
||||
|
||||
foreach (var document in documentsList)
|
||||
{
|
||||
FormatDocument<TDocument, TKey>(document);
|
||||
}
|
||||
|
||||
// cannot use typeof(IPartitionedDocument).IsAssignableFrom(typeof(TDocument)), not available in netstandard 1.5
|
||||
if (documents.Any(e => e is IPartitionedDocument))
|
||||
if (documentsList.Any(e => e is IPartitionedDocument))
|
||||
{
|
||||
foreach (var group in documents.GroupBy(e => ((IPartitionedDocument)e).PartitionKey))
|
||||
foreach (var group in documentsList.GroupBy(e => ((IPartitionedDocument)e).PartitionKey))
|
||||
{
|
||||
await HandlePartitioned<TDocument, TKey>(group.FirstOrDefault()).InsertManyAsync(group.ToList(), null, cancellationToken);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
await GetCollection<TDocument, TKey>().InsertManyAsync(documents.ToList(), null, cancellationToken);
|
||||
await GetCollection<TDocument, TKey>().InsertManyAsync(documentsList.ToList(), null, cancellationToken);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -102,25 +104,29 @@ namespace MongoDbGenericRepository.DataAccess.Create
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>
|
||||
{
|
||||
if (!documents.Any())
|
||||
var documentList = documents.ToList();
|
||||
|
||||
if (!documentList.Any())
|
||||
{
|
||||
return;
|
||||
}
|
||||
foreach (var document in documents)
|
||||
|
||||
foreach (var document in documentList)
|
||||
{
|
||||
FormatDocument<TDocument, TKey>(document);
|
||||
}
|
||||
|
||||
// cannot use typeof(IPartitionedDocument).IsAssignableFrom(typeof(TDocument)), not available in netstandard 1.5
|
||||
if (documents.Any(e => e is IPartitionedDocument))
|
||||
if (documentList.Any(e => e is IPartitionedDocument))
|
||||
{
|
||||
foreach (var group in documents.GroupBy(e => ((IPartitionedDocument)e).PartitionKey))
|
||||
foreach (var group in documentList.GroupBy(e => ((IPartitionedDocument)e).PartitionKey))
|
||||
{
|
||||
HandlePartitioned<TDocument, TKey>(group.FirstOrDefault()).InsertMany(group.ToList());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
GetCollection<TDocument, TKey>().InsertMany(documents.ToList());
|
||||
GetCollection<TDocument, TKey>().InsertMany(documentList.ToList());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -2,13 +2,14 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq.Expressions;
|
||||
using System.Threading.Tasks;
|
||||
using MongoDB.Driver;
|
||||
using MongoDB.Driver.Linq;
|
||||
using MongoDbGenericRepository.DataAccess.Base;
|
||||
using MongoDbGenericRepository.Models;
|
||||
|
||||
namespace MongoDbGenericRepository.DataAccess.Delete
|
||||
{
|
||||
/// <summary>
|
||||
/// The MongoDbEraser interface. used to delete documents from the collections.
|
||||
/// </summary>
|
||||
public interface IMongoDbEraser : IDataAccessBase
|
||||
{
|
||||
/// <summary>
|
||||
@@ -102,50 +103,5 @@ namespace MongoDbGenericRepository.DataAccess.Delete
|
||||
long DeleteMany<TDocument, TKey>(Expression<Func<TDocument, bool>> filter, string partitionKey = null)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>;
|
||||
|
||||
/// <summary>
|
||||
/// Gets a IMongoQueryable for a potentially partitioned document type and a filter.
|
||||
/// </summary>
|
||||
/// <typeparam name="TDocument">The document type.</typeparam>
|
||||
/// <typeparam name="TKey">The type of the primary key.</typeparam>
|
||||
/// <param name="filter">The filter definition.</param>
|
||||
/// <param name="partitionKey">The collection partition key.</param>
|
||||
/// <returns></returns>
|
||||
IMongoQueryable<TDocument> GetQuery<TDocument, TKey>(Expression<Func<TDocument, bool>> filter, string partitionKey = null)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>;
|
||||
|
||||
/// <summary>
|
||||
/// Gets a collections for a potentially partitioned document type.
|
||||
/// </summary>
|
||||
/// <typeparam name="TDocument">The document type.</typeparam>
|
||||
/// <typeparam name="TKey">The type of the primary key.</typeparam>
|
||||
/// <param name="document">The document.</param>
|
||||
/// <returns></returns>
|
||||
IMongoCollection<TDocument> HandlePartitioned<TDocument, TKey>(TDocument document)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>;
|
||||
|
||||
/// <summary>
|
||||
/// Gets a collections for a potentially partitioned document type.
|
||||
/// </summary>
|
||||
/// <typeparam name="TDocument">The document type.</typeparam>
|
||||
/// <typeparam name="TKey">The type of the primary key.</typeparam>
|
||||
/// <param name="partitionKey">The collection partition key.</param>
|
||||
/// <returns></returns>
|
||||
IMongoCollection<TDocument> HandlePartitioned<TDocument, TKey>(string partitionKey)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>;
|
||||
|
||||
/// <summary>
|
||||
/// Gets a collections for the type TDocument with a partition key.
|
||||
/// </summary>
|
||||
/// <typeparam name="TDocument">The document type.</typeparam>
|
||||
/// <typeparam name="TKey">The type of the primary key.</typeparam>
|
||||
/// <param name="partitionKey">The collection partition key.</param>
|
||||
/// <returns></returns>
|
||||
IMongoCollection<TDocument> GetCollection<TDocument, TKey>(string partitionKey = null)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>;
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,4 @@
|
||||
using MongoDB.Driver;
|
||||
using MongoDB.Driver.Linq;
|
||||
using MongoDbGenericRepository.DataAccess.Base;
|
||||
using MongoDbGenericRepository.Models;
|
||||
using System;
|
||||
@@ -10,8 +9,13 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace MongoDbGenericRepository.DataAccess.Delete
|
||||
{
|
||||
/// <inheritdoc cref="MongoDbGenericRepository.DataAccess.Delete.IMongoDbEraser" />
|
||||
public class MongoDbEraser : DataAccessBase, IMongoDbEraser
|
||||
{
|
||||
/// <summary>
|
||||
/// The MongoDbEraser constructor.
|
||||
/// </summary>
|
||||
/// <param name="mongoDbContext">the MongoDb Context</param>
|
||||
public MongoDbEraser(IMongoDbContext mongoDbContext) : base(mongoDbContext)
|
||||
{
|
||||
}
|
||||
@@ -104,26 +108,27 @@ namespace MongoDbGenericRepository.DataAccess.Delete
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>
|
||||
{
|
||||
if (!documents.Any())
|
||||
var documentList = documents.ToList();
|
||||
|
||||
if (!documentList.Any())
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
// cannot use typeof(IPartitionedDocument).IsAssignableFrom(typeof(TDocument)), not available in netstandard 1.5
|
||||
if (documents.Any(e => e is IPartitionedDocument))
|
||||
if (documentList.Any(e => e is IPartitionedDocument))
|
||||
{
|
||||
long deleteCount = 0;
|
||||
foreach (var group in documents.GroupBy(e => ((IPartitionedDocument)e).PartitionKey))
|
||||
foreach (var group in documentList.GroupBy(e => ((IPartitionedDocument)e).PartitionKey))
|
||||
{
|
||||
var groupIdsTodelete = group.Select(e => e.Id).ToArray();
|
||||
deleteCount += (await HandlePartitioned<TDocument, TKey>(group.FirstOrDefault()).DeleteManyAsync(x => groupIdsTodelete.Contains(x.Id))).DeletedCount;
|
||||
var groupIdsToDelete = group.Select(e => e.Id).ToArray();
|
||||
deleteCount += (await HandlePartitioned<TDocument, TKey>(group.FirstOrDefault()).DeleteManyAsync(x => groupIdsToDelete.Contains(x.Id))).DeletedCount;
|
||||
}
|
||||
return deleteCount;
|
||||
}
|
||||
else
|
||||
{
|
||||
var idsTodelete = documents.Select(e => e.Id).ToArray();
|
||||
return (await HandlePartitioned<TDocument, TKey>(documents.FirstOrDefault()).DeleteManyAsync(x => idsTodelete.Contains(x.Id))).DeletedCount;
|
||||
}
|
||||
|
||||
var idsToDelete = documentList.Select(e => e.Id).ToArray();
|
||||
return (await HandlePartitioned<TDocument, TKey>(documentList.FirstOrDefault()).DeleteManyAsync(x => idsToDelete.Contains(x.Id))).DeletedCount;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -137,26 +142,27 @@ namespace MongoDbGenericRepository.DataAccess.Delete
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>
|
||||
{
|
||||
if (!documents.Any())
|
||||
var documentList = documents.ToList();
|
||||
|
||||
if (!documentList.Any())
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
// cannot use typeof(IPartitionedDocument).IsAssignableFrom(typeof(TDocument)), not available in netstandard 1.5
|
||||
if (documents.Any(e => e is IPartitionedDocument))
|
||||
if (documentList.Any(e => e is IPartitionedDocument))
|
||||
{
|
||||
long deleteCount = 0;
|
||||
foreach (var group in documents.GroupBy(e => ((IPartitionedDocument)e).PartitionKey))
|
||||
foreach (var group in documentList.GroupBy(e => ((IPartitionedDocument)e).PartitionKey))
|
||||
{
|
||||
var groupIdsTodelete = group.Select(e => e.Id).ToArray();
|
||||
deleteCount += (HandlePartitioned<TDocument, TKey>(group.FirstOrDefault()).DeleteMany(x => groupIdsTodelete.Contains(x.Id))).DeletedCount;
|
||||
var groupIdsToDelete = group.Select(e => e.Id).ToArray();
|
||||
deleteCount += (HandlePartitioned<TDocument, TKey>(group.FirstOrDefault()).DeleteMany(x => groupIdsToDelete.Contains(x.Id))).DeletedCount;
|
||||
}
|
||||
return deleteCount;
|
||||
}
|
||||
else
|
||||
{
|
||||
var idsTodelete = documents.Select(e => e.Id).ToArray();
|
||||
return (HandlePartitioned<TDocument, TKey>(documents.FirstOrDefault()).DeleteMany(x => idsTodelete.Contains(x.Id))).DeletedCount;
|
||||
}
|
||||
|
||||
var idsToDelete = documentList.Select(e => e.Id).ToArray();
|
||||
return HandlePartitioned<TDocument, TKey>(documentList.FirstOrDefault()).DeleteMany(x => idsToDelete.Contains(x.Id)).DeletedCount;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -2,13 +2,14 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq.Expressions;
|
||||
using System.Threading.Tasks;
|
||||
using MongoDB.Driver;
|
||||
using MongoDB.Driver.Linq;
|
||||
using MongoDbGenericRepository.DataAccess.Base;
|
||||
using MongoDbGenericRepository.Models;
|
||||
|
||||
namespace MongoDbGenericRepository.DataAccess.Index
|
||||
{
|
||||
/// <summary>
|
||||
/// The MongoDbIndexHandler interface. used to create indexes on collections.
|
||||
/// </summary>
|
||||
public interface IMongoDbIndexHandler : IDataAccessBase
|
||||
{
|
||||
/// <summary>
|
||||
@@ -107,50 +108,5 @@ namespace MongoDbGenericRepository.DataAccess.Index
|
||||
Task DropIndexAsync<TDocument, TKey>(string indexName, string partitionKey = null)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>;
|
||||
|
||||
/// <summary>
|
||||
/// Gets a IMongoQueryable for a potentially partitioned document type and a filter.
|
||||
/// </summary>
|
||||
/// <typeparam name="TDocument">The document type.</typeparam>
|
||||
/// <typeparam name="TKey">The type of the primary key.</typeparam>
|
||||
/// <param name="filter">The filter definition.</param>
|
||||
/// <param name="partitionKey">The collection partition key.</param>
|
||||
/// <returns></returns>
|
||||
IMongoQueryable<TDocument> GetQuery<TDocument, TKey>(Expression<Func<TDocument, bool>> filter, string partitionKey = null)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>;
|
||||
|
||||
/// <summary>
|
||||
/// Gets a collections for a potentially partitioned document type.
|
||||
/// </summary>
|
||||
/// <typeparam name="TDocument">The document type.</typeparam>
|
||||
/// <typeparam name="TKey">The type of the primary key.</typeparam>
|
||||
/// <param name="document">The document.</param>
|
||||
/// <returns></returns>
|
||||
IMongoCollection<TDocument> HandlePartitioned<TDocument, TKey>(TDocument document)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>;
|
||||
|
||||
/// <summary>
|
||||
/// Gets a collections for a potentially partitioned document type.
|
||||
/// </summary>
|
||||
/// <typeparam name="TDocument">The document type.</typeparam>
|
||||
/// <typeparam name="TKey">The type of the primary key.</typeparam>
|
||||
/// <param name="partitionKey">The collection partition key.</param>
|
||||
/// <returns></returns>
|
||||
IMongoCollection<TDocument> HandlePartitioned<TDocument, TKey>(string partitionKey)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>;
|
||||
|
||||
/// <summary>
|
||||
/// Gets a collections for the type TDocument with a partition key.
|
||||
/// </summary>
|
||||
/// <typeparam name="TDocument">The document type.</typeparam>
|
||||
/// <typeparam name="TKey">The type of the primary key.</typeparam>
|
||||
/// <param name="partitionKey">The collection partition key.</param>
|
||||
/// <returns></returns>
|
||||
IMongoCollection<TDocument> GetCollection<TDocument, TKey>(string partitionKey = null)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>;
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,4 @@
|
||||
using MongoDB.Driver;
|
||||
using MongoDB.Driver.Linq;
|
||||
using MongoDbGenericRepository.DataAccess.Base;
|
||||
using MongoDbGenericRepository.Models;
|
||||
using System;
|
||||
@@ -10,8 +9,13 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace MongoDbGenericRepository.DataAccess.Index
|
||||
{
|
||||
/// <inheritdoc cref="MongoDbGenericRepository.DataAccess.Index.IMongoDbIndexHandler" />
|
||||
public class MongoDbIndexHandler : DataAccessBase, IMongoDbIndexHandler
|
||||
{
|
||||
/// <summary>
|
||||
/// The MongoDbIndexHandler constructor.
|
||||
/// </summary>
|
||||
/// <param name="mongoDbContext">The mongo db context</param>
|
||||
public MongoDbIndexHandler(IMongoDbContext mongoDbContext) : base(mongoDbContext)
|
||||
{
|
||||
}
|
||||
@@ -23,7 +27,7 @@ namespace MongoDbGenericRepository.DataAccess.Index
|
||||
/// <typeparam name="TKey">The type of the primary key for a Document.</typeparam>
|
||||
/// <param name="partitionKey">An optional partition key</param>
|
||||
/// <returns>A list containing the names of the indexes on on the concerned collection.</returns>
|
||||
public async virtual Task<List<string>> GetIndexesNamesAsync<TDocument, TKey>(string partitionKey = null)
|
||||
public virtual async Task<List<string>> GetIndexesNamesAsync<TDocument, TKey>(string partitionKey = null)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>
|
||||
{
|
||||
@@ -43,7 +47,7 @@ namespace MongoDbGenericRepository.DataAccess.Index
|
||||
/// <param name="indexCreationOptions">Options for creating an index.</param>
|
||||
/// <param name="partitionKey">An optional partition key.</param>
|
||||
/// <returns>The result of the create index operation.</returns>
|
||||
public async virtual Task<string> CreateTextIndexAsync<TDocument, TKey>(Expression<Func<TDocument, object>> field, IndexCreationOptions indexCreationOptions = null, string partitionKey = null)
|
||||
public virtual async Task<string> CreateTextIndexAsync<TDocument, TKey>(Expression<Func<TDocument, object>> field, IndexCreationOptions indexCreationOptions = null, string partitionKey = null)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>
|
||||
{
|
||||
@@ -66,7 +70,7 @@ namespace MongoDbGenericRepository.DataAccess.Index
|
||||
/// <param name="indexCreationOptions">Options for creating an index.</param>
|
||||
/// <param name="partitionKey">An optional partition key.</param>
|
||||
/// <returns>The result of the create index operation.</returns>
|
||||
public async virtual Task<string> CreateAscendingIndexAsync<TDocument, TKey>(Expression<Func<TDocument, object>> field, IndexCreationOptions indexCreationOptions = null, string partitionKey = null)
|
||||
public virtual async Task<string> CreateAscendingIndexAsync<TDocument, TKey>(Expression<Func<TDocument, object>> field, IndexCreationOptions indexCreationOptions = null, string partitionKey = null)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>
|
||||
{
|
||||
@@ -89,7 +93,7 @@ namespace MongoDbGenericRepository.DataAccess.Index
|
||||
/// <param name="indexCreationOptions">Options for creating an index.</param>
|
||||
/// <param name="partitionKey">An optional partition key.</param>
|
||||
/// <returns>The result of the create index operation.</returns>
|
||||
public async virtual Task<string> CreateDescendingIndexAsync<TDocument, TKey>(Expression<Func<TDocument, object>> field, IndexCreationOptions indexCreationOptions = null, string partitionKey = null)
|
||||
public virtual async Task<string> CreateDescendingIndexAsync<TDocument, TKey>(Expression<Func<TDocument, object>> field, IndexCreationOptions indexCreationOptions = null, string partitionKey = null)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>
|
||||
{
|
||||
@@ -112,7 +116,7 @@ namespace MongoDbGenericRepository.DataAccess.Index
|
||||
/// <param name="indexCreationOptions">Options for creating an index.</param>
|
||||
/// <param name="partitionKey">An optional partition key.</param>
|
||||
/// <returns>The result of the create index operation.</returns>
|
||||
public async virtual Task<string> CreateHashedIndexAsync<TDocument, TKey>(Expression<Func<TDocument, object>> field, IndexCreationOptions indexCreationOptions = null, string partitionKey = null)
|
||||
public virtual async Task<string> CreateHashedIndexAsync<TDocument, TKey>(Expression<Func<TDocument, object>> field, IndexCreationOptions indexCreationOptions = null, string partitionKey = null)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>
|
||||
{
|
||||
@@ -135,7 +139,7 @@ namespace MongoDbGenericRepository.DataAccess.Index
|
||||
/// <param name="indexCreationOptions">Options for creating an index.</param>
|
||||
/// <param name="partitionKey">An optional partition key.</param>
|
||||
/// <returns>The result of the create index operation.</returns>
|
||||
public async virtual Task<string> CreateCombinedTextIndexAsync<TDocument, TKey>(IEnumerable<Expression<Func<TDocument, object>>> fields, IndexCreationOptions indexCreationOptions = null, string partitionKey = null)
|
||||
public virtual async Task<string> CreateCombinedTextIndexAsync<TDocument, TKey>(IEnumerable<Expression<Func<TDocument, object>>> fields, IndexCreationOptions indexCreationOptions = null, string partitionKey = null)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>
|
||||
{
|
||||
@@ -157,7 +161,7 @@ namespace MongoDbGenericRepository.DataAccess.Index
|
||||
/// <typeparam name="TKey">The type of the primary key for a Document.</typeparam>
|
||||
/// <param name="indexName">The name of the index</param>
|
||||
/// <param name="partitionKey">An optional partition key</param>
|
||||
public async virtual Task DropIndexAsync<TDocument, TKey>(string indexName, string partitionKey = null)
|
||||
public virtual async Task DropIndexAsync<TDocument, TKey>(string indexName, string partitionKey = null)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>
|
||||
{
|
||||
|
||||
@@ -5,12 +5,14 @@ using System.Linq.Expressions;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using MongoDB.Driver;
|
||||
using MongoDB.Driver.Linq;
|
||||
using MongoDbGenericRepository.DataAccess.Base;
|
||||
using MongoDbGenericRepository.Models;
|
||||
|
||||
namespace MongoDbGenericRepository.DataAccess.Read
|
||||
{
|
||||
/// <summary>
|
||||
/// A interface for accessing the Database and its Collections.
|
||||
/// </summary>
|
||||
public interface IMongoDbReader : IDataAccessBase
|
||||
{
|
||||
/// <summary>
|
||||
@@ -582,50 +584,5 @@ namespace MongoDbGenericRepository.DataAccess.Read
|
||||
string partitionKey = null)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>;
|
||||
|
||||
/// <summary>
|
||||
/// Gets a IMongoQueryable for a potentially partitioned document type and a filter.
|
||||
/// </summary>
|
||||
/// <typeparam name="TDocument">The document type.</typeparam>
|
||||
/// <typeparam name="TKey">The type of the primary key.</typeparam>
|
||||
/// <param name="filter">The filter definition.</param>
|
||||
/// <param name="partitionKey">The collection partition key.</param>
|
||||
/// <returns></returns>
|
||||
IMongoQueryable<TDocument> GetQuery<TDocument, TKey>(Expression<Func<TDocument, bool>> filter, string partitionKey = null)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>;
|
||||
|
||||
/// <summary>
|
||||
/// Gets a collections for a potentially partitioned document type.
|
||||
/// </summary>
|
||||
/// <typeparam name="TDocument">The document type.</typeparam>
|
||||
/// <typeparam name="TKey">The type of the primary key.</typeparam>
|
||||
/// <param name="document">The document.</param>
|
||||
/// <returns></returns>
|
||||
IMongoCollection<TDocument> HandlePartitioned<TDocument, TKey>(TDocument document)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>;
|
||||
|
||||
/// <summary>
|
||||
/// Gets a collections for a potentially partitioned document type.
|
||||
/// </summary>
|
||||
/// <typeparam name="TDocument">The document type.</typeparam>
|
||||
/// <typeparam name="TKey">The type of the primary key.</typeparam>
|
||||
/// <param name="partitionKey">The collection partition key.</param>
|
||||
/// <returns></returns>
|
||||
IMongoCollection<TDocument> HandlePartitioned<TDocument, TKey>(string partitionKey)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>;
|
||||
|
||||
/// <summary>
|
||||
/// Gets a collections for the type TDocument with a partition key.
|
||||
/// </summary>
|
||||
/// <typeparam name="TDocument">The document type.</typeparam>
|
||||
/// <typeparam name="TKey">The type of the primary key.</typeparam>
|
||||
/// <param name="partitionKey">The collection partition key.</param>
|
||||
/// <returns></returns>
|
||||
IMongoCollection<TDocument> GetCollection<TDocument, TKey>(string partitionKey = null)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>;
|
||||
}
|
||||
}
|
||||
@@ -34,7 +34,7 @@ namespace MongoDbGenericRepository.DataAccess.Read
|
||||
/// <param name="id">The Id of the document you want to get.</param>
|
||||
/// <param name="partitionKey">An optional partition key.</param>
|
||||
/// <param name="cancellationToken">An optional cancellation Token.</param>
|
||||
public async virtual Task<TDocument> GetByIdAsync<TDocument, TKey>(TKey id, string partitionKey = null, CancellationToken cancellationToken = default)
|
||||
public virtual async Task<TDocument> GetByIdAsync<TDocument, TKey>(TKey id, string partitionKey = null, CancellationToken cancellationToken = default)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>
|
||||
{
|
||||
@@ -98,7 +98,7 @@ namespace MongoDbGenericRepository.DataAccess.Read
|
||||
/// <param name="filter">A LINQ expression filter.</param>
|
||||
/// <param name="partitionKey">An optional partition key.</param>
|
||||
/// <param name="cancellationToken">An optional cancellation Token.</param>
|
||||
public async virtual Task<TDocument> GetOneAsync<TDocument, TKey>(Expression<Func<TDocument, bool>> filter, string partitionKey = null, CancellationToken cancellationToken = default)
|
||||
public virtual async Task<TDocument> GetOneAsync<TDocument, TKey>(Expression<Func<TDocument, bool>> filter, string partitionKey = null, CancellationToken cancellationToken = default)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>
|
||||
{
|
||||
@@ -176,7 +176,7 @@ namespace MongoDbGenericRepository.DataAccess.Read
|
||||
/// <param name="filter">A LINQ expression filter.</param>
|
||||
/// <param name="partitionKey">An optional partition key.</param>
|
||||
/// <param name="cancellationToken">An optional cancellation Token.</param>
|
||||
public async virtual Task<bool> AnyAsync<TDocument, TKey>(Expression<Func<TDocument, bool>> filter, string partitionKey = null, CancellationToken cancellationToken = default)
|
||||
public virtual async Task<bool> AnyAsync<TDocument, TKey>(Expression<Func<TDocument, bool>> filter, string partitionKey = null, CancellationToken cancellationToken = default)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>
|
||||
{
|
||||
@@ -240,7 +240,7 @@ namespace MongoDbGenericRepository.DataAccess.Read
|
||||
/// <param name="filter">A LINQ expression filter.</param>
|
||||
/// <param name="partitionKey">An optional partition key.</param>
|
||||
/// <param name="cancellationToken">An optional cancellation Token.</param>
|
||||
public async virtual Task<List<TDocument>> GetAllAsync<TDocument, TKey>(Expression<Func<TDocument, bool>> filter, string partitionKey = null, CancellationToken cancellationToken = default)
|
||||
public virtual async Task<List<TDocument>> GetAllAsync<TDocument, TKey>(Expression<Func<TDocument, bool>> filter, string partitionKey = null, CancellationToken cancellationToken = default)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>
|
||||
{
|
||||
@@ -302,7 +302,7 @@ namespace MongoDbGenericRepository.DataAccess.Read
|
||||
/// <param name="filter">A LINQ expression filter.</param>
|
||||
/// <param name="partitionKey">An optional partitionKey</param>
|
||||
/// <param name="cancellationToken">An optional cancellation Token.</param>
|
||||
public async virtual Task<long> CountAsync<TDocument, TKey>(Expression<Func<TDocument, bool>> filter, string partitionKey = null, CancellationToken cancellationToken = default)
|
||||
public virtual async Task<long> CountAsync<TDocument, TKey>(Expression<Func<TDocument, bool>> filter, string partitionKey = null, CancellationToken cancellationToken = default)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>
|
||||
{
|
||||
@@ -336,7 +336,7 @@ namespace MongoDbGenericRepository.DataAccess.Read
|
||||
/// <param name="maxValueSelector">A property selector to order by descending.</param>
|
||||
/// <param name="partitionKey">An optional partitionKey.</param>
|
||||
/// <param name="cancellationToken">An optional cancellation Token.</param>
|
||||
public async virtual Task<TDocument> GetByMaxAsync<TDocument, TKey>(Expression<Func<TDocument, bool>> filter, Expression<Func<TDocument, object>> maxValueSelector, string partitionKey = null, CancellationToken cancellationToken = default)
|
||||
public virtual async Task<TDocument> GetByMaxAsync<TDocument, TKey>(Expression<Func<TDocument, bool>> filter, Expression<Func<TDocument, object>> maxValueSelector, string partitionKey = null, CancellationToken cancellationToken = default)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>
|
||||
{
|
||||
@@ -373,7 +373,7 @@ namespace MongoDbGenericRepository.DataAccess.Read
|
||||
/// <param name="minValueSelector">A property selector to order by ascending.</param>
|
||||
/// <param name="partitionKey">An optional partitionKey.</param>
|
||||
/// <param name="cancellationToken">An optional cancellation Token.</param>
|
||||
public async virtual Task<TDocument> GetByMinAsync<TDocument, TKey>(Expression<Func<TDocument, bool>> filter, Expression<Func<TDocument, object>> minValueSelector, string partitionKey = null, CancellationToken cancellationToken = default)
|
||||
public virtual async Task<TDocument> GetByMinAsync<TDocument, TKey>(Expression<Func<TDocument, bool>> filter, Expression<Func<TDocument, object>> minValueSelector, string partitionKey = null, CancellationToken cancellationToken = default)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>
|
||||
{
|
||||
@@ -411,7 +411,7 @@ namespace MongoDbGenericRepository.DataAccess.Read
|
||||
/// <param name="maxValueSelector">A property selector to order by ascending.</param>
|
||||
/// <param name="partitionKey">An optional partitionKey.</param>
|
||||
/// <param name="cancellationToken">An optional cancellation Token.</param>
|
||||
public async virtual Task<TValue> GetMaxValueAsync<TDocument, TKey, TValue>(Expression<Func<TDocument, bool>> filter, Expression<Func<TDocument, TValue>> maxValueSelector, string partitionKey = null, CancellationToken cancellationToken = default)
|
||||
public virtual async Task<TValue> GetMaxValueAsync<TDocument, TKey, TValue>(Expression<Func<TDocument, bool>> filter, Expression<Func<TDocument, TValue>> maxValueSelector, string partitionKey = null, CancellationToken cancellationToken = default)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>
|
||||
{
|
||||
|
||||
@@ -3,12 +3,14 @@ using System.Linq.Expressions;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using MongoDB.Driver;
|
||||
using MongoDB.Driver.Linq;
|
||||
using MongoDbGenericRepository.DataAccess.Base;
|
||||
using MongoDbGenericRepository.Models;
|
||||
|
||||
namespace MongoDbGenericRepository.DataAccess.Update
|
||||
{
|
||||
/// <summary>
|
||||
/// A interface for updating documents in MongoDb.
|
||||
/// </summary>
|
||||
public interface IMongoDbUpdater : IDataAccessBase
|
||||
{
|
||||
/// <summary>
|
||||
@@ -323,8 +325,7 @@ namespace MongoDbGenericRepository.DataAccess.Update
|
||||
/// <typeparam name="TDocument">The type representing a Document.</typeparam>
|
||||
/// <typeparam name="TKey">The type of the primary key for a Document.</typeparam>
|
||||
/// <param name="filter">The document filter.</param>
|
||||
/// <param name="field">The field selector.</param>
|
||||
/// <param name="value">The new value of the property field.</param>
|
||||
/// <param name="update">the update definiton</param>
|
||||
/// <param name="partitionKey">The value of the partition key.</param>
|
||||
Task<long> UpdateManyAsync<TDocument, TKey>(Expression<Func<TDocument, bool>> filter, UpdateDefinition<TDocument> update, string partitionKey = null)
|
||||
where TDocument : IDocument<TKey>
|
||||
@@ -335,7 +336,6 @@ namespace MongoDbGenericRepository.DataAccess.Update
|
||||
/// </summary>
|
||||
/// <typeparam name="TDocument">The type representing a Document.</typeparam>
|
||||
/// <typeparam name="TKey">The type of the primary key for a Document.</typeparam>
|
||||
/// <typeparam name="TField">The type of the field.</typeparam>
|
||||
/// <param name="filter">The document filter.</param>
|
||||
/// <param name="updateDefinition">The update definition.</param>
|
||||
/// <param name="partitionKey">The value of the partition key.</param>
|
||||
@@ -376,56 +376,10 @@ namespace MongoDbGenericRepository.DataAccess.Update
|
||||
/// </summary>
|
||||
/// <typeparam name="TDocument">The type representing a Document.</typeparam>
|
||||
/// <typeparam name="TKey">The type of the primary key for a Document.</typeparam>
|
||||
/// <typeparam name="TField">The type of the field.</typeparam>
|
||||
/// <param name="filter">The document filter.</param>
|
||||
/// <param name="UpdateDefinition">The update definition.</param>
|
||||
/// <param name="updateDefinition">The update definition.</param>
|
||||
/// <param name="partitionKey">The value of the partition key.</param>
|
||||
long UpdateMany<TDocument, TKey>(FilterDefinition<TDocument> filter, UpdateDefinition<TDocument> UpdateDefinition, string partitionKey = null)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>;
|
||||
|
||||
/// <summary>
|
||||
/// Gets a IMongoQueryable for a potentially partitioned document type and a filter.
|
||||
/// </summary>
|
||||
/// <typeparam name="TDocument">The document type.</typeparam>
|
||||
/// <typeparam name="TKey">The type of the primary key.</typeparam>
|
||||
/// <param name="filter">The filter definition.</param>
|
||||
/// <param name="partitionKey">The collection partition key.</param>
|
||||
/// <returns></returns>
|
||||
IMongoQueryable<TDocument> GetQuery<TDocument, TKey>(Expression<Func<TDocument, bool>> filter, string partitionKey = null)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>;
|
||||
|
||||
/// <summary>
|
||||
/// Gets a collections for a potentially partitioned document type.
|
||||
/// </summary>
|
||||
/// <typeparam name="TDocument">The document type.</typeparam>
|
||||
/// <typeparam name="TKey">The type of the primary key.</typeparam>
|
||||
/// <param name="document">The document.</param>
|
||||
/// <returns></returns>
|
||||
IMongoCollection<TDocument> HandlePartitioned<TDocument, TKey>(TDocument document)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>;
|
||||
|
||||
/// <summary>
|
||||
/// Gets a collections for a potentially partitioned document type.
|
||||
/// </summary>
|
||||
/// <typeparam name="TDocument">The document type.</typeparam>
|
||||
/// <typeparam name="TKey">The type of the primary key.</typeparam>
|
||||
/// <param name="partitionKey">The collection partition key.</param>
|
||||
/// <returns></returns>
|
||||
IMongoCollection<TDocument> HandlePartitioned<TDocument, TKey>(string partitionKey)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>;
|
||||
|
||||
/// <summary>
|
||||
/// Gets a collections for the type TDocument with a partition key.
|
||||
/// </summary>
|
||||
/// <typeparam name="TDocument">The document type.</typeparam>
|
||||
/// <typeparam name="TKey">The type of the primary key.</typeparam>
|
||||
/// <param name="partitionKey">The collection partition key.</param>
|
||||
/// <returns></returns>
|
||||
IMongoCollection<TDocument> GetCollection<TDocument, TKey>(string partitionKey = null)
|
||||
long UpdateMany<TDocument, TKey>(FilterDefinition<TDocument> filter, UpdateDefinition<TDocument> updateDefinition, string partitionKey = null)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>;
|
||||
}
|
||||
|
||||
@@ -9,15 +9,7 @@ namespace MongoDbGenericRepository.DataAccess.Update
|
||||
{
|
||||
public partial class MongoDbUpdater
|
||||
{
|
||||
/// <summary>
|
||||
/// Updates a document.
|
||||
/// </summary>
|
||||
/// <typeparam name="TDocument">The type representing a Document.</typeparam>
|
||||
/// <typeparam name="TKey">The type of the primary key for a Document.</typeparam>
|
||||
/// <param name="session">The client session.</param>
|
||||
/// <param name="modifiedDocument">The document with the modifications you want to persist.</param>
|
||||
/// <param name="cancellationToken">The optional cancellation token.</param>
|
||||
/// <returns></returns>
|
||||
/// <inheritdoc cref="IMongoDbUpdater" />
|
||||
public virtual async Task<bool> UpdateOneAsync<TDocument, TKey>(IClientSessionHandle session, TDocument modifiedDocument, CancellationToken cancellationToken = default(CancellationToken))
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>
|
||||
@@ -29,15 +21,7 @@ namespace MongoDbGenericRepository.DataAccess.Update
|
||||
return updateRes.ModifiedCount == 1;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Updates a document.
|
||||
/// </summary>
|
||||
/// <typeparam name="TDocument">The type representing a Document.</typeparam>
|
||||
/// <typeparam name="TKey">The type of the primary key for a Document.</typeparam>
|
||||
/// <param name="session">The client session.</param>
|
||||
/// <param name="modifiedDocument">The document with the modifications you want to persist.</param>
|
||||
/// <param name="cancellationToken">The optional cancellation token.</param>
|
||||
/// <returns></returns>
|
||||
/// <inheritdoc cref="IMongoDbUpdater" />
|
||||
public virtual bool UpdateOne<TDocument, TKey>(IClientSessionHandle session, TDocument modifiedDocument, CancellationToken cancellationToken = default(CancellationToken))
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>
|
||||
@@ -47,16 +31,7 @@ namespace MongoDbGenericRepository.DataAccess.Update
|
||||
return updateRes.ModifiedCount == 1;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Updates a document.
|
||||
/// </summary>
|
||||
/// <typeparam name="TDocument">The type representing a Document.</typeparam>
|
||||
/// <typeparam name="TKey">The type of the primary key for a Document.</typeparam>
|
||||
/// <param name="session">The client session.</param>
|
||||
/// <param name="documentToModify">The document to modify.</param>
|
||||
/// <param name="update">The update definition.</param>
|
||||
/// <param name="cancellationToken">The optional cancellation token.</param>
|
||||
/// <returns></returns>
|
||||
/// <inheritdoc cref="IMongoDbUpdater" />
|
||||
public virtual async Task<bool> UpdateOneAsync<TDocument, TKey>(IClientSessionHandle session, TDocument documentToModify, UpdateDefinition<TDocument> update, CancellationToken cancellationToken = default(CancellationToken))
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>
|
||||
@@ -66,16 +41,7 @@ namespace MongoDbGenericRepository.DataAccess.Update
|
||||
return updateRes.ModifiedCount == 1;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Updates a document.
|
||||
/// </summary>
|
||||
/// <typeparam name="TDocument">The type representing a Document.</typeparam>
|
||||
/// <typeparam name="TKey">The type of the primary key for a Document.</typeparam>
|
||||
/// <param name="session">The client session.</param>
|
||||
/// <param name="documentToModify">The document to modify.</param>
|
||||
/// <param name="update">The update definition.</param>
|
||||
/// <param name="cancellationToken">The optional cancellation token.</param>
|
||||
/// <returns></returns>
|
||||
/// <inheritdoc cref="IMongoDbUpdater" />
|
||||
public virtual bool UpdateOne<TDocument, TKey>(IClientSessionHandle session, TDocument documentToModify, UpdateDefinition<TDocument> update, CancellationToken cancellationToken = default(CancellationToken))
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>
|
||||
@@ -85,18 +51,7 @@ namespace MongoDbGenericRepository.DataAccess.Update
|
||||
return updateRes.ModifiedCount == 1;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Updates a document.
|
||||
/// </summary>
|
||||
/// <typeparam name="TDocument">The type representing a Document.</typeparam>
|
||||
/// <typeparam name="TKey">The type of the primary key for a Document.</typeparam>
|
||||
/// <typeparam name="TField">The type of the field to update.</typeparam>
|
||||
/// <param name="session">The client session.</param>
|
||||
/// <param name="documentToModify">The document to modify.</param>
|
||||
/// <param name="field">The field to update.</param>
|
||||
/// <param name="value">The value of the field.</param>
|
||||
/// <param name="cancellationToken">The optional cancellation token.</param>
|
||||
/// <returns></returns>
|
||||
/// <inheritdoc cref="IMongoDbUpdater" />
|
||||
public virtual async Task<bool> UpdateOneAsync<TDocument, TKey, TField>(IClientSessionHandle session, TDocument documentToModify, Expression<Func<TDocument, TField>> field, TField value, CancellationToken cancellationToken = default(CancellationToken))
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>
|
||||
@@ -109,18 +64,7 @@ namespace MongoDbGenericRepository.DataAccess.Update
|
||||
return updateRes.ModifiedCount == 1;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Updates a document.
|
||||
/// </summary>
|
||||
/// <typeparam name="TDocument">The type representing a Document.</typeparam>
|
||||
/// <typeparam name="TKey">The type of the primary key for a Document.</typeparam>
|
||||
/// <typeparam name="TField">The type of the field to update.</typeparam>
|
||||
/// <param name="session">The client session.</param>
|
||||
/// <param name="documentToModify">The document to modify.</param>
|
||||
/// <param name="field">The field to update.</param>
|
||||
/// <param name="value">The value of the field.</param>
|
||||
/// <param name="cancellationToken">The optional cancellation token.</param>
|
||||
/// <returns></returns>
|
||||
/// <inheritdoc cref="IMongoDbUpdater" />
|
||||
public virtual bool UpdateOne<TDocument, TKey, TField>(IClientSessionHandle session, TDocument documentToModify, Expression<Func<TDocument, TField>> field, TField value, CancellationToken cancellationToken = default(CancellationToken))
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>
|
||||
@@ -130,19 +74,7 @@ namespace MongoDbGenericRepository.DataAccess.Update
|
||||
return updateRes.ModifiedCount == 1;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Updates a document.
|
||||
/// </summary>
|
||||
/// <typeparam name="TDocument">The type representing a Document.</typeparam>
|
||||
/// <typeparam name="TKey">The type of the primary key for a Document.</typeparam>
|
||||
/// <typeparam name="TField">The type of the field to update.</typeparam>
|
||||
/// <param name="session">The client session.</param>
|
||||
/// <param name="filter">The filter for the update.</param>
|
||||
/// <param name="field">The field to update.</param>
|
||||
/// <param name="value">The value of the field.</param>
|
||||
/// <param name="partitionKey">The optional partition key.</param>
|
||||
/// <param name="cancellationToken">The optional cancellation token.</param>
|
||||
/// <returns></returns>
|
||||
/// <inheritdoc cref="IMongoDbUpdater" />
|
||||
public virtual async Task<bool> UpdateOneAsync<TDocument, TKey, TField>(IClientSessionHandle session, FilterDefinition<TDocument> filter, Expression<Func<TDocument, TField>> field, TField value, string partitionKey = null, CancellationToken cancellationToken = default(CancellationToken))
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>
|
||||
@@ -152,19 +84,7 @@ namespace MongoDbGenericRepository.DataAccess.Update
|
||||
return updateRes.ModifiedCount == 1;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Updates a document.
|
||||
/// </summary>
|
||||
/// <typeparam name="TDocument">The type representing a Document.</typeparam>
|
||||
/// <typeparam name="TKey">The type of the primary key for a Document.</typeparam>
|
||||
/// <typeparam name="TField">The type of the field to update.</typeparam>
|
||||
/// <param name="session">The client session.</param>
|
||||
/// <param name="filter">The filter for the update.</param>
|
||||
/// <param name="field">The field to update.</param>
|
||||
/// <param name="value">The value of the field.</param>
|
||||
/// <param name="partitionKey">The optional partition key.</param>
|
||||
/// <param name="cancellationToken">The optional cancellation token.</param>
|
||||
/// <returns></returns>
|
||||
/// <inheritdoc cref="IMongoDbUpdater" />
|
||||
public virtual Task<bool> UpdateOneAsync<TDocument, TKey, TField>(IClientSessionHandle session, Expression<Func<TDocument, bool>> filter, Expression<Func<TDocument, TField>> field, TField value, string partitionKey = null, CancellationToken cancellationToken = default(CancellationToken))
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>
|
||||
@@ -172,19 +92,7 @@ namespace MongoDbGenericRepository.DataAccess.Update
|
||||
return UpdateOneAsync<TDocument, TKey, TField>(session, Builders<TDocument>.Filter.Where(filter), field, value, partitionKey, cancellationToken);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Updates a document.
|
||||
/// </summary>
|
||||
/// <typeparam name="TDocument">The type representing a Document.</typeparam>
|
||||
/// <typeparam name="TKey">The type of the primary key for a Document.</typeparam>
|
||||
/// <typeparam name="TField">The type of the field to update.</typeparam>
|
||||
/// <param name="session">The client session.</param>
|
||||
/// <param name="filter">The filter for the update.</param>
|
||||
/// <param name="field">The field to update.</param>
|
||||
/// <param name="value">The value of the field.</param>
|
||||
/// <param name="partitionKey">The optional partition key.</param>
|
||||
/// <param name="cancellationToken">The optional cancellation token.</param>
|
||||
/// <returns></returns>
|
||||
/// <inheritdoc cref="IMongoDbUpdater" />
|
||||
public virtual bool UpdateOne<TDocument, TKey, TField>(IClientSessionHandle session, FilterDefinition<TDocument> filter, Expression<Func<TDocument, TField>> field, TField value, string partitionKey = null, CancellationToken cancellationToken = default(CancellationToken))
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>
|
||||
@@ -194,19 +102,7 @@ namespace MongoDbGenericRepository.DataAccess.Update
|
||||
return updateRes.ModifiedCount == 1;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Updates a document.
|
||||
/// </summary>
|
||||
/// <typeparam name="TDocument">The type representing a Document.</typeparam>
|
||||
/// <typeparam name="TKey">The type of the primary key for a Document.</typeparam>
|
||||
/// <typeparam name="TField">The type of the field to update.</typeparam>
|
||||
/// <param name="session">The client session.</param>
|
||||
/// <param name="filter">The filter for the update.</param>
|
||||
/// <param name="field">The field to update.</param>
|
||||
/// <param name="value">The value of the field.</param>
|
||||
/// <param name="partitionKey">The optional partition key.</param>
|
||||
/// <param name="cancellationToken">The optional cancellation token.</param>
|
||||
/// <returns></returns>
|
||||
/// <inheritdoc cref="IMongoDbUpdater" />
|
||||
public virtual bool UpdateOne<TDocument, TKey, TField>(IClientSessionHandle session, Expression<Func<TDocument, bool>> filter, Expression<Func<TDocument, TField>> field, TField value, string partitionKey = null, CancellationToken cancellationToken = default(CancellationToken))
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>
|
||||
|
||||
@@ -3,23 +3,24 @@ using MongoDbGenericRepository.DataAccess.Base;
|
||||
using MongoDbGenericRepository.Models;
|
||||
using System;
|
||||
using System.Linq.Expressions;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace MongoDbGenericRepository.DataAccess.Update
|
||||
{
|
||||
/// <summary>
|
||||
/// The MongoDb updater.
|
||||
/// </summary>
|
||||
public partial class MongoDbUpdater : DataAccessBase, IMongoDbUpdater
|
||||
{
|
||||
/// <summary>
|
||||
/// Constructor
|
||||
/// </summary>
|
||||
/// <param name="mongoDbContext"></param>
|
||||
public MongoDbUpdater(IMongoDbContext mongoDbContext) : base(mongoDbContext)
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Asynchronously Updates a document.
|
||||
/// </summary>
|
||||
/// <typeparam name="TDocument">The type representing a Document.</typeparam>
|
||||
/// <typeparam name="TKey">The type of the primary key for a Document.</typeparam>
|
||||
/// <param name="modifiedDocument">The document with the modifications you want to persist.</param>
|
||||
/// <inheritdoc cref="IMongoDbUpdater"/>
|
||||
public virtual async Task<bool> UpdateOneAsync<TDocument, TKey>(TDocument modifiedDocument)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>
|
||||
@@ -29,12 +30,7 @@ namespace MongoDbGenericRepository.DataAccess.Update
|
||||
return updateRes.ModifiedCount == 1;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Updates a document.
|
||||
/// </summary>
|
||||
/// <typeparam name="TDocument">The type representing a Document.</typeparam>
|
||||
/// <typeparam name="TKey">The type of the primary key for a Document.</typeparam>
|
||||
/// <param name="modifiedDocument">The document with the modifications you want to persist.</param>
|
||||
/// <inheritdoc cref="IMongoDbUpdater"/>
|
||||
public virtual bool UpdateOne<TDocument, TKey>(TDocument modifiedDocument)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>
|
||||
@@ -44,13 +40,7 @@ namespace MongoDbGenericRepository.DataAccess.Update
|
||||
return updateRes.ModifiedCount == 1;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Takes a document you want to modify and applies the update you have defined in MongoDb.
|
||||
/// </summary>
|
||||
/// <typeparam name="TDocument">The type representing a Document.</typeparam>
|
||||
/// <typeparam name="TKey">The type of the primary key for a Document.</typeparam>
|
||||
/// <param name="documentToModify">The document you want to modify.</param>
|
||||
/// <param name="update">The update definition for the document.</param>
|
||||
/// <inheritdoc cref="IMongoDbUpdater"/>
|
||||
public virtual async Task<bool> UpdateOneAsync<TDocument, TKey>(TDocument documentToModify, UpdateDefinition<TDocument> update)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>
|
||||
@@ -60,13 +50,7 @@ namespace MongoDbGenericRepository.DataAccess.Update
|
||||
return updateRes.ModifiedCount == 1;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Takes a document you want to modify and applies the update you have defined in MongoDb.
|
||||
/// </summary>
|
||||
/// <typeparam name="TDocument">The type representing a Document.</typeparam>
|
||||
/// <typeparam name="TKey">The type of the primary key for a Document.</typeparam>
|
||||
/// <param name="documentToModify">The document you want to modify.</param>
|
||||
/// <param name="update">The update definition for the document.</param>
|
||||
/// <inheritdoc cref="IMongoDbUpdater"/>
|
||||
public virtual bool UpdateOne<TDocument, TKey>(TDocument documentToModify, UpdateDefinition<TDocument> update)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>
|
||||
@@ -76,15 +60,7 @@ namespace MongoDbGenericRepository.DataAccess.Update
|
||||
return updateRes.ModifiedCount == 1;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Updates the property field with the given value update a property field in entities.
|
||||
/// </summary>
|
||||
/// <typeparam name="TDocument">The type representing a Document.</typeparam>
|
||||
/// <typeparam name="TKey">The type of the primary key for a Document.</typeparam>
|
||||
/// <typeparam name="TField">The type of the field.</typeparam>
|
||||
/// <param name="documentToModify">The document you want to modify.</param>
|
||||
/// <param name="field">The field selector.</param>
|
||||
/// <param name="value">The new value of the property field.</param>
|
||||
/// <inheritdoc cref="IMongoDbUpdater"/>
|
||||
public virtual async Task<bool> UpdateOneAsync<TDocument, TKey, TField>(TDocument documentToModify, Expression<Func<TDocument, TField>> field, TField value)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>
|
||||
@@ -94,15 +70,7 @@ namespace MongoDbGenericRepository.DataAccess.Update
|
||||
return updateRes.ModifiedCount == 1;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Updates the property field with the given value update a property field in entities.
|
||||
/// </summary>
|
||||
/// <typeparam name="TDocument">The type representing a Document.</typeparam>
|
||||
/// <typeparam name="TKey">The type of the primary key for a Document.</typeparam>
|
||||
/// <typeparam name="TField">The type of the field.</typeparam>
|
||||
/// <param name="documentToModify">The document you want to modify.</param>
|
||||
/// <param name="field">The field selector.</param>
|
||||
/// <param name="value">The new value of the property field.</param>
|
||||
/// <inheritdoc cref="IMongoDbUpdater"/>
|
||||
public virtual bool UpdateOne<TDocument, TKey, TField>(TDocument documentToModify, Expression<Func<TDocument, TField>> field, TField value)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>
|
||||
@@ -112,16 +80,7 @@ namespace MongoDbGenericRepository.DataAccess.Update
|
||||
return updateRes.ModifiedCount == 1;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Updates the property field with the given value update a property field in entities.
|
||||
/// </summary>
|
||||
/// <typeparam name="TDocument">The type representing a Document.</typeparam>
|
||||
/// <typeparam name="TKey">The type of the primary key for a Document.</typeparam>
|
||||
/// <typeparam name="TField">The type of the field.</typeparam>
|
||||
/// <param name="filter">The document filter.</param>
|
||||
/// <param name="field">The field selector.</param>
|
||||
/// <param name="value">The new value of the property field.</param>
|
||||
/// <param name="partitionKey">The value of the partition key.</param>
|
||||
/// <inheritdoc cref="IMongoDbUpdater"/>
|
||||
public virtual async Task<bool> UpdateOneAsync<TDocument, TKey, TField>(FilterDefinition<TDocument> filter, Expression<Func<TDocument, TField>> field, TField value, string partitionKey = null)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>
|
||||
@@ -131,16 +90,7 @@ namespace MongoDbGenericRepository.DataAccess.Update
|
||||
return updateRes.ModifiedCount == 1;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// For the entity selected by the filter, updates the property field with the given value.
|
||||
/// </summary>
|
||||
/// <typeparam name="TDocument">The type representing a Document.</typeparam>
|
||||
/// <typeparam name="TKey">The type of the primary key for a Document.</typeparam>
|
||||
/// <typeparam name="TField">The type of the field.</typeparam>
|
||||
/// <param name="filter">The document filter.</param>
|
||||
/// <param name="field">The field selector.</param>
|
||||
/// <param name="value">The new value of the property field.</param>
|
||||
/// <param name="partitionKey">The partition key for the document.</param>
|
||||
/// <inheritdoc cref="IMongoDbUpdater"/>
|
||||
public virtual async Task<bool> UpdateOneAsync<TDocument, TKey, TField>(Expression<Func<TDocument, bool>> filter, Expression<Func<TDocument, TField>> field, TField value, string partitionKey = null)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>
|
||||
@@ -148,16 +98,7 @@ namespace MongoDbGenericRepository.DataAccess.Update
|
||||
return await UpdateOneAsync<TDocument, TKey, TField>(Builders<TDocument>.Filter.Where(filter), field, value, partitionKey);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Updates the property field with the given value.
|
||||
/// </summary>
|
||||
/// <typeparam name="TDocument">The type representing a Document.</typeparam>
|
||||
/// <typeparam name="TKey">The type of the primary key for a Document.</typeparam>
|
||||
/// <typeparam name="TField">The type of the field.</typeparam>
|
||||
/// <param name="filter">The document filter.</param>
|
||||
/// <param name="field">The field selector.</param>
|
||||
/// <param name="value">The new value of the property field.</param>
|
||||
/// <param name="partitionKey">The value of the partition key.</param>
|
||||
/// <inheritdoc cref="IMongoDbUpdater"/>
|
||||
public virtual bool UpdateOne<TDocument, TKey, TField>(FilterDefinition<TDocument> filter, Expression<Func<TDocument, TField>> field, TField value, string partitionKey = null)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>
|
||||
@@ -167,16 +108,7 @@ namespace MongoDbGenericRepository.DataAccess.Update
|
||||
return updateRes.ModifiedCount == 1;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// For the entity selected by the filter, updates the property field with the given value.
|
||||
/// </summary>
|
||||
/// <typeparam name="TDocument">The type representing a Document.</typeparam>
|
||||
/// <typeparam name="TKey">The type of the primary key for a Document.</typeparam>
|
||||
/// <typeparam name="TField">The type of the field.</typeparam>
|
||||
/// <param name="filter">The document filter.</param>
|
||||
/// <param name="field">The field selector.</param>
|
||||
/// <param name="value">The new value of the property field.</param>
|
||||
/// <param name="partitionKey">The partition key for the document.</param>
|
||||
/// <inheritdoc cref="IMongoDbUpdater"/>
|
||||
public virtual bool UpdateOne<TDocument, TKey, TField>(Expression<Func<TDocument, bool>> filter, Expression<Func<TDocument, TField>> field, TField value, string partitionKey = null)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>
|
||||
@@ -184,16 +116,7 @@ namespace MongoDbGenericRepository.DataAccess.Update
|
||||
return UpdateOne<TDocument, TKey, TField>(Builders<TDocument>.Filter.Where(filter), field, value, partitionKey);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// For the entities selected by the filter, updates the property field with the given value.
|
||||
/// </summary>
|
||||
/// <typeparam name="TDocument">The type representing a Document.</typeparam>
|
||||
/// <typeparam name="TKey">The type of the primary key for a Document.</typeparam>
|
||||
/// <typeparam name="TField">The type of the field.</typeparam>
|
||||
/// <param name="filter">The document filter.</param>
|
||||
/// <param name="field">The field selector.</param>
|
||||
/// <param name="value">The new value of the property field.</param>
|
||||
/// <param name="partitionKey">The partition key for the document.</param>
|
||||
/// <inheritdoc cref="IMongoDbUpdater"/>
|
||||
public virtual async Task<long> UpdateManyAsync<TDocument, TKey, TField>(Expression<Func<TDocument, bool>> filter, Expression<Func<TDocument, TField>> field, TField value, string partitionKey = null)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>
|
||||
@@ -201,16 +124,7 @@ namespace MongoDbGenericRepository.DataAccess.Update
|
||||
return await UpdateManyAsync<TDocument, TKey, TField>(Builders<TDocument>.Filter.Where(filter), field, value, partitionKey);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// For the entities selected by the filter, updates the property field with the given value.
|
||||
/// </summary>
|
||||
/// <typeparam name="TDocument">The type representing a Document.</typeparam>
|
||||
/// <typeparam name="TKey">The type of the primary key for a Document.</typeparam>
|
||||
/// <typeparam name="TField">The type of the field.</typeparam>
|
||||
/// <param name="filter">The document filter.</param>
|
||||
/// <param name="field">The field selector.</param>
|
||||
/// <param name="value">The new value of the property field.</param>
|
||||
/// <param name="partitionKey">The value of the partition key.</param>
|
||||
/// <inheritdoc cref="IMongoDbUpdater"/>
|
||||
public virtual async Task<long> UpdateManyAsync<TDocument, TKey, TField>(FilterDefinition<TDocument> filter, Expression<Func<TDocument, TField>> field, TField value, string partitionKey = null)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>
|
||||
@@ -220,15 +134,7 @@ namespace MongoDbGenericRepository.DataAccess.Update
|
||||
return updateRes.ModifiedCount;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// For the entities selected by the filter, apply the update definition.
|
||||
/// </summary>
|
||||
/// <typeparam name="TDocument">The type representing a Document.</typeparam>
|
||||
/// <typeparam name="TKey">The type of the primary key for a Document.</typeparam>
|
||||
/// <param name="filter">The document filter.</param>
|
||||
/// <param name="field">The field selector.</param>
|
||||
/// <param name="value">The new value of the property field.</param>
|
||||
/// <param name="partitionKey">The value of the partition key.</param>
|
||||
/// <inheritdoc cref="IMongoDbUpdater"/>
|
||||
public virtual async Task<long> UpdateManyAsync<TDocument, TKey>(Expression<Func<TDocument, bool>> filter, UpdateDefinition<TDocument> update, string partitionKey = null)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>
|
||||
@@ -236,15 +142,7 @@ namespace MongoDbGenericRepository.DataAccess.Update
|
||||
return await UpdateManyAsync<TDocument, TKey>(Builders<TDocument>.Filter.Where(filter), update, partitionKey);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// For the entities selected by the filter, apply the update definition.
|
||||
/// </summary>
|
||||
/// <typeparam name="TDocument">The type representing a Document.</typeparam>
|
||||
/// <typeparam name="TKey">The type of the primary key for a Document.</typeparam>
|
||||
/// <typeparam name="TField">The type of the field.</typeparam>
|
||||
/// <param name="filter">The document filter.</param>
|
||||
/// <param name="updateDefinition">The update definition.</param>
|
||||
/// <param name="partitionKey">The value of the partition key.</param>
|
||||
/// <inheritdoc cref="IMongoDbUpdater"/>
|
||||
public virtual async Task<long> UpdateManyAsync<TDocument, TKey>(FilterDefinition<TDocument> filter, UpdateDefinition<TDocument> updateDefinition, string partitionKey = null)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>
|
||||
@@ -254,16 +152,7 @@ namespace MongoDbGenericRepository.DataAccess.Update
|
||||
return updateRes.ModifiedCount;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// For the entities selected by the filter, updates the property field with the given value.
|
||||
/// </summary>
|
||||
/// <typeparam name="TDocument">The type representing a Document.</typeparam>
|
||||
/// <typeparam name="TKey">The type of the primary key for a Document.</typeparam>
|
||||
/// <typeparam name="TField">The type of the field.</typeparam>
|
||||
/// <param name="filter">The document filter.</param>
|
||||
/// <param name="field">The field selector.</param>
|
||||
/// <param name="value">The new value of the property field.</param>
|
||||
/// <param name="partitionKey">The partition key for the document.</param>
|
||||
/// <inheritdoc cref="IMongoDbUpdater"/>
|
||||
public virtual long UpdateMany<TDocument, TKey, TField>(Expression<Func<TDocument, bool>> filter, Expression<Func<TDocument, TField>> field, TField value, string partitionKey = null)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>
|
||||
@@ -271,16 +160,7 @@ namespace MongoDbGenericRepository.DataAccess.Update
|
||||
return UpdateMany<TDocument, TKey, TField>(Builders<TDocument>.Filter.Where(filter), field, value, partitionKey);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// For the entities selected by the filter, updates the property field with the given value.
|
||||
/// </summary>
|
||||
/// <typeparam name="TDocument">The type representing a Document.</typeparam>
|
||||
/// <typeparam name="TKey">The type of the primary key for a Document.</typeparam>
|
||||
/// <typeparam name="TField">The type of the field.</typeparam>
|
||||
/// <param name="filter">The document filter.</param>
|
||||
/// <param name="field">The field selector.</param>
|
||||
/// <param name="value">The new value of the property field.</param>
|
||||
/// <param name="partitionKey">The value of the partition key.</param>
|
||||
/// <inheritdoc cref="IMongoDbUpdater"/>
|
||||
public virtual long UpdateMany<TDocument, TKey, TField>(FilterDefinition<TDocument> filter, Expression<Func<TDocument, TField>> field, TField value, string partitionKey = null)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>
|
||||
@@ -290,21 +170,13 @@ namespace MongoDbGenericRepository.DataAccess.Update
|
||||
return updateRes.ModifiedCount;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// For the entities selected by the filter, apply the update definition.
|
||||
/// </summary>
|
||||
/// <typeparam name="TDocument">The type representing a Document.</typeparam>
|
||||
/// <typeparam name="TKey">The type of the primary key for a Document.</typeparam>
|
||||
/// <typeparam name="TField">The type of the field.</typeparam>
|
||||
/// <param name="filter">The document filter.</param>
|
||||
/// <param name="UpdateDefinition">The update definition.</param>
|
||||
/// <param name="partitionKey">The value of the partition key.</param>
|
||||
public virtual long UpdateMany<TDocument, TKey>(FilterDefinition<TDocument> filter, UpdateDefinition<TDocument> UpdateDefinition, string partitionKey = null)
|
||||
/// <inheritdoc cref="IMongoDbUpdater"/>
|
||||
public virtual long UpdateMany<TDocument, TKey>(FilterDefinition<TDocument> filter, UpdateDefinition<TDocument> updateDefinition, string partitionKey = null)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>
|
||||
{
|
||||
var collection = string.IsNullOrEmpty(partitionKey) ? GetCollection<TDocument, TKey>() : GetCollection<TDocument, TKey>(partitionKey);
|
||||
var updateRes = collection.UpdateMany(filter, UpdateDefinition);
|
||||
var updateRes = collection.UpdateMany(filter, updateDefinition);
|
||||
return updateRes.ModifiedCount;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,9 @@ using MongoDbGenericRepository.Models;
|
||||
|
||||
namespace MongoDbGenericRepository
|
||||
{
|
||||
/// <summary>
|
||||
/// The base Mongo Repository Delete interface. used to delete documents from the collections.
|
||||
/// </summary>
|
||||
public interface IBaseMongoRepository_Delete : IBaseMongoRepository_Delete<Guid>
|
||||
{
|
||||
/// <summary>
|
||||
|
||||
@@ -6,6 +6,9 @@ using MongoDbGenericRepository.Models;
|
||||
|
||||
namespace MongoDbGenericRepository
|
||||
{
|
||||
/// <summary>
|
||||
/// The interface exposing index management functionality for Guid Keyed repositories.
|
||||
/// </summary>
|
||||
public interface IBaseMongoRepository_Index : IBaseMongoRepository_Index<Guid>
|
||||
{
|
||||
/// <summary>
|
||||
|
||||
@@ -11,7 +11,8 @@ namespace MongoDbGenericRepository
|
||||
/// The base Repository, it is meant to be inherited from by your custom custom MongoRepository implementation.
|
||||
/// Its constructor must be given a connection string and a database name.
|
||||
/// </summary>
|
||||
public abstract partial class BaseMongoRepository<TKey> : IBaseMongoRepository_Create<TKey> where TKey : IEquatable<TKey>
|
||||
public abstract partial class BaseMongoRepository<TKey> : IBaseMongoRepository_Create<TKey>
|
||||
where TKey : IEquatable<TKey>
|
||||
{
|
||||
private volatile IMongoDbCreator _mongoDbCreator;
|
||||
|
||||
@@ -34,6 +35,7 @@ namespace MongoDbGenericRepository
|
||||
}
|
||||
return _mongoDbCreator;
|
||||
}
|
||||
|
||||
set { _mongoDbCreator = value; }
|
||||
}
|
||||
|
||||
|
||||
@@ -44,7 +44,7 @@ namespace MongoDbGenericRepository
|
||||
/// <typeparam name="TDocument">The type representing a Document.</typeparam>
|
||||
/// <param name="partitionKey">An optional partition key</param>
|
||||
/// <returns>A list containing the names of the indexes on on the concerned collection.</returns>
|
||||
public async virtual Task<List<string>> GetIndexesNamesAsync<TDocument>(string partitionKey = null)
|
||||
public virtual async Task<List<string>> GetIndexesNamesAsync<TDocument>(string partitionKey = null)
|
||||
where TDocument : IDocument<TKey>
|
||||
{
|
||||
return await MongoDbIndexHandler.GetIndexesNamesAsync<TDocument, TKey>(partitionKey);
|
||||
@@ -60,7 +60,7 @@ namespace MongoDbGenericRepository
|
||||
/// <param name="indexCreationOptions">Options for creating an index.</param>
|
||||
/// <param name="partitionKey">An optional partition key.</param>
|
||||
/// <returns>The result of the create index operation.</returns>
|
||||
public async virtual Task<string> CreateTextIndexAsync<TDocument>(Expression<Func<TDocument, object>> field, IndexCreationOptions indexCreationOptions = null, string partitionKey = null)
|
||||
public virtual async Task<string> CreateTextIndexAsync<TDocument>(Expression<Func<TDocument, object>> field, IndexCreationOptions indexCreationOptions = null, string partitionKey = null)
|
||||
where TDocument : IDocument<TKey>
|
||||
{
|
||||
return await MongoDbIndexHandler.CreateTextIndexAsync<TDocument, TKey>(field, indexCreationOptions, partitionKey);
|
||||
@@ -76,7 +76,7 @@ namespace MongoDbGenericRepository
|
||||
/// <param name="indexCreationOptions">Options for creating an index.</param>
|
||||
/// <param name="partitionKey">An optional partition key.</param>
|
||||
/// <returns>The result of the create index operation.</returns>
|
||||
public async virtual Task<string> CreateAscendingIndexAsync<TDocument>(Expression<Func<TDocument, object>> field, IndexCreationOptions indexCreationOptions = null, string partitionKey = null)
|
||||
public virtual async Task<string> CreateAscendingIndexAsync<TDocument>(Expression<Func<TDocument, object>> field, IndexCreationOptions indexCreationOptions = null, string partitionKey = null)
|
||||
where TDocument : IDocument<TKey>
|
||||
{
|
||||
return await MongoDbIndexHandler.CreateAscendingIndexAsync<TDocument, TKey>(field, indexCreationOptions, partitionKey);
|
||||
@@ -92,7 +92,7 @@ namespace MongoDbGenericRepository
|
||||
/// <param name="indexCreationOptions">Options for creating an index.</param>
|
||||
/// <param name="partitionKey">An optional partition key.</param>
|
||||
/// <returns>The result of the create index operation.</returns>
|
||||
public async virtual Task<string> CreateDescendingIndexAsync<TDocument>(Expression<Func<TDocument, object>> field, IndexCreationOptions indexCreationOptions = null, string partitionKey = null)
|
||||
public virtual async Task<string> CreateDescendingIndexAsync<TDocument>(Expression<Func<TDocument, object>> field, IndexCreationOptions indexCreationOptions = null, string partitionKey = null)
|
||||
where TDocument : IDocument<TKey>
|
||||
{
|
||||
return await MongoDbIndexHandler.CreateDescendingIndexAsync<TDocument, TKey>(field, indexCreationOptions, partitionKey);
|
||||
@@ -108,7 +108,7 @@ namespace MongoDbGenericRepository
|
||||
/// <param name="indexCreationOptions">Options for creating an index.</param>
|
||||
/// <param name="partitionKey">An optional partition key.</param>
|
||||
/// <returns>The result of the create index operation.</returns>
|
||||
public async virtual Task<string> CreateHashedIndexAsync<TDocument>(Expression<Func<TDocument, object>> field, IndexCreationOptions indexCreationOptions = null, string partitionKey = null)
|
||||
public virtual async Task<string> CreateHashedIndexAsync<TDocument>(Expression<Func<TDocument, object>> field, IndexCreationOptions indexCreationOptions = null, string partitionKey = null)
|
||||
where TDocument : IDocument<TKey>
|
||||
{
|
||||
return await MongoDbIndexHandler.CreateHashedIndexAsync<TDocument, TKey>(field, indexCreationOptions, partitionKey);
|
||||
@@ -124,7 +124,7 @@ namespace MongoDbGenericRepository
|
||||
/// <param name="indexCreationOptions">Options for creating an index.</param>
|
||||
/// <param name="partitionKey">An optional partition key.</param>
|
||||
/// <returns>The result of the create index operation.</returns>
|
||||
public async virtual Task<string> CreateCombinedTextIndexAsync<TDocument>(IEnumerable<Expression<Func<TDocument, object>>> fields, IndexCreationOptions indexCreationOptions = null, string partitionKey = null)
|
||||
public virtual async Task<string> CreateCombinedTextIndexAsync<TDocument>(IEnumerable<Expression<Func<TDocument, object>>> fields, IndexCreationOptions indexCreationOptions = null, string partitionKey = null)
|
||||
where TDocument : IDocument<TKey>
|
||||
{
|
||||
return await MongoDbIndexHandler.CreateCombinedTextIndexAsync<TDocument, TKey>(fields, indexCreationOptions, partitionKey);
|
||||
@@ -136,7 +136,7 @@ namespace MongoDbGenericRepository
|
||||
/// <typeparam name="TDocument">The type representing a Document.</typeparam>
|
||||
/// <param name="indexName">The name of the index</param>
|
||||
/// <param name="partitionKey">An optional partition key</param>
|
||||
public async virtual Task DropIndexAsync<TDocument>(string indexName, string partitionKey = null)
|
||||
public virtual async Task DropIndexAsync<TDocument>(string indexName, string partitionKey = null)
|
||||
where TDocument : IDocument<TKey>
|
||||
{
|
||||
await MongoDbIndexHandler.DropIndexAsync<TDocument, TKey>(indexName, partitionKey);
|
||||
|
||||
@@ -5,7 +5,6 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Linq.Expressions;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace MongoDbGenericRepository
|
||||
@@ -29,12 +28,12 @@ namespace MongoDbGenericRepository
|
||||
/// <summary>
|
||||
/// The MongoDbContext
|
||||
/// </summary>
|
||||
protected IMongoDbContext MongoDbContext = null;
|
||||
protected IMongoDbContext MongoDbContext;
|
||||
|
||||
/// <summary>
|
||||
/// A MongoDb Reader for read operations
|
||||
/// </summary>
|
||||
protected IMongoDbReader MongoDbReader = null;
|
||||
protected IMongoDbReader MongoDbReader;
|
||||
|
||||
/// <summary>
|
||||
/// The constructor taking a connection string and a database name.
|
||||
@@ -63,19 +62,29 @@ namespace MongoDbGenericRepository
|
||||
SetupMongoDbContext(mongoDbContext);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Setups the repository with a <see cref="IMongoDbContext"/>.
|
||||
/// </summary>
|
||||
/// <param name="mongoDbContext"></param>
|
||||
protected void SetupMongoDbContext(IMongoDbContext mongoDbContext)
|
||||
{
|
||||
MongoDbContext = MongoDbContext ?? mongoDbContext;
|
||||
MongoDbReader = MongoDbReader ?? new MongoDbReader(MongoDbContext);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Setups the repository with a connection string and a database name.
|
||||
/// </summary>
|
||||
/// <param name="connectionString"></param>
|
||||
/// <param name="databaseName">The database name. If the database name is null or whitespace it is taken from the connection string</param>
|
||||
protected void SetupMongoDbContext(string connectionString, string databaseName)
|
||||
{
|
||||
if (databaseName == null)
|
||||
if (string.IsNullOrWhiteSpace(databaseName))
|
||||
{
|
||||
var mongoUrl = new MongoUrl(connectionString);
|
||||
databaseName = databaseName ?? mongoUrl.DatabaseName;
|
||||
databaseName = mongoUrl.DatabaseName;
|
||||
}
|
||||
|
||||
ConnectionString = connectionString;
|
||||
DatabaseName = databaseName;
|
||||
SetupMongoDbContext(new MongoDbContext(connectionString, databaseName));
|
||||
|
||||
@@ -12,6 +12,9 @@ namespace MongoDbGenericRepository
|
||||
{
|
||||
private volatile IMongoDbUpdater _mongoDbUpdater;
|
||||
|
||||
/// <summary>
|
||||
/// The MongoDb accessor to update data.
|
||||
/// </summary>
|
||||
protected virtual IMongoDbUpdater MongoDbUpdater
|
||||
{
|
||||
get
|
||||
|
||||
@@ -6,6 +6,10 @@ using MongoDbGenericRepository.Models;
|
||||
|
||||
namespace MongoDbGenericRepository
|
||||
{
|
||||
/// <summary>
|
||||
/// The base Mongo Repository Update interface. used to update documents in the collections.
|
||||
/// </summary>
|
||||
/// <typeparam name="TKey"></typeparam>
|
||||
public interface IBaseMongoRepository_Update<TKey> where TKey : IEquatable<TKey>
|
||||
{
|
||||
/// <summary>
|
||||
|
||||
@@ -1,8 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace MongoDbGenericRepository.Models
|
||||
{
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
using MongoDB.Driver;
|
||||
using MongoDbGenericRepository.DataAccess.Read;
|
||||
using MongoDbGenericRepository.Models;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
@@ -51,7 +50,7 @@ namespace MongoDbGenericRepository
|
||||
/// <param name="id">The Id of the document you want to get.</param>
|
||||
/// <param name="partitionKey">An optional partition key.</param>
|
||||
/// <param name="cancellationToken">An optional cancellation Token.</param>
|
||||
public async virtual Task<TDocument> GetByIdAsync<TDocument, TKey>(TKey id, string partitionKey = null, CancellationToken cancellationToken = default)
|
||||
public virtual async Task<TDocument> GetByIdAsync<TDocument, TKey>(TKey id, string partitionKey = null, CancellationToken cancellationToken = default)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>
|
||||
{
|
||||
@@ -109,7 +108,7 @@ namespace MongoDbGenericRepository
|
||||
/// <param name="filter">A LINQ expression filter.</param>
|
||||
/// <param name="partitionKey">An optional partition key.</param>
|
||||
/// <param name="cancellationToken">An optional cancellation Token.</param>
|
||||
public async virtual Task<TDocument> GetOneAsync<TDocument, TKey>(Expression<Func<TDocument, bool>> filter, string partitionKey = null, CancellationToken cancellationToken = default)
|
||||
public virtual async Task<TDocument> GetOneAsync<TDocument, TKey>(Expression<Func<TDocument, bool>> filter, string partitionKey = null, CancellationToken cancellationToken = default)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>
|
||||
{
|
||||
@@ -180,7 +179,7 @@ namespace MongoDbGenericRepository
|
||||
/// <param name="filter">A LINQ expression filter.</param>
|
||||
/// <param name="partitionKey">An optional partition key.</param>
|
||||
/// <param name="cancellationToken">An optional cancellation Token.</param>
|
||||
public async virtual Task<bool> AnyAsync<TDocument, TKey>(Expression<Func<TDocument, bool>> filter, string partitionKey = null, CancellationToken cancellationToken = default)
|
||||
public virtual async Task<bool> AnyAsync<TDocument, TKey>(Expression<Func<TDocument, bool>> filter, string partitionKey = null, CancellationToken cancellationToken = default)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>
|
||||
{
|
||||
@@ -238,7 +237,7 @@ namespace MongoDbGenericRepository
|
||||
/// <param name="filter">A LINQ expression filter.</param>
|
||||
/// <param name="partitionKey">An optional partition key.</param>
|
||||
/// <param name="cancellationToken">An optional cancellation Token.</param>
|
||||
public async virtual Task<List<TDocument>> GetAllAsync<TDocument, TKey>(Expression<Func<TDocument, bool>> filter, string partitionKey = null, CancellationToken cancellationToken = default)
|
||||
public virtual async Task<List<TDocument>> GetAllAsync<TDocument, TKey>(Expression<Func<TDocument, bool>> filter, string partitionKey = null, CancellationToken cancellationToken = default)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>
|
||||
{
|
||||
@@ -296,7 +295,7 @@ namespace MongoDbGenericRepository
|
||||
/// <param name="filter">A LINQ expression filter.</param>
|
||||
/// <param name="partitionKey">An optional partitionKey</param>
|
||||
/// <param name="cancellationToken">An optional cancellation Token.</param>
|
||||
public async virtual Task<long> CountAsync<TDocument, TKey>(Expression<Func<TDocument, bool>> filter, string partitionKey = null, CancellationToken cancellationToken = default)
|
||||
public virtual async Task<long> CountAsync<TDocument, TKey>(Expression<Func<TDocument, bool>> filter, string partitionKey = null, CancellationToken cancellationToken = default)
|
||||
where TDocument : IDocument<TKey>
|
||||
where TKey : IEquatable<TKey>
|
||||
{
|
||||
@@ -326,7 +325,7 @@ namespace MongoDbGenericRepository
|
||||
/// <param name="maxValueSelector">A property selector to order by descending.</param>
|
||||
/// <param name="partitionKey">An optional partitionKey.</param>
|
||||
/// <param name="cancellationToken">An optional cancellation Token.</param>
|
||||
public async virtual Task<TDocument> GetByMaxAsync<TDocument, TKey>(
|
||||
public virtual async Task<TDocument> GetByMaxAsync<TDocument, TKey>(
|
||||
Expression<Func<TDocument, bool>> filter,
|
||||
Expression<Func<TDocument, object>> maxValueSelector,
|
||||
string partitionKey = null, CancellationToken cancellationToken = default)
|
||||
@@ -360,7 +359,7 @@ namespace MongoDbGenericRepository
|
||||
/// <param name="minValueSelector">A property selector for the minimum value you are looking for.</param>
|
||||
/// <param name="partitionKey">An optional partitionKey.</param>
|
||||
/// <param name="cancellationToken">An optional cancellation Token.</param>
|
||||
public async virtual Task<TDocument> GetByMinAsync<TDocument, TKey>(Expression<Func<TDocument, bool>> filter,
|
||||
public virtual async Task<TDocument> GetByMinAsync<TDocument, TKey>(Expression<Func<TDocument, bool>> filter,
|
||||
Expression<Func<TDocument, object>> minValueSelector,
|
||||
string partitionKey = null,
|
||||
CancellationToken cancellationToken = default)
|
||||
@@ -395,7 +394,7 @@ namespace MongoDbGenericRepository
|
||||
/// <param name="maxValueSelector">A property selector for the maximum value you are looking for.</param>
|
||||
/// <param name="partitionKey">An optional partitionKey.</param>
|
||||
/// <param name="cancellationToken">An optional cancellation Token.</param>
|
||||
public async virtual Task<TValue> GetMaxValueAsync<TDocument, TKey, TValue>(
|
||||
public virtual async Task<TValue> GetMaxValueAsync<TDocument, TKey, TValue>(
|
||||
Expression<Func<TDocument, bool>> filter,
|
||||
Expression<Func<TDocument, TValue>> maxValueSelector,
|
||||
string partitionKey = null,
|
||||
|
||||
Reference in New Issue
Block a user