Skip to content

Commit 4325e4d

Browse files
Custom collection name support (#17)
* Added the possibility to provide a custom collection name. * New library version.
1 parent ba2141a commit 4325e4d

File tree

15 files changed

+77
-34
lines changed

15 files changed

+77
-34
lines changed

README.md

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -12,32 +12,32 @@ If you like or are using this project to learn or start your solution, please gi
1212

1313
| Package | NuGet |
1414
| ------- | ------- |
15-
| MongoDB.Data.Infrastructure.Abstractions | [![Nuget](https://img.shields.io/badge/nuget-v1.7.0-blue) ![Nuget](https://img.shields.io/nuget/dt/MongoDB.Data.Infrastructure.Abstractions)](https://www.nuget.org/packages/MongoDB.Data.Infrastructure.Abstractions/1.7.0) |
16-
| MongoDB.Data.QueryBuilder.Abstractions | [![Nuget](https://img.shields.io/badge/nuget-v1.7.0-blue) ![Nuget](https://img.shields.io/nuget/dt/MongoDB.Data.QueryBuilder.Abstractions)](https://www.nuget.org/packages/MongoDB.Data.QueryBuilder.Abstractions/1.7.0) |
17-
| MongoDB.Data.Repository.Abstractions | [![Nuget](https://img.shields.io/badge/nuget-v1.7.0-blue) ![Nuget](https://img.shields.io/nuget/dt/MongoDB.Data.Repository.Abstractions)](https://www.nuget.org/packages/MongoDB.Data.Repository.Abstractions/1.7.0) |
18-
| MongoDB.Data.UnitOfWork.Abstractions | [![Nuget](https://img.shields.io/badge/nuget-v1.7.0-blue) ![Nuget](https://img.shields.io/nuget/dt/MongoDB.Data.UnitOfWork.Abstractions)](https://www.nuget.org/packages/MongoDB.Data.UnitOfWork.Abstractions/1.7.0) |
15+
| MongoDB.Data.Infrastructure.Abstractions | [![Nuget](https://img.shields.io/badge/nuget-v1.7.1-blue) ![Nuget](https://img.shields.io/nuget/dt/MongoDB.Data.Infrastructure.Abstractions)](https://www.nuget.org/packages/MongoDB.Data.Infrastructure.Abstractions/1.7.1) |
16+
| MongoDB.Data.QueryBuilder.Abstractions | [![Nuget](https://img.shields.io/badge/nuget-v1.7.1-blue) ![Nuget](https://img.shields.io/nuget/dt/MongoDB.Data.QueryBuilder.Abstractions)](https://www.nuget.org/packages/MongoDB.Data.QueryBuilder.Abstractions/1.7.1) |
17+
| MongoDB.Data.Repository.Abstractions | [![Nuget](https://img.shields.io/badge/nuget-v1.7.1-blue) ![Nuget](https://img.shields.io/nuget/dt/MongoDB.Data.Repository.Abstractions)](https://www.nuget.org/packages/MongoDB.Data.Repository.Abstractions/1.7.1) |
18+
| MongoDB.Data.UnitOfWork.Abstractions | [![Nuget](https://img.shields.io/badge/nuget-v1.7.1-blue) ![Nuget](https://img.shields.io/nuget/dt/MongoDB.Data.UnitOfWork.Abstractions)](https://www.nuget.org/packages/MongoDB.Data.UnitOfWork.Abstractions/1.7.1) |
1919
| ------- | ------- |
20-
| MongoDB.Data.Generators | [![Nuget](https://img.shields.io/badge/nuget-v1.7.0-blue) ![Nuget](https://img.shields.io/nuget/dt/MongoDB.Data.Generators)](https://www.nuget.org/packages/MongoDB.Data.Generators/1.7.0) |
21-
| MongoDB.Data.Infrastructure | [![Nuget](https://img.shields.io/badge/nuget-v1.7.0-blue) ![Nuget](https://img.shields.io/nuget/dt/MongoDB.Data.Infrastructure)](https://www.nuget.org/packages/MongoDB.Data.Infrastructure/1.7.0) |
22-
| MongoDB.Data.QueryBuilder | [![Nuget](https://img.shields.io/badge/nuget-v1.7.0-blue) ![Nuget](https://img.shields.io/nuget/dt/MongoDB.Data.QueryBuilder)](https://www.nuget.org/packages/MongoDB.Data.QueryBuilder/1.7.0) |
23-
| MongoDB.Data.Repository | [![Nuget](https://img.shields.io/badge/nuget-v1.7.0-blue) ![Nuget](https://img.shields.io/nuget/dt/MongoDB.Data.Repository)](https://www.nuget.org/packages/MongoDB.Data.Repository/1.7.0) |
24-
| MongoDB.Data.UnitOfWork | [![Nuget](https://img.shields.io/badge/nuget-v1.7.0-blue) ![Nuget](https://img.shields.io/nuget/dt/MongoDB.Data.UnitOfWork)](https://www.nuget.org/packages/MongoDB.Data.UnitOfWork/1.7.0) |
20+
| MongoDB.Data.Generators | [![Nuget](https://img.shields.io/badge/nuget-v1.7.1-blue) ![Nuget](https://img.shields.io/nuget/dt/MongoDB.Data.Generators)](https://www.nuget.org/packages/MongoDB.Data.Generators/1.7.1) |
21+
| MongoDB.Data.Infrastructure | [![Nuget](https://img.shields.io/badge/nuget-v1.7.1-blue) ![Nuget](https://img.shields.io/nuget/dt/MongoDB.Data.Infrastructure)](https://www.nuget.org/packages/MongoDB.Data.Infrastructure/1.7.1) |
22+
| MongoDB.Data.QueryBuilder | [![Nuget](https://img.shields.io/badge/nuget-v1.7.1-blue) ![Nuget](https://img.shields.io/nuget/dt/MongoDB.Data.QueryBuilder)](https://www.nuget.org/packages/MongoDB.Data.QueryBuilder/1.7.1) |
23+
| MongoDB.Data.Repository | [![Nuget](https://img.shields.io/badge/nuget-v1.7.1-blue) ![Nuget](https://img.shields.io/nuget/dt/MongoDB.Data.Repository)](https://www.nuget.org/packages/MongoDB.Data.Repository/1.7.1) |
24+
| MongoDB.Data.UnitOfWork | [![Nuget](https://img.shields.io/badge/nuget-v1.7.1-blue) ![Nuget](https://img.shields.io/nuget/dt/MongoDB.Data.UnitOfWork)](https://www.nuget.org/packages/MongoDB.Data.UnitOfWork/1.7.1) |
2525

2626
## Installation
2727

2828
MongoDB.DataAccess is available on Nuget.
2929

3030
```
31-
Install-Package MongoDB.Data.Infrastructure.Abstractions -Version 1.7.0
32-
Install-Package MongoDB.Data.QueryBuilder.Abstractions -Version 1.7.0
33-
Install-Package MongoDB.Data.Repository.Abstractions -Version 1.7.0
34-
Install-Package MongoDB.Data.UnitOfWork.Abstractions -Version 1.7.0
35-
36-
Install-Package MongoDB.Data.Generators -Version 1.7.0
37-
Install-Package MongoDB.Data.Infrastructure -Version 1.7.0
38-
Install-Package MongoDB.Data.QueryBuilder -Version 1.7.0
39-
Install-Package MongoDB.Data.Repository -Version 1.7.0
40-
Install-Package MongoDB.Data.UnitOfWork -Version 1.7.0
31+
Install-Package MongoDB.Data.Infrastructure.Abstractions -Version 1.7.1
32+
Install-Package MongoDB.Data.QueryBuilder.Abstractions -Version 1.7.1
33+
Install-Package MongoDB.Data.Repository.Abstractions -Version 1.7.1
34+
Install-Package MongoDB.Data.UnitOfWork.Abstractions -Version 1.7.1
35+
36+
Install-Package MongoDB.Data.Generators -Version 1.7.1
37+
Install-Package MongoDB.Data.Infrastructure -Version 1.7.1
38+
Install-Package MongoDB.Data.QueryBuilder -Version 1.7.1
39+
Install-Package MongoDB.Data.Repository -Version 1.7.1
40+
Install-Package MongoDB.Data.UnitOfWork -Version 1.7.1
4141
```
4242

4343
**P.S.: MongoDB.Data.UnitOfWork depends on the other packages, so installing this package is enough.**

samples/MongoDB.Data/Repositories/CustomBlogRepository.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@ public CustomBlogRepository(IMongoDbContext context)
1414
: base(context)
1515
{ }
1616

17+
public CustomBlogRepository(IMongoDbContext context, IMongoDbRepositoryOptions<Blog> options)
18+
: base(context, options)
19+
{ }
20+
1721
public IList<string> GetAllBlogUrls()
1822
=> Context.GetCollection<Blog>()
1923
.AsQueryable()

src/MongoDB.Generators/MongoDB.Generators.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
<RepositoryType>git</RepositoryType>
1717
<PackageTags>MongoDB;Mongo DB;mongo-db;Data;IdGenerators;Id Generators;id-generators</PackageTags>
1818
<PackageLicenseExpression>MIT</PackageLicenseExpression>
19-
<Version>1.7.0</Version>
19+
<Version>1.7.1</Version>
2020
<LangVersion>latest</LangVersion>
2121
</PropertyGroup>
2222

src/MongoDB.Infrastructure.Abstractions/MongoDB.Infrastructure.Abstractions.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
<RepositoryType>git</RepositoryType>
1818
<PackageTags>MongoDB;Mongo DB;mongo-db;Data;Infrastructure;Abstractions</PackageTags>
1919
<PackageLicenseExpression>MIT</PackageLicenseExpression>
20-
<Version>1.7.0</Version>
20+
<Version>1.7.1</Version>
2121
<LangVersion>latest</LangVersion>
2222
</PropertyGroup>
2323

src/MongoDB.Infrastructure/MongoDB.Infrastructure.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
<RepositoryType>git</RepositoryType>
1717
<PackageTags>MongoDB;Mongo DB;mongo-db;Data;Infrastructure</PackageTags>
1818
<PackageLicenseExpression>MIT</PackageLicenseExpression>
19-
<Version>1.7.0</Version>
19+
<Version>1.7.1</Version>
2020
<LangVersion>latest</LangVersion>
2121
</PropertyGroup>
2222

src/MongoDB.QueryBuilder.Abstractions/MongoDB.QueryBuilder.Abstractions.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
<RepositoryType>git</RepositoryType>
1818
<PackageTags>MongoDB;Mongo DB;mongo-db;Data;QueryBuilder;Query Builder;query-builder;Abstractions</PackageTags>
1919
<PackageLicenseExpression>MIT</PackageLicenseExpression>
20-
<Version>1.7.0</Version>
20+
<Version>1.7.1</Version>
2121
<LangVersion>latest</LangVersion>
2222
</PropertyGroup>
2323

src/MongoDB.QueryBuilder/MongoDB.QueryBuilder.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
<RepositoryType>git</RepositoryType>
1717
<PackageTags>MongoDB;Mongo DB;mongo-db;Data;QueryBuilder;Query Builder;query-builder</PackageTags>
1818
<PackageLicenseExpression>MIT</PackageLicenseExpression>
19-
<Version>1.7.0</Version>
19+
<Version>1.7.1</Version>
2020
<LangVersion>latest</LangVersion>
2121
</PropertyGroup>
2222

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
namespace MongoDB.Repository
2+
{
3+
public interface IMongoDbRepositoryOptions<T> where T : class
4+
{
5+
string CollectionName { get; set; }
6+
}
7+
}

src/MongoDB.Repository.Abstractions/MongoDB.Repository.Abstractions.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
<RepositoryType>git</RepositoryType>
1818
<PackageTags>MongoDB;Mongo DB;mongo-db;Data;Repository;Abstractions</PackageTags>
1919
<PackageLicenseExpression>MIT</PackageLicenseExpression>
20-
<Version>1.7.0</Version>
20+
<Version>1.7.1</Version>
2121
<LangVersion>latest</LangVersion>
2222
</PropertyGroup>
2323

src/MongoDB.Repository/Extensions/MongoDbRepositoryServiceCollectionExtensions.cs

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ public static class MongoDbRepositoryServiceCollectionExtensions
99
{
1010
public static IServiceCollection AddCustomMongoDbRepository<TService, TImplementation>(
1111
this IServiceCollection services,
12+
Func<IServiceProvider, TService> implementationFactory = null,
1213
ServiceLifetime serviceLifetime = ServiceLifetime.Scoped)
1314
where TService : class, IMongoDbRepository
1415
where TImplementation : class, TService
@@ -23,13 +24,14 @@ public static IServiceCollection AddCustomMongoDbRepository<TService, TImplement
2324
throw new ArgumentException("Implementation constraint has not been satisfied.");
2425
}
2526

26-
services.TryAdd<TService, TImplementation>(serviceLifetime);
27+
services.TryAdd<TService, TImplementation>(implementationFactory, serviceLifetime);
2728

2829
return services;
2930
}
3031

3132
public static IServiceCollection AddMongoDbRepository<TService, TImplementation>(
3233
this IServiceCollection services,
34+
Func<IServiceProvider, TService> implementationFactory = null,
3335
ServiceLifetime serviceLifetime = ServiceLifetime.Scoped)
3436
where TService : class, IMongoDbRepository
3537
where TImplementation : class, TService
@@ -44,18 +46,30 @@ public static IServiceCollection AddMongoDbRepository<TService, TImplementation>
4446
throw new ArgumentException("Implementation constraint has not been satisfied.");
4547
}
4648

47-
services.TryAdd<TService, TImplementation>(serviceLifetime);
49+
services.TryAdd<TService, TImplementation>(implementationFactory, serviceLifetime);
4850

4951
return services;
5052
}
5153

5254
private static void TryAdd<TService, TImplementation>(
5355
this IServiceCollection services,
56+
Func<IServiceProvider, TService> implementationFactory,
5457
ServiceLifetime serviceLifetime)
5558
{
56-
services.TryAdd(
57-
ServiceDescriptor.Describe(
58-
typeof(TService), typeof(TImplementation), serviceLifetime));
59+
if (implementationFactory is null)
60+
{
61+
services.TryAdd(
62+
ServiceDescriptor.Describe(
63+
typeof(TService), typeof(TImplementation), serviceLifetime));
64+
}
65+
else
66+
{
67+
services.TryAdd(
68+
ServiceDescriptor.Describe(
69+
typeof(TService),
70+
provider => implementationFactory.Invoke(provider),
71+
serviceLifetime));
72+
}
5973
}
6074
}
6175
}

0 commit comments

Comments
 (0)