public void Persist(IEnumerable <StoreInfo> storesEnumerableParam)
        {
            var allStores       = (storesEnumerableParam ?? new StoreInfo[] {}).ToArray();
            var storesToPersist = allStores
                                  .Where(_ => !_persistenceCalculator.WasPersistedRecently(_.StoreNumber))
                                  .ToArray();
            var numbersToPersist = storesToPersist.Select(_ => _.StoreNumber).ToArray();

            Logger.LogInfo("Saving Stores", "totalCount", allStores.Length, "count", numbersToPersist.Length);

            if (numbersToPersist.Length == 0)
            {
                return;
            }

            var numbersToUpdate = (_dataService.ContainsStore(numbersToPersist)).ToArray();
            var numbersToCreate = numbersToPersist.Except(numbersToUpdate).ToArray();

            var storesToUpdate = storesToPersist.Where(_ => numbersToUpdate.Contains(_.StoreNumber)).ToArray();
            var storesToCreate = storesToPersist.Where(_ => numbersToCreate.Contains(_.StoreNumber)).ToArray();

            Logger.LogDebug("Creating Stores", "count", storesToCreate.Length);
            _dataService.CreateNew(storesToCreate);

            Logger.LogDebug("Updating Stores", "count", storesToUpdate.Length);
            _dataService.Update(storesToUpdate);

            foreach (var storeNumber in numbersToPersist)
            {
                _persistenceCalculator.PreventFuturePersistence(storeNumber);
            }
        }
 private void RunMigrations()
 {
     using (var context = _contextFactory.Create())
     {
         Logger.LogDebug("DbMigration Started");
         context.Database.Migrate();
         Logger.LogDebug("DbMigration Completed");
     }
 }
        public static string InstrumentedDownload(this WebRequest request, Func <WebRequest, String> downloader)
        {
            var stopwatch = Stopwatch.StartNew();

            var url = request.RequestUri.AbsoluteUri;

            Logger.LogDebug("Download", nameof(url), url, "Proxy", request.GetProxyString());

            try
            {
                var result = downloader(request);

                var kbytes = Convert.ToInt32(result.Length / 1024);
                stopwatch.Stop();
                Logger.LogInfo("Download", "KBytes", kbytes, "Result", true, "ElapsedMs", stopwatch.ElapsedMilliseconds);

                return(result);
            }
            catch (WebException e)
            {
                stopwatch.Stop();
                Logger.LogError("Download Error", e, nameof(url), url, "ElapsedMs", stopwatch.ElapsedMilliseconds);

                throw;
            }
        }
示例#4
0
        public void Seed()
        {
            Logger.LogDebug("ZipCode Seed Started");

            var shouldSeed = ShouldSeed();

            if (!shouldSeed)
            {
                Logger.LogDebug("ZipCode Seed Skipped");
                return;
            }

            ClearZipCodes();
            var seedFilename = _configurationReader.ReadString(ConfigurationKeys.SeedsZipsFilename);

            LoadZipCodesFromCsv(seedFilename);
        }
示例#5
0
        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            ConfigureLogging(optionsBuilder);

            Logger.LogDebug("OnConfiguring", "ConnectionString", _connectionString);

            optionsBuilder.UseNpgsql(_connectionString);
        }