Skip to content

Commit 0fe638a

Browse files
author
Chris Young
committed
Changed mongo utilities to support multiple databases
1 parent daf5dd7 commit 0fe638a

File tree

12 files changed

+73
-369
lines changed

12 files changed

+73
-369
lines changed

src/ArchitectNow.Mongo/Db/IMongoDBUtilities.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ namespace ArchitectNow.Mongo.Db
66
public interface IMongoDbUtilities : IDisposable
77
{
88
IMongoDatabase Database { get; }
9-
string GetConnectionString();
10-
string GetDatabaseName();
9+
string DatabaseName { get; }
10+
string ConnectionString { get; }
1111
}
1212
}

src/ArchitectNow.Mongo/Db/MongoDBUtilities.cs

Lines changed: 17 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
11
using System;
2-
using ArchitectNow.Mongo.Options;
3-
using Microsoft.Extensions.Options;
42
using MongoDB.Bson;
53
using MongoDB.Bson.Serialization.Conventions;
64
using MongoDB.Driver;
@@ -9,55 +7,40 @@ namespace ArchitectNow.Mongo.Db
97
{
108
public class MongoDbUtilities : IMongoDbUtilities
119
{
12-
private readonly MongoOptions _options;
13-
private readonly string _dbName;
10+
public string DatabaseName { get; }
11+
public string ConnectionString { get; }
1412
private bool _isDisposed;
1513
private readonly MongoClient _client;
1614

17-
public MongoDbUtilities(IOptions<MongoOptions> options )
15+
public MongoDbUtilities(string connectionString, string databaseName)
1816
{
19-
_options = options.Value;
20-
var connectionString = GetConnectionString();
21-
17+
DatabaseName = databaseName;
18+
ConnectionString = connectionString;
19+
20+
DatabaseName = databaseName;
21+
ConnectionString = connectionString;
22+
2223
if (string.IsNullOrEmpty(connectionString))
2324
{
2425
throw new Exception("No DB connection found");
2526
}
26-
27+
28+
if (string.IsNullOrEmpty(databaseName))
29+
{
30+
throw new Exception("No database name found");
31+
}
32+
2733
var pack = new ConventionPack{
2834
new EnumRepresentationConvention(BsonType.String),
29-
new CamelCaseElementNameConvention()
35+
new CamelCaseElementNameConvention()
3036
};
3137

3238
ConventionRegistry.Register("AN Conventions", pack, t => true);
3339
MongoDefaults.MaxConnectionIdleTime = TimeSpan.FromMinutes(1);
34-
35-
_dbName = GetDatabaseName();
36-
37-
if (string.IsNullOrEmpty(_dbName))
38-
{
39-
throw new Exception("No database name found");
40-
}
41-
4240
_client = new MongoClient(connectionString);
4341
}
4442

45-
public void CreateCollection(string collectionName)
46-
{
47-
48-
}
49-
50-
public string GetConnectionString()
51-
{
52-
return _options.ConnectionString;
53-
}
54-
55-
public string GetDatabaseName()
56-
{
57-
return _options.DatabaseName;
58-
}
59-
60-
public IMongoDatabase Database => _client.GetDatabase(_dbName);
43+
public IMongoDatabase Database => _client.GetDatabase(DatabaseName);
6144

6245
public void Dispose()
6346
{

src/ArchitectNow.Web.Mongo/StartupSample.cs

Lines changed: 12 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
using Microsoft.Extensions.DependencyInjection;
1717
using Microsoft.Extensions.Logging;
1818
using NJsonSchema;
19+
using NSwag.AspNetCore;
1920
using Serilog;
2021

2122
namespace ArchitectNow.Web.Mongo
@@ -50,27 +51,7 @@ public IServiceProvider ConfigureServices(IServiceCollection services)
5051

5152
//Register startup filters (order matters)
5253
services.AddTransient<IStartupFilter, AntiForgeryStartupFilter>();
53-
services.AddTransient<IStartupFilter, SwaggerV2StartupFilter>(serviceProvider =>
54-
{
55-
return new SwaggerV2StartupFilter( serviceProvider.GetService<ILogger<SwaggerV2StartupFilter>>(),
56-
new SwaggerOptionsV2
57-
{
58-
Version = "1.0",
59-
Title = "API",
60-
Description = "API",
61-
Name = "v1",
62-
SwaggerRoute = "/app/docs/v1/swagger.json",
63-
SwaggerUiRoute = "/app/docs",
64-
Configure = settings =>
65-
{
66-
settings.UseJsonEditor = false;
67-
settings.GeneratorSettings.DefaultEnumHandling = EnumHandling.String;
68-
settings.GeneratorSettings.DefaultPropertyNameHandling = PropertyNameHandling.CamelCase;
69-
settings.GeneratorSettings.Version = Assembly.GetEntryAssembly().GetName().Version.ToString();
70-
},
71-
});
72-
});
73-
54+
7455
//last
7556
services.AddTransient<IStartupFilter, HangfireStartupFilter>();
7657

@@ -109,6 +90,16 @@ public void Configure(
10990
_logger.LogInformation($"{nameof(Configure)} starting...");
11091

11192
//Add custom middleware or use IStartupFilter
93+
app.UseSwaggerUi3(settings =>
94+
{
95+
settings.GeneratorSettings.Title = "API";
96+
settings.GeneratorSettings.Description = "API";
97+
settings.SwaggerRoute = "/app/docs/v1/swagger.json";
98+
settings.SwaggerUiRoute = "/app/docs";
99+
settings.GeneratorSettings.DefaultEnumHandling = EnumHandling.String;
100+
settings.GeneratorSettings.DefaultPropertyNameHandling = PropertyNameHandling.CamelCase;
101+
settings.GeneratorSettings.Version = Assembly.GetEntryAssembly().GetName().Version.ToString();
102+
});
112103

113104
appLifetime.ApplicationStopped.Register(() =>
114105
{

src/ArchitectNow.Web.Redis/StartupSample.cs

Lines changed: 13 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
using Microsoft.Extensions.DependencyInjection;
1616
using Microsoft.Extensions.Logging;
1717
using NJsonSchema;
18+
using NSwag.AspNetCore;
1819
using Serilog;
1920

2021
namespace ArchitectNow.Web.Redis
@@ -49,27 +50,7 @@ public IServiceProvider ConfigureServices(IServiceCollection services)
4950

5051
//Register startup filters (order matters)
5152
services.AddTransient<IStartupFilter, AntiForgeryStartupFilter>();
52-
services.AddTransient<IStartupFilter, SwaggerV2StartupFilter>(serviceProvider =>
53-
{
54-
return new SwaggerV2StartupFilter( serviceProvider.GetService<ILogger<SwaggerV2StartupFilter>>(),
55-
new SwaggerOptionsV2
56-
{
57-
Version = "1.0",
58-
Title = "API",
59-
Description = "API",
60-
Name = "v1",
61-
SwaggerRoute = "/app/docs/v1/swagger.json",
62-
SwaggerUiRoute = "/app/docs",
63-
Configure = settings =>
64-
{
65-
settings.UseJsonEditor = false;
66-
settings.GeneratorSettings.DefaultEnumHandling = EnumHandling.String;
67-
settings.GeneratorSettings.DefaultPropertyNameHandling = PropertyNameHandling.CamelCase;
68-
settings.GeneratorSettings.Version = Assembly.GetEntryAssembly().GetName().Version.ToString();
69-
},
70-
});
71-
});
72-
53+
7354
//last
7455
services.AddTransient<IStartupFilter, HangfireStartupFilter>();
7556

@@ -108,6 +89,17 @@ public void Configure(
10889

10990
//Add custom middleware or use IStartupFilter
11091

92+
app.UseSwaggerUi3(settings =>
93+
{
94+
settings.GeneratorSettings.Title = "API";
95+
settings.GeneratorSettings.Description = "API";
96+
settings.SwaggerRoute = "/app/docs/v1/swagger.json";
97+
settings.SwaggerUiRoute = "/app/docs";
98+
settings.GeneratorSettings.DefaultEnumHandling = EnumHandling.String;
99+
settings.GeneratorSettings.DefaultPropertyNameHandling = PropertyNameHandling.CamelCase;
100+
settings.GeneratorSettings.Version = Assembly.GetEntryAssembly().GetName().Version.ToString();
101+
});
102+
111103
appLifetime.ApplicationStopped.Register(() =>
112104
{
113105
Log.CloseAndFlush();

src/ArchitectNow.Web.Sql/StartupSample.cs

Lines changed: 12 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
using Microsoft.Extensions.DependencyInjection;
1616
using Microsoft.Extensions.Logging;
1717
using NJsonSchema;
18+
using NSwag.AspNetCore;
1819
using Serilog;
1920

2021
namespace ArchitectNow.Web.Sql
@@ -49,27 +50,7 @@ public IServiceProvider ConfigureServices(IServiceCollection services)
4950

5051
//Register startup filters (order matters)
5152
services.AddTransient<IStartupFilter, AntiForgeryStartupFilter>();
52-
services.AddTransient<IStartupFilter, SwaggerV2StartupFilter>(serviceProvider =>
53-
{
54-
return new SwaggerV2StartupFilter( serviceProvider.GetService<ILogger<SwaggerV2StartupFilter>>(),
55-
new SwaggerOptionsV2
56-
{
57-
Version = "1.0",
58-
Title = "API",
59-
Description = "API",
60-
Name = "v1",
61-
SwaggerRoute = "/app/docs/v1/swagger.json",
62-
SwaggerUiRoute = "/app/docs",
63-
Configure = settings =>
64-
{
65-
settings.UseJsonEditor = false;
66-
settings.GeneratorSettings.DefaultEnumHandling = EnumHandling.String;
67-
settings.GeneratorSettings.DefaultPropertyNameHandling = PropertyNameHandling.CamelCase;
68-
settings.GeneratorSettings.Version = Assembly.GetEntryAssembly().GetName().Version.ToString();
69-
},
70-
});
71-
});
72-
53+
7354
//last
7455
services.AddTransient<IStartupFilter, HangfireStartupFilter>();
7556

@@ -107,6 +88,16 @@ public void Configure(
10788
_logger.LogInformation($"{nameof(Configure)} starting...");
10889

10990
//Add custom middleware or use IStartupFilter
91+
app.UseSwaggerUi3(settings =>
92+
{
93+
settings.GeneratorSettings.Title = "API";
94+
settings.GeneratorSettings.Description = "API";
95+
settings.SwaggerRoute = "/app/docs/v1/swagger.json";
96+
settings.SwaggerUiRoute = "/app/docs";
97+
settings.GeneratorSettings.DefaultEnumHandling = EnumHandling.String;
98+
settings.GeneratorSettings.DefaultPropertyNameHandling = PropertyNameHandling.CamelCase;
99+
settings.GeneratorSettings.Version = Assembly.GetEntryAssembly().GetName().Version.ToString();
100+
});
110101

111102
appLifetime.ApplicationStopped.Register(() =>
112103
{

src/ArchitectNow.Web/Configuration/SwaggerStartupBase.cs

Lines changed: 0 additions & 13 deletions
This file was deleted.

src/ArchitectNow.Web/Configuration/SwaggerStartupFilter.cs

Lines changed: 0 additions & 72 deletions
This file was deleted.

0 commit comments

Comments
 (0)