-
Notifications
You must be signed in to change notification settings - Fork 253
/
Copy pathMongoDbSeeder.cs
42 lines (36 loc) · 1.4 KB
/
MongoDbSeeder.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
using MongoDB.Driver;
using Steeltoe.Connectors;
using Steeltoe.Connectors.MongoDb;
using Steeltoe.Samples.MongoDb.Data;
namespace Steeltoe.Samples.MongoDb;
internal sealed class MongoDbSeeder
{
public static async Task CreateSampleDataAsync(IServiceProvider serviceProvider)
{
var connectorFactory = serviceProvider.GetRequiredService<ConnectorFactory<MongoDbOptions, IMongoClient>>();
Connector<MongoDbOptions, IMongoClient> connector = connectorFactory.Get();
IMongoClient client = connector.GetConnection();
IMongoCollection<SampleObject> collection = await DropCreateCollectionAsync(client, connector.Options.Database!);
await InsertSampleDataAsync(collection);
}
private static async Task<IMongoCollection<SampleObject>> DropCreateCollectionAsync(IMongoClient client, string databaseName)
{
IMongoDatabase database = client.GetDatabase(databaseName);
await database.DropCollectionAsync("SampleObjects");
return database.GetCollection<SampleObject>("SampleObjects");
}
private static async Task InsertSampleDataAsync(IMongoCollection<SampleObject> collection)
{
await collection.InsertManyAsync(new[]
{
new SampleObject
{
Text = "Object1"
},
new SampleObject
{
Text = "Object2"
}
});
}
}