Пример #1
0
 public SyncKustoTableWorker(
     IKustoClient kustoClient,
     IDocDbClient docDbClient,
     ILoggerFactory loggerFactory,
     IConfiguration configuration)
 {
     _kustoClient    = kustoClient;
     _docDbClient    = docDbClient;
     _logger         = loggerFactory.CreateLogger <SyncKustoTableWorker>();
     _kustoSettings  = configuration.GetConfiguredSettings <KustoSettings>();
     _jsonSerializer = new JsonSerializer();
     _jsonSerializer.Converters.Add(new StringEnumConverter());
     _jsonSerializer.ContractResolver = new DefaultContractResolver()
     {
         NamingStrategy = new CamelCaseNamingStrategy()
         {
             OverrideSpecifiedNames = false
         }
     };
 }
Пример #2
0
        public KustoRepo(IServiceProvider serviceProvider, ILoggerFactory loggerFactory)
        {
            logger = loggerFactory.CreateLogger <KustoRepo <T> >();
            var configuration     = serviceProvider.GetRequiredService <IConfiguration>();
            var kustoDataSettings = configuration.GetConfiguredSettings <KustoDataSettings>();
            var prop = kustoDataSettings.GetType().GetProperties()
                       .FirstOrDefault(p =>
            {
                var customAttr = p.GetCustomAttribute <MappedModelAttribute>();
                if (customAttr != null && customAttr.ModelType == typeof(T))
                {
                    return(true);
                }

                return(false);
            });

            if (prop == null)
            {
                throw new Exception($"Missing backend mapping for model: {typeof(T).Name}");
            }
            kustoSettings = prop.GetValue(kustoDataSettings) as KustoSettings;
            kustoClient   = new KustoClient(serviceProvider, loggerFactory, kustoSettings);
        }