-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathProgram.cs
72 lines (58 loc) · 2.42 KB
/
Program.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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
using System;
using System.Threading;
using Microsoft.Extensions.Logging;
using Microsoft.Azure.Cosmos.Fluent;
using System.Threading.Tasks;
using System.Collections.Generic;
using System.Text.Json;
using System.IO;
using Microsoft.Azure.Cosmos;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Configuration.UserSecrets;
namespace uss_champlin_loader
{
class Program
{
// static readonly string ConnectionString = Environment.GetEnvironmentVariable("CosmosConnection");
static ILogger _logger;
static async Task Main(string[] args)
{
//setup secrets/builder stuff
var builder = new ConfigurationBuilder();
builder.AddUserSecrets<Program>();
var Configuration = builder.Build();
var ConnectionString = Configuration["CosmosConnection"];
//setup logger
var fac = LoggerFactory.Create(builder =>
{
builder
.AddFilter("Microsoft", LogLevel.Warning)
.AddFilter("System", LogLevel.Warning)
.AddFilter("LoggingConsoleApp.Program", LogLevel.Debug)
.AddConsole();
});
_logger = fac.CreateLogger<Program>();
//startup
_logger.LogCritical("Beginning");
Thread.Sleep(2000);
_logger.LogInformation("---- Setup DB connection ----");
var client = new CosmosClientBuilder(ConnectionString).WithBulkExecution(true).Build();
var container = client.GetContainer("champlin", "champlin");
_logger.LogInformation("---- Reading file ----");
List<CrewDto> crewList = new List<CrewDto>();
using(FileStream fs = File.OpenRead("crewList.json"))
{
crewList = await JsonSerializer.DeserializeAsync<List<CrewDto>>(fs);
}
_logger.LogInformation($"Fetched {crewList.Count} items");
_logger.LogInformation("---- Upserting items now ----");
List<Task> taskList = new List<Task>();
foreach(var crew in crewList)
{
taskList.Add(container.UpsertItemAsync<CrewDto>(crew, new PartitionKey("UssChamplin:Crew")));
}
await Task.WhenAll(taskList);
_logger.LogInformation("---- Finished ----");
}
}
}