Commit 8ec0487f authored by Hoang Viet Dung's avatar Hoang Viet Dung 🏃

created

parent 99d8f71a
namespace MigrageAudienceHash
{
public class Common
{
const int PartitionCount = 10;
public static int GetHash(string macAddress)
{
return Math.Abs(GetDeterministicHashCode(macAddress) % PartitionCount);
}
static int GetDeterministicHashCode(string str)
{
unchecked
{
int hash1 = (5381 << 16) + 5381;
int hash2 = hash1;
for (int i = 0; i < str.Length; i += 2)
{
hash1 = ((hash1 << 5) + hash1) ^ str[i];
if (i == str.Length - 1)
break;
hash2 = ((hash2 << 5) + hash2) ^ str[i + 1];
}
return Math.Abs(hash1 + (hash2 * 1566083941));
}
}
}
}
namespace MigrageAudienceHash
{
public class ConfigSettings
{
public string MongoDbConnectionString { get; set; }
public string MongoDbName { get; set; }
public string TimeScaleDbConnectionString { get; set; }
public string TimeScaleDbSchema { get; set; }
public string FromTimeline { get; set; }
public string IsMakeNewData { get; set; }
}
}
using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;
namespace MigrageAudienceHash.DB.mongo
{
public class AudienceObject
{
[BsonId]
public ObjectId _id { get; set; }
public long placeId { get; set; }
public long campaignId { get; set; }
public int timeline { get; set; }
public string pageCode { get; set; }
public List<string> audiencies { get; set; }
public int audienceHash { get; set; }
}
}
using MongoDB.Driver;
namespace MigrageAudienceHash.DB.mongo
{
public class MongoContext : IDisposable
{
private readonly IMongoDatabase _database = null;
public MongoContext(MongoClient client, string databaseName)
{
_database = client.GetDatabase(databaseName);
}
public void Dispose()
{
Dispose();
}
public IMongoCollection<AudienceObject> AudienceObject => _database.GetCollection<AudienceObject>("audienceObject");
}
}
namespace MigrageAudienceHash.DB.postgres
{
public partial class AnalyticView
{
public long placeId { get; set; }
public long campaignId { get; set; }
public string pageCode { get; set; }
public string audiencies { get; set; }
}
}
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="AcmUtilities" Version="1.4.17" />
<PackageReference Include="Grpc.Net.ClientFactory" Version="2.48.0" />
<PackageReference Include="Grpc.Tools" Version="2.48.1">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="6.0.9" />
<PackageReference Include="Microsoft.Extensions.Configuration" Version="6.0.1" />
<PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="6.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="6.0.1" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="6.0.0" />
<PackageReference Include="MongoDB.Driver" Version="2.17.1" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="6.0.7" />
</ItemGroup>
<ItemGroup>
<None Update="appsettings.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<_LastSelectedProfileId>D:\GITS\misc\acm-tool-migrate-audience-hash\MigrageAudienceHash\Properties\PublishProfiles\FolderProfile.pubxml</_LastSelectedProfileId>
</PropertyGroup>
</Project>
\ No newline at end of file

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.3.32901.215
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MigrageAudienceHash", "MigrageAudienceHash.csproj", "{6103F9C6-B259-467F-99F7-5BDE4BE5350C}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{6103F9C6-B259-467F-99F7-5BDE4BE5350C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6103F9C6-B259-467F-99F7-5BDE4BE5350C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6103F9C6-B259-467F-99F7-5BDE4BE5350C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6103F9C6-B259-467F-99F7-5BDE4BE5350C}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {318B49B7-04FA-4BF1-8141-0CCC67A28FC0}
EndGlobalSection
EndGlobal
using AcmUtilities.Enums;
using AcmUtilities.Helper;
using Microsoft.Extensions.Configuration;
using MigrageAudienceHash;
using MigrageAudienceHash.DB.mongo;
using MigrageAudienceHash.DB.postgres;
using MigrageAudienceHash.Service;
using Npgsql;
using System.Diagnostics;
using System.Globalization;
// Build a config object, using env vars and JSON providers.
var config = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.AddEnvironmentVariables()
.Build();
AppContext.SetSwitch("Npgsql.EnableLegacyTimestampBehavior", true);
var settings = config.GetRequiredSection("Configuration").Get<ConfigSettings>();
var mongoContext = new MongoContext(new MongoDB.Driver.MongoClient(settings.MongoDbConnectionString), settings.MongoDbName);
var postgresConnection = new NpgsqlConnection(settings.TimeScaleDbConnectionString);
var analyticViewService = new AnalyticViewService(postgresConnection);
var audienceObjectService = new AudienceObjectService(mongoContext);
DateTime fromDate;
if (!DateTime.TryParseExact(settings.FromTimeline, "yyyyMMdd", CultureInfo.InvariantCulture, DateTimeStyles.None, out fromDate))
{
Console.WriteLine("from timeline not valid!");
return;
}
var nowDate = DateTime.Now.Date;
int pageSize = 500;
var timeline = 0;
try
{
while (fromDate.Date < nowDate)
{
await ProcessByDay(fromDate, analyticViewService, audienceObjectService, settings.IsMakeNewData == "1");
fromDate = fromDate.AddDays(1);
}
}
catch (Exception ex)
{
Console.WriteLine(timeline + ": " + ex.Message);
}
Console.WriteLine("DONE!");
Console.Read();
async Task ProcessByDay(DateTime date, AnalyticViewService analyticViewService, AudienceObjectService audienceObjectService, bool isMakeNewData = true)
{
int totalAddToMongoByTimeline = 0;
int pageIndex = 0;
timeline = CommonHelper.DateToTimeline(date, TimelineType.day);
Console.WriteLine(timeline + ": start " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
var watch = Stopwatch.StartNew();
var analyticViews = await analyticViewService.GetData(date, pageIndex, pageSize);
while (analyticViews.Count > 0)
{
var audienceObjects = BuildAudienceObject(analyticViews, timeline);
//push into Mongo
if (isMakeNewData)
{
await audienceObjectService.AddMany(audienceObjects);
}
else
{
foreach (var audienceObject in audienceObjects)
{
await audienceObjectService.SaveUpdate(audienceObject);
}
}
totalAddToMongoByTimeline += audienceObjects.Count;
//next page in this timeline
pageIndex++;
analyticViews = await analyticViewService.GetData(date, pageIndex, pageSize);
}
watch.Stop();
Console.WriteLine(timeline + ": finished, total added to mongo: " + totalAddToMongoByTimeline + " in " + watch.ElapsedTicks / Stopwatch.Frequency + "s");
}
List<AudienceObject> BuildAudienceObject(List<AnalyticView> analyticViews, int timeline)
{
var audienceObjects = new List<AudienceObject>();
//bóc chuỗi macs thành list và group tiếp theo audienceHash
foreach (var analyticView in analyticViews)
{
var macs = analyticView.audiencies.Split(',');
foreach (var macAddress in macs)
{
var audienceHash = Common.GetHash(macAddress);
var existed = audienceObjects.FirstOrDefault(x =>
x.placeId == analyticView.placeId &&
x.campaignId == analyticView.campaignId &&
x.pageCode == analyticView.pageCode &&
x.audienceHash == audienceHash);
if (existed != null)
{
existed.audiencies.Add(macAddress);
}
else
{
audienceObjects.Add(new AudienceObject
{
timeline = timeline,
audienceHash = Common.GetHash(macAddress),
placeId = analyticView.placeId,
campaignId = analyticView.campaignId,
pageCode = analyticView.pageCode,
audiencies = new List<string> { macAddress }
});
}
}
}
return audienceObjects;
}
<?xml version="1.0" encoding="utf-8"?>
<!--
https://go.microsoft.com/fwlink/?LinkID=208121.
-->
<Project>
<PropertyGroup>
<Configuration>Release</Configuration>
<Platform>Any CPU</Platform>
<PublishDir>D:\GITS\misc\acm-tool-migrate-audience-hash\deployed</PublishDir>
<PublishProtocol>FileSystem</PublishProtocol>
<_TargetId>Folder</_TargetId>
<TargetFramework>net6.0</TargetFramework>
<SelfContained>false</SelfContained>
</PropertyGroup>
</Project>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<!--
https://go.microsoft.com/fwlink/?LinkID=208121.
-->
<Project>
<PropertyGroup>
<History>True|2022-09-26T11:24:36.0454585Z;True|2022-09-26T18:24:03.1448588+07:00;True|2022-09-26T18:16:31.5544749+07:00;True|2022-09-26T18:15:02.4832791+07:00;True|2022-09-26T16:40:05.2917765+07:00;True|2022-09-26T16:32:33.3711265+07:00;True|2022-09-26T16:20:03.6242054+07:00;True|2022-09-26T16:18:06.2414658+07:00;</History>
<LastFailureDetails />
</PropertyGroup>
</Project>
\ No newline at end of file
using MigrageAudienceHash.DB.postgres;
using Npgsql;
namespace MigrageAudienceHash.Service
{
public class AnalyticViewService
{
NpgsqlConnection _connection;
const string DateSqlStartOfDayFormat = "yyyy-MM-dd";
const string DateSqlEndOfDayFormat = "yyyy-MM-dd 23:59:59";
string sqlRaw = "select place_id,campaign_id,page_code,string_agg(mac_address,',') audiencies " +
"from analytic_view where created_date>'{0}' and created_date<'{1}' " +
"group by place_id,campaign_id,page_code " +
"order by place_id,campaign_id,page_code " +
"offset {2} limit {3}";
public AnalyticViewService(NpgsqlConnection connection)
{
_connection = connection;
}
public async Task<List<AnalyticView>> GetData(DateTime date, int pageIndex = 0, int pageSize = 100)
{
var results = new List<AnalyticView>();
if (_connection.State == System.Data.ConnectionState.Closed)
_connection.Open();
var sql = string.Format(sqlRaw, date.ToString(DateSqlStartOfDayFormat), date.ToString(DateSqlEndOfDayFormat), pageSize * pageIndex, pageSize);
using (var command = new NpgsqlCommand(sql, _connection))
{
var reader = await command.ExecuteReaderAsync();
while (await reader.ReadAsync())
{
results.Add(new AnalyticView
{
placeId = reader.GetInt64(0),
campaignId = reader.GetInt64(1),
pageCode = reader.GetString(2),
audiencies = reader.GetString(3)
});
}
_connection.Close();
}
return results;
}
}
}
using MigrageAudienceHash.DB.mongo;
using MongoDB.Driver;
using System.Linq.Expressions;
namespace MigrageAudienceHash.Service
{
public class AudienceObjectService
{
private readonly MongoContext _context;
public AudienceObjectService(MongoContext context)
{
_context = context;
}
public async Task<List<AudienceObject>> GetAudienceObjectByCondition(Expression<Func<AudienceObject, bool>> condition)
{
var results = new List<AudienceObject>();
using (var cursor = await _context.AudienceObject.FindAsync(condition))
{
while (await cursor.MoveNextAsync())
{
results.AddRange(cursor.Current);
}
}
return results;
}
public async Task SaveUpdate(AudienceObject audienceObject)
{
var id = (await _context.AudienceObject.Find(x =>
x.timeline == audienceObject.timeline &&
x.placeId == audienceObject.placeId &&
x.campaignId == audienceObject.campaignId &&
x.pageCode == audienceObject.pageCode &&
x.audienceHash == audienceObject.audienceHash).FirstOrDefaultAsync())?._id;
if (id != null)
{
var update = Builders<AudienceObject>.Update.AddToSetEach(x => x.audiencies, audienceObject.audiencies);
await _context.AudienceObject.UpdateOneAsync(x => x._id == id, update);
}
else
await _context.AudienceObject.InsertOneAsync(audienceObject);
}
public async Task AddMany(List<AudienceObject> audienceObjects)
{
await _context.AudienceObject.InsertManyAsync(audienceObjects);
}
}
}
{
"Configuration": {
"MongoDbConnectionString": "mongodb://118.70.206.204:27017",
"MongoDbName": "acm",
"TimeScaleDbConnectionString": "Host=192.168.10.101;Port=5432;Database=acm;Username=acm;Password=Awing@2020;Command Timeout=300",
"FromTimeline": "20200723",
"IsMakeNewData": "1"
}
}
{
"runtimeTarget": {
"name": ".NETCoreApp,Version=v6.0",
"signature": ""
},
"compilationOptions": {},
"targets": {
".NETCoreApp,Version=v6.0": {
"MigrageAudienceHash/1.0.0": {
"dependencies": {
"AcmUtilities": "1.4.17",
"Grpc.Net.ClientFactory": "2.48.0",
"Grpc.Tools": "2.48.1",
"Microsoft.EntityFrameworkCore.Relational": "6.0.9",
"Microsoft.Extensions.Configuration": "6.0.1",
"Microsoft.Extensions.Configuration.Binder": "6.0.0",
"Microsoft.Extensions.Configuration.EnvironmentVariables": "6.0.1",
"Microsoft.Extensions.Configuration.Json": "6.0.0",
"MongoDB.Driver": "2.17.1",
"Newtonsoft.Json": "13.0.1",
"Npgsql.EntityFrameworkCore.PostgreSQL": "6.0.7"
},
"runtime": {
"MigrageAudienceHash.dll": {}
}
},
"AcmUtilities/1.4.17": {
"dependencies": {
"Confluent.Kafka": "1.9.2",
"Google.Protobuf": "3.21.5",
"Microsoft.AspNetCore.Cryptography.KeyDerivation": "6.0.8",
"Microsoft.AspNetCore.Http": "2.2.2",
"Microsoft.EntityFrameworkCore": "6.0.9",
"Microsoft.Extensions.Configuration": "6.0.1",
"Newtonsoft.Json": "13.0.1"
},
"runtime": {
"lib/net6.0/AcmUtilities.dll": {
"assemblyVersion": "1.0.0.0",
"fileVersion": "1.0.0.0"
}
}
},
"Confluent.Kafka/1.9.2": {
"dependencies": {
"System.Memory": "4.5.3",
"librdkafka.redist": "1.9.2"
},
"runtime": {
"lib/net6.0/Confluent.Kafka.dll": {
"assemblyVersion": "1.9.2.0",
"fileVersion": "1.9.2.0"
}
}
},
"DnsClient/1.6.1": {
"dependencies": {
"Microsoft.Win32.Registry": "5.0.0"
},
"runtime": {
"lib/net5.0/DnsClient.dll": {
"assemblyVersion": "1.6.1.0",
"fileVersion": "1.6.1.0"
}
}
},
"Google.Protobuf/3.21.5": {
"runtime": {
"lib/net5.0/Google.Protobuf.dll": {
"assemblyVersion": "3.21.5.0",
"fileVersion": "3.21.5.0"
}
}
},
"Grpc.Core.Api/2.48.0": {
"dependencies": {
"System.Memory": "4.5.3"
},
"runtime": {
"lib/netstandard2.1/Grpc.Core.Api.dll": {
"assemblyVersion": "2.0.0.0",
"fileVersion": "2.48.0.0"
}
}
},
"Grpc.Net.Client/2.48.0": {
"dependencies": {
"Grpc.Net.Common": "2.48.0",
"Microsoft.Extensions.Logging.Abstractions": "6.0.0"
},
"runtime": {
"lib/net6.0/Grpc.Net.Client.dll": {
"assemblyVersion": "2.0.0.0",
"fileVersion": "2.48.0.0"
}
}
},
"Grpc.Net.ClientFactory/2.48.0": {
"dependencies": {
"Grpc.Net.Client": "2.48.0",
"Microsoft.Extensions.Http": "3.0.3"
},
"runtime": {
"lib/net6.0/Grpc.Net.ClientFactory.dll": {
"assemblyVersion": "2.0.0.0",
"fileVersion": "2.48.0.0"
}
}
},
"Grpc.Net.Common/2.48.0": {
"dependencies": {
"Grpc.Core.Api": "2.48.0"
},
"runtime": {
"lib/net6.0/Grpc.Net.Common.dll": {
"assemblyVersion": "2.0.0.0",
"fileVersion": "2.48.0.0"
}
}
},
"Grpc.Tools/2.48.1": {},
"librdkafka.redist/1.9.2": {
"runtimeTargets": {
"runtimes/linux-arm64/native/librdkafka.so": {
"rid": "linux-arm64",
"assetType": "native",
"fileVersion": "0.0.0.0"
},
"runtimes/linux-x64/native/alpine-librdkafka.so": {
"rid": "linux-x64",
"assetType": "native",
"fileVersion": "0.0.0.0"
},
"runtimes/linux-x64/native/centos6-librdkafka.so": {
"rid": "linux-x64",
"assetType": "native",
"fileVersion": "0.0.0.0"
},
"runtimes/linux-x64/native/centos7-librdkafka.so": {
"rid": "linux-x64",
"assetType": "native",
"fileVersion": "0.0.0.0"
},
"runtimes/linux-x64/native/librdkafka.so": {
"rid": "linux-x64",
"assetType": "native",
"fileVersion": "0.0.0.0"
},
"runtimes/osx-arm64/native/librdkafka.dylib": {
"rid": "osx-arm64",
"assetType": "native",
"fileVersion": "0.0.0.0"
},
"runtimes/osx-x64/native/librdkafka.dylib": {
"rid": "osx-x64",
"assetType": "native",
"fileVersion": "0.0.0.0"
},
"runtimes/win-x64/native/libcrypto-1_1-x64.dll": {
"rid": "win-x64",
"assetType": "native",
"fileVersion": "1.1.1.14"
},
"runtimes/win-x64/native/libcurl.dll": {
"rid": "win-x64",
"assetType": "native",
"fileVersion": "7.84.0.0"
},
"runtimes/win-x64/native/librdkafka.dll": {
"rid": "win-x64",
"assetType": "native",
"fileVersion": "0.0.0.0"
},
"runtimes/win-x64/native/librdkafkacpp.dll": {
"rid": "win-x64",
"assetType": "native",
"fileVersion": "0.0.0.0"
},
"runtimes/win-x64/native/libssl-1_1-x64.dll": {
"rid": "win-x64",
"assetType": "native",
"fileVersion": "1.1.1.14"
},
"runtimes/win-x64/native/msvcp140.dll": {
"rid": "win-x64",
"assetType": "native",
"fileVersion": "14.29.30040.0"
},
"runtimes/win-x64/native/vcruntime140.dll": {
"rid": "win-x64",
"assetType": "native",
"fileVersion": "14.29.30040.0"
},
"runtimes/win-x64/native/zlib1.dll": {
"rid": "win-x64",
"assetType": "native",
"fileVersion": "1.2.12.0"
},
"runtimes/win-x64/native/zstd.dll": {
"rid": "win-x64",
"assetType": "native",
"fileVersion": "1.5.2.0"
},
"runtimes/win-x86/native/libcrypto-1_1.dll": {
"rid": "win-x86",
"assetType": "native",
"fileVersion": "1.1.1.14"
},
"runtimes/win-x86/native/libcurl.dll": {
"rid": "win-x86",
"assetType": "native",
"fileVersion": "7.84.0.0"
},
"runtimes/win-x86/native/librdkafka.dll": {
"rid": "win-x86",
"assetType": "native",
"fileVersion": "0.0.0.0"
},
"runtimes/win-x86/native/librdkafkacpp.dll": {
"rid": "win-x86",
"assetType": "native",
"fileVersion": "0.0.0.0"
},
"runtimes/win-x86/native/libssl-1_1.dll": {
"rid": "win-x86",
"assetType": "native",
"fileVersion": "1.1.1.14"
},
"runtimes/win-x86/native/msvcp140.dll": {
"rid": "win-x86",
"assetType": "native",
"fileVersion": "14.29.30040.0"
},
"runtimes/win-x86/native/vcruntime140.dll": {
"rid": "win-x86",
"assetType": "native",
"fileVersion": "14.29.30040.0"
},
"runtimes/win-x86/native/zlib1.dll": {
"rid": "win-x86",
"assetType": "native",
"fileVersion": "1.2.12.0"
},
"runtimes/win-x86/native/zstd.dll": {
"rid": "win-x86",
"assetType": "native",
"fileVersion": "1.5.2.0"
}
}
},
"Microsoft.AspNetCore.Cryptography.Internal/6.0.8": {
"runtime": {
"lib/net6.0/Microsoft.AspNetCore.Cryptography.Internal.dll": {
"assemblyVersion": "6.0.0.0",
"fileVersion": "6.0.822.36316"
}
}
},
"Microsoft.AspNetCore.Cryptography.KeyDerivation/6.0.8": {
"dependencies": {
"Microsoft.AspNetCore.Cryptography.Internal": "6.0.8"
},
"runtime": {
"lib/net6.0/Microsoft.AspNetCore.Cryptography.KeyDerivation.dll": {
"assemblyVersion": "6.0.0.0",
"fileVersion": "6.0.822.36316"
}
}
},
"Microsoft.AspNetCore.Http/2.2.2": {
"dependencies": {
"Microsoft.AspNetCore.Http.Abstractions": "2.2.0",
"Microsoft.AspNetCore.WebUtilities": "2.2.0",
"Microsoft.Extensions.ObjectPool": "2.2.0",
"Microsoft.Extensions.Options": "6.0.0",
"Microsoft.Net.Http.Headers": "2.2.0"
},
"runtime": {
"lib/netstandard2.0/Microsoft.AspNetCore.Http.dll": {
"assemblyVersion": "2.2.2.0",
"fileVersion": "2.2.2.19024"
}
}
},
"Microsoft.AspNetCore.Http.Abstractions/2.2.0": {
"dependencies": {
"Microsoft.AspNetCore.Http.Features": "2.2.0",
"System.Text.Encodings.Web": "6.0.0"
},
"runtime": {
"lib/netstandard2.0/Microsoft.AspNetCore.Http.Abstractions.dll": {
"assemblyVersion": "2.2.0.0",
"fileVersion": "2.2.0.18316"
}
}
},
"Microsoft.AspNetCore.Http.Features/2.2.0": {
"dependencies": {
"Microsoft.Extensions.Primitives": "6.0.0"
},
"runtime": {
"lib/netstandard2.0/Microsoft.AspNetCore.Http.Features.dll": {
"assemblyVersion": "2.2.0.0",
"fileVersion": "2.2.0.18316"
}
}
},
"Microsoft.AspNetCore.WebUtilities/2.2.0": {
"dependencies": {
"Microsoft.Net.Http.Headers": "2.2.0",
"System.Text.Encodings.Web": "6.0.0"
},
"runtime": {
"lib/netstandard2.0/Microsoft.AspNetCore.WebUtilities.dll": {
"assemblyVersion": "2.2.0.0",
"fileVersion": "2.2.0.18316"
}
}
},
"Microsoft.EntityFrameworkCore/6.0.9": {
"dependencies": {
"Microsoft.EntityFrameworkCore.Abstractions": "6.0.9",
"Microsoft.EntityFrameworkCore.Analyzers": "6.0.9",
"Microsoft.Extensions.Caching.Memory": "6.0.1",
"Microsoft.Extensions.DependencyInjection": "6.0.0",
"Microsoft.Extensions.Logging": "6.0.0",
"System.Collections.Immutable": "6.0.0",
"System.Diagnostics.DiagnosticSource": "6.0.0"
},
"runtime": {
"lib/net6.0/Microsoft.EntityFrameworkCore.dll": {
"assemblyVersion": "6.0.9.0",
"fileVersion": "6.0.922.41505"
}
}
},
"Microsoft.EntityFrameworkCore.Abstractions/6.0.9": {
"runtime": {
"lib/net6.0/Microsoft.EntityFrameworkCore.Abstractions.dll": {
"assemblyVersion": "6.0.9.0",
"fileVersion": "6.0.922.41505"
}
}
},
"Microsoft.EntityFrameworkCore.Analyzers/6.0.9": {},
"Microsoft.EntityFrameworkCore.Relational/6.0.9": {
"dependencies": {
"Microsoft.EntityFrameworkCore": "6.0.9",
"Microsoft.Extensions.Configuration.Abstractions": "6.0.0"
},
"runtime": {
"lib/net6.0/Microsoft.EntityFrameworkCore.Relational.dll": {
"assemblyVersion": "6.0.9.0",
"fileVersion": "6.0.922.41505"
}
}
},
"Microsoft.Extensions.Caching.Abstractions/6.0.0": {
"dependencies": {
"Microsoft.Extensions.Primitives": "6.0.0"
},
"runtime": {
"lib/netstandard2.0/Microsoft.Extensions.Caching.Abstractions.dll": {
"assemblyVersion": "6.0.0.0",
"fileVersion": "6.0.21.52210"
}
}
},
"Microsoft.Extensions.Caching.Memory/6.0.1": {
"dependencies": {
"Microsoft.Extensions.Caching.Abstractions": "6.0.0",
"Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
"Microsoft.Extensions.Logging.Abstractions": "6.0.0",
"Microsoft.Extensions.Options": "6.0.0",
"Microsoft.Extensions.Primitives": "6.0.0"
},
"runtime": {
"lib/netstandard2.0/Microsoft.Extensions.Caching.Memory.dll": {
"assemblyVersion": "6.0.0.0",
"fileVersion": "6.0.222.6406"
}
}
},
"Microsoft.Extensions.Configuration/6.0.1": {
"dependencies": {
"Microsoft.Extensions.Configuration.Abstractions": "6.0.0",
"Microsoft.Extensions.Primitives": "6.0.0"
},
"runtime": {
"lib/netstandard2.0/Microsoft.Extensions.Configuration.dll": {
"assemblyVersion": "6.0.0.0",
"fileVersion": "6.0.322.12309"
}
}
},
"Microsoft.Extensions.Configuration.Abstractions/6.0.0": {
"dependencies": {
"Microsoft.Extensions.Primitives": "6.0.0"
},
"runtime": {
"lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.dll": {
"assemblyVersion": "6.0.0.0",
"fileVersion": "6.0.21.52210"
}
}
},
"Microsoft.Extensions.Configuration.Binder/6.0.0": {
"dependencies": {
"Microsoft.Extensions.Configuration.Abstractions": "6.0.0"
},
"runtime": {
"lib/netstandard2.0/Microsoft.Extensions.Configuration.Binder.dll": {
"assemblyVersion": "6.0.0.0",
"fileVersion": "6.0.21.52210"
}
}
},
"Microsoft.Extensions.Configuration.EnvironmentVariables/6.0.1": {
"dependencies": {
"Microsoft.Extensions.Configuration": "6.0.1",
"Microsoft.Extensions.Configuration.Abstractions": "6.0.0"
},
"runtime": {
"lib/netstandard2.0/Microsoft.Extensions.Configuration.EnvironmentVariables.dll": {
"assemblyVersion": "6.0.0.0",
"fileVersion": "6.0.222.6406"
}
}
},
"Microsoft.Extensions.Configuration.FileExtensions/6.0.0": {
"dependencies": {
"Microsoft.Extensions.Configuration": "6.0.1",
"Microsoft.Extensions.Configuration.Abstractions": "6.0.0",
"Microsoft.Extensions.FileProviders.Abstractions": "6.0.0",
"Microsoft.Extensions.FileProviders.Physical": "6.0.0",
"Microsoft.Extensions.Primitives": "6.0.0"
},
"runtime": {
"lib/netstandard2.0/Microsoft.Extensions.Configuration.FileExtensions.dll": {
"assemblyVersion": "6.0.0.0",
"fileVersion": "6.0.21.52210"
}
}
},
"Microsoft.Extensions.Configuration.Json/6.0.0": {
"dependencies": {
"Microsoft.Extensions.Configuration": "6.0.1",
"Microsoft.Extensions.Configuration.Abstractions": "6.0.0",
"Microsoft.Extensions.Configuration.FileExtensions": "6.0.0",
"Microsoft.Extensions.FileProviders.Abstractions": "6.0.0",
"System.Text.Json": "6.0.0"
},
"runtime": {
"lib/netstandard2.1/Microsoft.Extensions.Configuration.Json.dll": {
"assemblyVersion": "6.0.0.0",
"fileVersion": "6.0.21.52210"
}
}
},
"Microsoft.Extensions.DependencyInjection/6.0.0": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
"System.Runtime.CompilerServices.Unsafe": "6.0.0"
},
"runtime": {
"lib/net6.0/Microsoft.Extensions.DependencyInjection.dll": {
"assemblyVersion": "6.0.0.0",
"fileVersion": "6.0.21.52210"
}
}
},
"Microsoft.Extensions.DependencyInjection.Abstractions/6.0.0": {
"runtime": {
"lib/net6.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {
"assemblyVersion": "6.0.0.0",
"fileVersion": "6.0.21.52210"
}
}
},
"Microsoft.Extensions.FileProviders.Abstractions/6.0.0": {
"dependencies": {
"Microsoft.Extensions.Primitives": "6.0.0"
},
"runtime": {
"lib/net6.0/Microsoft.Extensions.FileProviders.Abstractions.dll": {
"assemblyVersion": "6.0.0.0",
"fileVersion": "6.0.21.52210"
}
}
},
"Microsoft.Extensions.FileProviders.Physical/6.0.0": {
"dependencies": {
"Microsoft.Extensions.FileProviders.Abstractions": "6.0.0",
"Microsoft.Extensions.FileSystemGlobbing": "6.0.0",
"Microsoft.Extensions.Primitives": "6.0.0"
},
"runtime": {
"lib/net6.0/Microsoft.Extensions.FileProviders.Physical.dll": {
"assemblyVersion": "6.0.0.0",
"fileVersion": "6.0.21.52210"
}
}
},
"Microsoft.Extensions.FileSystemGlobbing/6.0.0": {
"runtime": {
"lib/net6.0/Microsoft.Extensions.FileSystemGlobbing.dll": {
"assemblyVersion": "6.0.0.0",
"fileVersion": "6.0.21.52210"
}
}
},
"Microsoft.Extensions.Http/3.0.3": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
"Microsoft.Extensions.Logging": "6.0.0",
"Microsoft.Extensions.Options": "6.0.0"
},
"runtime": {
"lib/netcoreapp3.0/Microsoft.Extensions.Http.dll": {
"assemblyVersion": "3.0.3.0",
"fileVersion": "3.0.320.7202"
}
}
},
"Microsoft.Extensions.Logging/6.0.0": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection": "6.0.0",
"Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
"Microsoft.Extensions.Logging.Abstractions": "6.0.0",
"Microsoft.Extensions.Options": "6.0.0",
"System.Diagnostics.DiagnosticSource": "6.0.0"
},
"runtime": {
"lib/netstandard2.1/Microsoft.Extensions.Logging.dll": {
"assemblyVersion": "6.0.0.0",
"fileVersion": "6.0.21.52210"
}
}
},
"Microsoft.Extensions.Logging.Abstractions/6.0.0": {
"runtime": {
"lib/net6.0/Microsoft.Extensions.Logging.Abstractions.dll": {
"assemblyVersion": "6.0.0.0",
"fileVersion": "6.0.21.52210"
}
}
},
"Microsoft.Extensions.ObjectPool/2.2.0": {
"runtime": {
"lib/netstandard2.0/Microsoft.Extensions.ObjectPool.dll": {
"assemblyVersion": "2.2.0.0",
"fileVersion": "2.2.0.18315"
}
}
},
"Microsoft.Extensions.Options/6.0.0": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
"Microsoft.Extensions.Primitives": "6.0.0"
},
"runtime": {
"lib/netstandard2.1/Microsoft.Extensions.Options.dll": {
"assemblyVersion": "6.0.0.0",
"fileVersion": "6.0.21.52210"
}
}
},
"Microsoft.Extensions.Primitives/6.0.0": {
"dependencies": {
"System.Runtime.CompilerServices.Unsafe": "6.0.0"
},
"runtime": {
"lib/net6.0/Microsoft.Extensions.Primitives.dll": {
"assemblyVersion": "6.0.0.0",
"fileVersion": "6.0.21.52210"
}
}
},
"Microsoft.Net.Http.Headers/2.2.0": {
"dependencies": {
"Microsoft.Extensions.Primitives": "6.0.0",
"System.Buffers": "4.5.1"
},
"runtime": {
"lib/netstandard2.0/Microsoft.Net.Http.Headers.dll": {
"assemblyVersion": "2.2.0.0",
"fileVersion": "2.2.0.18316"
}
}
},
"Microsoft.NETCore.Platforms/5.0.0": {},
"Microsoft.Win32.Registry/5.0.0": {
"dependencies": {
"System.Security.AccessControl": "5.0.0",
"System.Security.Principal.Windows": "5.0.0"
}
},
"MongoDB.Bson/2.17.1": {
"dependencies": {
"System.Runtime.CompilerServices.Unsafe": "6.0.0"
},
"runtime": {
"lib/netstandard2.1/MongoDB.Bson.dll": {
"assemblyVersion": "2.17.1.0",
"fileVersion": "2.17.1.0"
}
}
},
"MongoDB.Driver/2.17.1": {
"dependencies": {
"MongoDB.Bson": "2.17.1",
"MongoDB.Driver.Core": "2.17.1",
"MongoDB.Libmongocrypt": "1.5.5"
},
"runtime": {
"lib/netstandard2.1/MongoDB.Driver.dll": {
"assemblyVersion": "2.17.1.0",
"fileVersion": "2.17.1.0"
}
}
},
"MongoDB.Driver.Core/2.17.1": {
"dependencies": {
"DnsClient": "1.6.1",
"MongoDB.Bson": "2.17.1",
"MongoDB.Libmongocrypt": "1.5.5",
"SharpCompress": "0.30.1",
"System.Buffers": "4.5.1"
},
"runtime": {
"lib/netstandard2.1/MongoDB.Driver.Core.dll": {
"assemblyVersion": "2.17.1.0",
"fileVersion": "2.17.1.0"
}
},
"runtimeTargets": {
"runtimes/linux/native/libsnappy64.so": {
"rid": "linux",
"assetType": "native",
"fileVersion": "0.0.0.0"
},
"runtimes/linux/native/libzstd.so": {
"rid": "linux",
"assetType": "native",
"fileVersion": "0.0.0.0"
},
"runtimes/osx/native/libsnappy64.dylib": {
"rid": "osx",
"assetType": "native",
"fileVersion": "0.0.0.0"
},
"runtimes/osx/native/libzstd.dylib": {
"rid": "osx",
"assetType": "native",
"fileVersion": "0.0.0.0"
},
"runtimes/win/native/libzstd.dll": {
"rid": "win",
"assetType": "native",
"fileVersion": "0.0.0.0"
},
"runtimes/win/native/snappy32.dll": {
"rid": "win",
"assetType": "native",
"fileVersion": "1.1.1.7"
},
"runtimes/win/native/snappy64.dll": {
"rid": "win",
"assetType": "native",
"fileVersion": "1.1.1.7"
}
}
},
"MongoDB.Libmongocrypt/1.5.5": {
"runtime": {
"lib/netstandard2.1/MongoDB.Libmongocrypt.dll": {
"assemblyVersion": "1.5.5.0",
"fileVersion": "1.5.5.0"
}
},
"runtimeTargets": {
"runtimes/linux/native/libmongocrypt.so": {
"rid": "linux",
"assetType": "native",
"fileVersion": "0.0.0.0"
},
"runtimes/osx/native/libmongocrypt.dylib": {
"rid": "osx",
"assetType": "native",
"fileVersion": "0.0.0.0"
},
"runtimes/win/native/mongocrypt.dll": {
"rid": "win",
"assetType": "native",
"fileVersion": "0.0.0.0"
}
}
},
"Newtonsoft.Json/13.0.1": {
"runtime": {
"lib/netstandard2.0/Newtonsoft.Json.dll": {
"assemblyVersion": "13.0.0.0",
"fileVersion": "13.0.1.25517"
}
}
},
"Npgsql/6.0.7": {
"dependencies": {
"System.Runtime.CompilerServices.Unsafe": "6.0.0"
},
"runtime": {
"lib/net6.0/Npgsql.dll": {
"assemblyVersion": "6.0.7.0",
"fileVersion": "6.0.7.0"
}
}
},
"Npgsql.EntityFrameworkCore.PostgreSQL/6.0.7": {
"dependencies": {
"Microsoft.EntityFrameworkCore": "6.0.9",
"Microsoft.EntityFrameworkCore.Abstractions": "6.0.9",
"Microsoft.EntityFrameworkCore.Relational": "6.0.9",
"Npgsql": "6.0.7"
},
"runtime": {
"lib/net6.0/Npgsql.EntityFrameworkCore.PostgreSQL.dll": {
"assemblyVersion": "6.0.7.0",
"fileVersion": "6.0.7.0"
}
}
},
"SharpCompress/0.30.1": {
"runtime": {
"lib/net5.0/SharpCompress.dll": {
"assemblyVersion": "0.30.1.0",
"fileVersion": "0.30.1.0"
}
}
},
"System.Buffers/4.5.1": {},
"System.Collections.Immutable/6.0.0": {
"dependencies": {
"System.Runtime.CompilerServices.Unsafe": "6.0.0"
}
},
"System.Diagnostics.DiagnosticSource/6.0.0": {
"dependencies": {
"System.Runtime.CompilerServices.Unsafe": "6.0.0"
}
},
"System.Memory/4.5.3": {},
"System.Runtime.CompilerServices.Unsafe/6.0.0": {},
"System.Security.AccessControl/5.0.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "5.0.0",
"System.Security.Principal.Windows": "5.0.0"
}
},
"System.Security.Principal.Windows/5.0.0": {},
"System.Text.Encodings.Web/6.0.0": {
"dependencies": {
"System.Runtime.CompilerServices.Unsafe": "6.0.0"
}
},
"System.Text.Json/6.0.0": {
"dependencies": {
"System.Runtime.CompilerServices.Unsafe": "6.0.0",
"System.Text.Encodings.Web": "6.0.0"
}
}
}
},
"libraries": {
"MigrageAudienceHash/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
},
"AcmUtilities/1.4.17": {
"type": "package",
"serviceable": true,
"sha512": "sha512-ZEqJazR8KHks6jiI6go3Bj9A9lmlwLz4JQuflxArcJEyEuDxTE4ET1INnlNZy4tw247d5YVJh6XZLRDO2PAZZw==",
"path": "acmutilities/1.4.17",
"hashPath": "acmutilities.1.4.17.nupkg.sha512"
},
"Confluent.Kafka/1.9.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-P6NvD4QrnKULRffC/MrzPYBq5OwBagB4amymkEPivUoBfM7zID9Tnq0TYzLj7DDbB2N797Ajea4/Tc1IqCcQ/g==",
"path": "confluent.kafka/1.9.2",
"hashPath": "confluent.kafka.1.9.2.nupkg.sha512"
},
"DnsClient/1.6.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-4H/f2uYJOZ+YObZjpY9ABrKZI+JNw3uizp6oMzTXwDw6F+2qIPhpRl/1t68O/6e98+vqNiYGu+lswmwdYUy3gg==",
"path": "dnsclient/1.6.1",
"hashPath": "dnsclient.1.6.1.nupkg.sha512"
},
"Google.Protobuf/3.21.5": {
"type": "package",
"serviceable": true,
"sha512": "sha512-d7zwRm0edg2cxqRynMD31F8HUUyicBT0l5M74EIsU6GAaq3dxxaZ/PpSPlso010W9nIXoVVKUYZSsiOspAOO/A==",
"path": "google.protobuf/3.21.5",
"hashPath": "google.protobuf.3.21.5.nupkg.sha512"
},
"Grpc.Core.Api/2.48.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-Kc9DrAVO3ao5jzI2IsItCZthJ1WCyvH8KE8N1cLRojmLvdCdOMT9R1doN47GuWPJQ1hH+dDPrxemB8Nv6Szn+w==",
"path": "grpc.core.api/2.48.0",
"hashPath": "grpc.core.api.2.48.0.nupkg.sha512"
},
"Grpc.Net.Client/2.48.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-4QRComAnIYGGuqp05tw31g6LaKOJGkJ+bWzGVMEWKeFioj94TtgwCr7no4eRq9C+1sof+q9n9t5x57tvhkhE4g==",
"path": "grpc.net.client/2.48.0",
"hashPath": "grpc.net.client.2.48.0.nupkg.sha512"
},
"Grpc.Net.ClientFactory/2.48.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-BBQ9V0m50LWLCR+kdPhVSxWhv6pTQs/CjrXj8+BygGcqdDHs+BwCKsYb+ArfC2/26475+XldNyx5WbrjJvDOdg==",
"path": "grpc.net.clientfactory/2.48.0",
"hashPath": "grpc.net.clientfactory.2.48.0.nupkg.sha512"
},
"Grpc.Net.Common/2.48.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-ju/jD0VR+cYdByLdaDc7toqAJxGzM0ba2rpQTbBrlHT+sRpCZAXUURZAlSszGAR7GLDXh4jm5n/KB6amT/xkVg==",
"path": "grpc.net.common/2.48.0",
"hashPath": "grpc.net.common.2.48.0.nupkg.sha512"
},
"Grpc.Tools/2.48.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-OHUorqVY2Ya9y5PQItM132EeklQUTu1OI1g90YDIJ6a+yUvu9dsJxnEYw56L57DplD1O22QC6sVUxpnJD7/txg==",
"path": "grpc.tools/2.48.1",
"hashPath": "grpc.tools.2.48.1.nupkg.sha512"
},
"librdkafka.redist/1.9.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-ljLtyamiEq7Ky36LAv8gAz69YfpLBw2P/y1eDuqwAm9RiDINtWrkg/hqIBTK2Gc7ydJaKlySa1BxMG7RHVD26A==",
"path": "librdkafka.redist/1.9.2",
"hashPath": "librdkafka.redist.1.9.2.nupkg.sha512"
},
"Microsoft.AspNetCore.Cryptography.Internal/6.0.8": {
"type": "package",
"serviceable": true,
"sha512": "sha512-W7IAX1zk131s1B4D/MdrOBVPD2+bUd+qHF6bGhzH47lilpDuo0wRLxzn8LKoGFsVwbMUJNfmWtxR3EXLLwbe/g==",
"path": "microsoft.aspnetcore.cryptography.internal/6.0.8",
"hashPath": "microsoft.aspnetcore.cryptography.internal.6.0.8.nupkg.sha512"
},
"Microsoft.AspNetCore.Cryptography.KeyDerivation/6.0.8": {
"type": "package",
"serviceable": true,
"sha512": "sha512-eDRPXA6l9iMiDjKlrKsMS9Up+7LSkVLyHY6FY8R1W1ej004ZA/roe9feQztS9e/VcI5F3p/00V/dvmjfr2ZOjQ==",
"path": "microsoft.aspnetcore.cryptography.keyderivation/6.0.8",
"hashPath": "microsoft.aspnetcore.cryptography.keyderivation.6.0.8.nupkg.sha512"
},
"Microsoft.AspNetCore.Http/2.2.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-BAibpoItxI5puk7YJbIGj95arZueM8B8M5xT1fXBn3hb3L2G3ucrZcYXv1gXdaroLbntUs8qeV8iuBrpjQsrKw==",
"path": "microsoft.aspnetcore.http/2.2.2",
"hashPath": "microsoft.aspnetcore.http.2.2.2.nupkg.sha512"
},
"Microsoft.AspNetCore.Http.Abstractions/2.2.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-Nxs7Z1q3f1STfLYKJSVXCs1iBl+Ya6E8o4Oy1bCxJ/rNI44E/0f6tbsrVqAWfB7jlnJfyaAtIalBVxPKUPQb4Q==",
"path": "microsoft.aspnetcore.http.abstractions/2.2.0",
"hashPath": "microsoft.aspnetcore.http.abstractions.2.2.0.nupkg.sha512"
},
"Microsoft.AspNetCore.Http.Features/2.2.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-ziFz5zH8f33En4dX81LW84I6XrYXKf9jg6aM39cM+LffN9KJahViKZ61dGMSO2gd3e+qe5yBRwsesvyqlZaSMg==",
"path": "microsoft.aspnetcore.http.features/2.2.0",
"hashPath": "microsoft.aspnetcore.http.features.2.2.0.nupkg.sha512"
},
"Microsoft.AspNetCore.WebUtilities/2.2.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-9ErxAAKaDzxXASB/b5uLEkLgUWv1QbeVxyJYEHQwMaxXOeFFVkQxiq8RyfVcifLU7NR0QY0p3acqx4ZpYfhHDg==",
"path": "microsoft.aspnetcore.webutilities/2.2.0",
"hashPath": "microsoft.aspnetcore.webutilities.2.2.0.nupkg.sha512"
},
"Microsoft.EntityFrameworkCore/6.0.9": {
"type": "package",
"serviceable": true,
"sha512": "sha512-3QxYF6TR14O3cSZitdzM10Smsw+hweLXyB45PN4ZVjrX4GqzUoGZ0ZC06r0ST7O7SgYxNjxw34ay5XXbBTX86A==",
"path": "microsoft.entityframeworkcore/6.0.9",
"hashPath": "microsoft.entityframeworkcore.6.0.9.nupkg.sha512"
},
"Microsoft.EntityFrameworkCore.Abstractions/6.0.9": {
"type": "package",
"serviceable": true,
"sha512": "sha512-XglcSAr6EtjqJpI0DjMMDWkq3l5zG45hRHgrodZFMxNxE7KettJ+X8Em39Aaa0XQwH2P+NHVyK+xhtPX8ogdEA==",
"path": "microsoft.entityframeworkcore.abstractions/6.0.9",
"hashPath": "microsoft.entityframeworkcore.abstractions.6.0.9.nupkg.sha512"
},
"Microsoft.EntityFrameworkCore.Analyzers/6.0.9": {
"type": "package",
"serviceable": true,
"sha512": "sha512-rNIx4fr7KWH4ypghhI+78PhCUYBHdjVbQ3yKvj/KmUIe4d9pysHXT3lF9TuReVdMDsn5mEx+3Yez8s80J4/JLA==",
"path": "microsoft.entityframeworkcore.analyzers/6.0.9",
"hashPath": "microsoft.entityframeworkcore.analyzers.6.0.9.nupkg.sha512"
},
"Microsoft.EntityFrameworkCore.Relational/6.0.9": {
"type": "package",
"serviceable": true,
"sha512": "sha512-LAZHEvlgSg6OUzLUH3BoVneYrQj7cQqwwFnzSfwVGNjQvj5RRh7Vz0eSXLKfQD4xv5QuSm3l+MzFMZC1NBPQHw==",
"path": "microsoft.entityframeworkcore.relational/6.0.9",
"hashPath": "microsoft.entityframeworkcore.relational.6.0.9.nupkg.sha512"
},
"Microsoft.Extensions.Caching.Abstractions/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-bcz5sSFJbganH0+YrfvIjJDIcKNW7TL07C4d1eTmXy/wOt52iz4LVogJb6pazs7W0+74j0YpXFErvp++Aq5Bsw==",
"path": "microsoft.extensions.caching.abstractions/6.0.0",
"hashPath": "microsoft.extensions.caching.abstractions.6.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Caching.Memory/6.0.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-B4y+Cev05eMcjf1na0v9gza6GUtahXbtY1JCypIgx3B4Ea/KAgsWyXEmW4q6zMbmTMtKzmPVk09rvFJirvMwTg==",
"path": "microsoft.extensions.caching.memory/6.0.1",
"hashPath": "microsoft.extensions.caching.memory.6.0.1.nupkg.sha512"
},
"Microsoft.Extensions.Configuration/6.0.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-BUyFU9t+HzlSE7ri4B+AQN2BgTgHv/uM82s5ZkgU1BApyzWzIl48nDsG5wR1t0pniNuuyTBzG3qCW8152/NtSw==",
"path": "microsoft.extensions.configuration/6.0.1",
"hashPath": "microsoft.extensions.configuration.6.0.1.nupkg.sha512"
},
"Microsoft.Extensions.Configuration.Abstractions/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-qWzV9o+ZRWq+pGm+1dF+R7qTgTYoXvbyowRoBxQJGfqTpqDun2eteerjRQhq5PQ/14S+lqto3Ft4gYaRyl4rdQ==",
"path": "microsoft.extensions.configuration.abstractions/6.0.0",
"hashPath": "microsoft.extensions.configuration.abstractions.6.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Configuration.Binder/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-b3ErKzND8LIC7o08QAVlKfaEIYEvLJbtmVbFZVBRXeu9YkKfSSzLZfR1SUfQPBIy9mKLhEtJgGYImkcMNaKE0A==",
"path": "microsoft.extensions.configuration.binder/6.0.0",
"hashPath": "microsoft.extensions.configuration.binder.6.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Configuration.EnvironmentVariables/6.0.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-pnyXV1LFOsYjGveuC07xp0YHIyGq7jRq5Ncb5zrrIieMLWVwgMyYxcOH0jTnBedDT4Gh1QinSqsjqzcieHk1og==",
"path": "microsoft.extensions.configuration.environmentvariables/6.0.1",
"hashPath": "microsoft.extensions.configuration.environmentvariables.6.0.1.nupkg.sha512"
},
"Microsoft.Extensions.Configuration.FileExtensions/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-V4Dth2cYMZpw3HhGw9XUDIijpI6gN+22LDt0AhufIgOppCUfpWX4483OmN+dFXRJkJLc8Tv0Q8QK+1ingT2+KQ==",
"path": "microsoft.extensions.configuration.fileextensions/6.0.0",
"hashPath": "microsoft.extensions.configuration.fileextensions.6.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Configuration.Json/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-GJGery6QytCzS/BxJ96klgG9in3uH26KcUBbiVG/coNDXCRq6LGVVlUT4vXq34KPuM+R2av+LeYdX9h4IZOCUg==",
"path": "microsoft.extensions.configuration.json/6.0.0",
"hashPath": "microsoft.extensions.configuration.json.6.0.0.nupkg.sha512"
},
"Microsoft.Extensions.DependencyInjection/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-k6PWQMuoBDGGHOQTtyois2u4AwyVcIwL2LaSLlTZQm2CYcJ1pxbt6jfAnpWmzENA/wfrYRI/X9DTLoUkE4AsLw==",
"path": "microsoft.extensions.dependencyinjection/6.0.0",
"hashPath": "microsoft.extensions.dependencyinjection.6.0.0.nupkg.sha512"
},
"Microsoft.Extensions.DependencyInjection.Abstractions/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-xlzi2IYREJH3/m6+lUrQlujzX8wDitm4QGnUu6kUXTQAWPuZY8i+ticFJbzfqaetLA6KR/rO6Ew/HuYD+bxifg==",
"path": "microsoft.extensions.dependencyinjection.abstractions/6.0.0",
"hashPath": "microsoft.extensions.dependencyinjection.abstractions.6.0.0.nupkg.sha512"
},
"Microsoft.Extensions.FileProviders.Abstractions/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-0pd4/fho0gC12rQswaGQxbU34jOS1TPS8lZPpkFCH68ppQjHNHYle9iRuHeev1LhrJ94YPvzcRd8UmIuFk23Qw==",
"path": "microsoft.extensions.fileproviders.abstractions/6.0.0",
"hashPath": "microsoft.extensions.fileproviders.abstractions.6.0.0.nupkg.sha512"
},
"Microsoft.Extensions.FileProviders.Physical/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-QvkL7l0nM8udt3gfyu0Vw8bbCXblxaKOl7c2oBfgGy4LCURRaL9XWZX1FWJrQc43oMokVneVxH38iz+bY1sbhg==",
"path": "microsoft.extensions.fileproviders.physical/6.0.0",
"hashPath": "microsoft.extensions.fileproviders.physical.6.0.0.nupkg.sha512"
},
"Microsoft.Extensions.FileSystemGlobbing/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-ip8jnL1aPiaPeKINCqaTEbvBFDmVx9dXQEBZ2HOBRXPD1eabGNqP/bKlsIcp7U2lGxiXd5xIhoFcmY8nM4Hdiw==",
"path": "microsoft.extensions.filesystemglobbing/6.0.0",
"hashPath": "microsoft.extensions.filesystemglobbing.6.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Http/3.0.3": {
"type": "package",
"serviceable": true,
"sha512": "sha512-dcyB8szIcSynjVZRuFgqkZpPgTc5zeRSj1HMXSmNqWbHYKiPYJl8ZQgBHz6wmZNSUUNGpCs5uxUg8DZHHDC1Ew==",
"path": "microsoft.extensions.http/3.0.3",
"hashPath": "microsoft.extensions.http.3.0.3.nupkg.sha512"
},
"Microsoft.Extensions.Logging/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-eIbyj40QDg1NDz0HBW0S5f3wrLVnKWnDJ/JtZ+yJDFnDj90VoPuoPmFkeaXrtu+0cKm5GRAwoDf+dBWXK0TUdg==",
"path": "microsoft.extensions.logging/6.0.0",
"hashPath": "microsoft.extensions.logging.6.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Logging.Abstractions/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-/HggWBbTwy8TgebGSX5DBZ24ndhzi93sHUBDvP1IxbZD7FDokYzdAr6+vbWGjw2XAfR2EJ1sfKUotpjHnFWPxA==",
"path": "microsoft.extensions.logging.abstractions/6.0.0",
"hashPath": "microsoft.extensions.logging.abstractions.6.0.0.nupkg.sha512"
},
"Microsoft.Extensions.ObjectPool/2.2.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-gA8H7uQOnM5gb+L0uTNjViHYr+hRDqCdfugheGo/MxQnuHzmhhzCBTIPm19qL1z1Xe0NEMabfcOBGv9QghlZ8g==",
"path": "microsoft.extensions.objectpool/2.2.0",
"hashPath": "microsoft.extensions.objectpool.2.2.0.nupkg.sha512"
},
"Microsoft.Extensions.Options/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-dzXN0+V1AyjOe2xcJ86Qbo233KHuLEY0njf/P2Kw8SfJU+d45HNS2ctJdnEnrWbM9Ye2eFgaC5Mj9otRMU6IsQ==",
"path": "microsoft.extensions.options/6.0.0",
"hashPath": "microsoft.extensions.options.6.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Primitives/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-9+PnzmQFfEFNR9J2aDTfJGGupShHjOuGw4VUv+JB044biSHrnmCIMD+mJHmb2H7YryrfBEXDurxQ47gJZdCKNQ==",
"path": "microsoft.extensions.primitives/6.0.0",
"hashPath": "microsoft.extensions.primitives.6.0.0.nupkg.sha512"
},
"Microsoft.Net.Http.Headers/2.2.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-iZNkjYqlo8sIOI0bQfpsSoMTmB/kyvmV2h225ihyZT33aTp48ZpF6qYnXxzSXmHt8DpBAwBTX+1s1UFLbYfZKg==",
"path": "microsoft.net.http.headers/2.2.0",
"hashPath": "microsoft.net.http.headers.2.2.0.nupkg.sha512"
},
"Microsoft.NETCore.Platforms/5.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-VyPlqzH2wavqquTcYpkIIAQ6WdenuKoFN0BdYBbCWsclXacSOHNQn66Gt4z5NBqEYW0FAPm5rlvki9ZiCij5xQ==",
"path": "microsoft.netcore.platforms/5.0.0",
"hashPath": "microsoft.netcore.platforms.5.0.0.nupkg.sha512"
},
"Microsoft.Win32.Registry/5.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==",
"path": "microsoft.win32.registry/5.0.0",
"hashPath": "microsoft.win32.registry.5.0.0.nupkg.sha512"
},
"MongoDB.Bson/2.17.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-IBr5w6ygeUCTobiS4J2UlYeIsnjSJvOOf31g60EkRa3NIeyrYs7Y51HeOvJ8r6NPcKv1hLj8xwoop6hDTetAdA==",
"path": "mongodb.bson/2.17.1",
"hashPath": "mongodb.bson.2.17.1.nupkg.sha512"
},
"MongoDB.Driver/2.17.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-A5Yvm3RUdkSYnvKWVb/bZfvhzG+L+t0n80JuUXf0p2QG1TbtqHE9hX/FBK+BoF7sw9rzUTw8VHYeqX5rT0rxdA==",
"path": "mongodb.driver/2.17.1",
"hashPath": "mongodb.driver.2.17.1.nupkg.sha512"
},
"MongoDB.Driver.Core/2.17.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-lfuuQvCXcco6mG096PL8xRO+dBdHsDTR3DiYfK/ICHgFlL5RfKlBuE0xClEGKtaZ4Spe28/fF/GUcrrA/yfoAQ==",
"path": "mongodb.driver.core/2.17.1",
"hashPath": "mongodb.driver.core.2.17.1.nupkg.sha512"
},
"MongoDB.Libmongocrypt/1.5.5": {
"type": "package",
"serviceable": true,
"sha512": "sha512-0DV4l2PjXirSJHD/b+LpOK3IfUDvkbpvvZBM2w1aYL6E/4vbhfyr/FP5laDNx2zRylqN1hIZO+EL7NgO/5GpVg==",
"path": "mongodb.libmongocrypt/1.5.5",
"hashPath": "mongodb.libmongocrypt.1.5.5.nupkg.sha512"
},
"Newtonsoft.Json/13.0.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==",
"path": "newtonsoft.json/13.0.1",
"hashPath": "newtonsoft.json.13.0.1.nupkg.sha512"
},
"Npgsql/6.0.7": {
"type": "package",
"serviceable": true,
"sha512": "sha512-HhD5q/VUJY++tCzc0eCrhtsxmUdP7NxNhUMOdYW6sqpC6NRlFLvUDf5JyRj0gOGkXe3Tn49toaisgvLqlzQ2JQ==",
"path": "npgsql/6.0.7",
"hashPath": "npgsql.6.0.7.nupkg.sha512"
},
"Npgsql.EntityFrameworkCore.PostgreSQL/6.0.7": {
"type": "package",
"serviceable": true,
"sha512": "sha512-kqwX2V9Znw/QjLDL6SyYEHiy9toMuqMTyCJ4ebQu65FpV8pElYKpOlBbxoyr6YNgqieXEMmpnE0TIoTKsVdeLw==",
"path": "npgsql.entityframeworkcore.postgresql/6.0.7",
"hashPath": "npgsql.entityframeworkcore.postgresql.6.0.7.nupkg.sha512"
},
"SharpCompress/0.30.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-XqD4TpfyYGa7QTPzaGlMVbcecKnXy4YmYLDWrU+JIj7IuRNl7DH2END+Ll7ekWIY8o3dAMWLFDE1xdhfIWD1nw==",
"path": "sharpcompress/0.30.1",
"hashPath": "sharpcompress.0.30.1.nupkg.sha512"
},
"System.Buffers/4.5.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg==",
"path": "system.buffers/4.5.1",
"hashPath": "system.buffers.4.5.1.nupkg.sha512"
},
"System.Collections.Immutable/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-l4zZJ1WU2hqpQQHXz1rvC3etVZN+2DLmQMO79FhOTZHMn8tDRr+WU287sbomD0BETlmKDn0ygUgVy9k5xkkJdA==",
"path": "system.collections.immutable/6.0.0",
"hashPath": "system.collections.immutable.6.0.0.nupkg.sha512"
},
"System.Diagnostics.DiagnosticSource/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-frQDfv0rl209cKm1lnwTgFPzNigy2EKk1BS3uAvHvlBVKe5cymGyHO+Sj+NLv5VF/AhHsqPIUUwya5oV4CHMUw==",
"path": "system.diagnostics.diagnosticsource/6.0.0",
"hashPath": "system.diagnostics.diagnosticsource.6.0.0.nupkg.sha512"
},
"System.Memory/4.5.3": {
"type": "package",
"serviceable": true,
"sha512": "sha512-3oDzvc/zzetpTKWMShs1AADwZjQ/36HnsufHRPcOjyRAAMLDlu2iD33MBI2opxnezcVUtXyqDXXjoFMOU9c7SA==",
"path": "system.memory/4.5.3",
"hashPath": "system.memory.4.5.3.nupkg.sha512"
},
"System.Runtime.CompilerServices.Unsafe/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg==",
"path": "system.runtime.compilerservices.unsafe/6.0.0",
"hashPath": "system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512"
},
"System.Security.AccessControl/5.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-dagJ1mHZO3Ani8GH0PHpPEe/oYO+rVdbQjvjJkBRNQkX4t0r1iaeGn8+/ybkSLEan3/slM0t59SVdHzuHf2jmw==",
"path": "system.security.accesscontrol/5.0.0",
"hashPath": "system.security.accesscontrol.5.0.0.nupkg.sha512"
},
"System.Security.Principal.Windows/5.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-t0MGLukB5WAVU9bO3MGzvlGnyJPgUlcwerXn1kzBRjwLKixT96XV0Uza41W49gVd8zEMFu9vQEFlv0IOrytICA==",
"path": "system.security.principal.windows/5.0.0",
"hashPath": "system.security.principal.windows.5.0.0.nupkg.sha512"
},
"System.Text.Encodings.Web/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-Vg8eB5Tawm1IFqj4TVK1czJX89rhFxJo9ELqc/Eiq0eXy13RK00eubyU6TJE6y+GQXjyV5gSfiewDUZjQgSE0w==",
"path": "system.text.encodings.web/6.0.0",
"hashPath": "system.text.encodings.web.6.0.0.nupkg.sha512"
},
"System.Text.Json/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-zaJsHfESQvJ11vbXnNlkrR46IaMULk/gHxYsJphzSF+07kTjPHv+Oc14w6QEOfo3Q4hqLJgStUaYB9DBl0TmWg==",
"path": "system.text.json/6.0.0",
"hashPath": "system.text.json.6.0.0.nupkg.sha512"
}
}
}
\ No newline at end of file
{
"runtimeOptions": {
"tfm": "net6.0",
"framework": {
"name": "Microsoft.NETCore.App",
"version": "6.0.0"
},
"configProperties": {
"System.Reflection.NullabilityInfoContext.IsSupported": true
}
}
}
\ No newline at end of file
{
"Configuration": {
"MongoDbConnectionString": "mongodb://118.70.206.204:27017",
"MongoDbName": "acm",
"TimeScaleDbConnectionString": "Host=192.168.10.101;Port=5432;Database=acm;Username=acm;Password=Awing@2020;Command Timeout=300",
"FromTimeline": "20200723",
"IsMakeNewData": "1"
}
}
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment