public async Task StoreAsync(PointInTimeProvider provider, CancellationToken cancellationToken) { await _table.CreateIfNotExistsAsync(cancellationToken); var operation = TableOperation.InsertOrReplace(ModelToEntity(provider)); await _table.ExecuteAsync(operation, cancellationToken); }
private async Task ProcessProvider( PointInTimeProvider staging, Func <LearningProvider, DateTime, CancellationToken, Task> publishEvent, CancellationToken cancellationToken) { var current = await _providerRepository.GetProviderAsync(staging.UnitedKingdomProviderReferenceNumber, cancellationToken); staging.IsCurrent = current == null || staging.PointInTime > current.PointInTime; if (current != null && staging.IsCurrent) { current.IsCurrent = false; } var toStore = current == null || current.IsCurrent ? new[] { staging } : new[] { current, staging }; await _providerRepository.StoreAsync(toStore, cancellationToken); _logger.Debug($"Stored {staging.UnitedKingdomProviderReferenceNumber} in repository"); var learningProvider = await _mapper.MapAsync <LearningProvider>(staging, cancellationToken); await publishEvent(learningProvider, staging.PointInTime, cancellationToken); _logger.Debug($"Sent event for {staging.UnitedKingdomProviderReferenceNumber}"); }
private async Task <PointInTimeProvider[]> GetBatchOfProvidersAsync(long[] batchOfUkprns, DateTime?pointInTime, CancellationToken cancellationToken) { var providers = new PointInTimeProvider[batchOfUkprns.Length]; for (var i = 0; i < batchOfUkprns.Length; i++) { providers[i] = await GetProviderAsync(batchOfUkprns[i], pointInTime, cancellationToken); } return(providers); }
private ProviderEntity ModelToEntity(string partitionKey, string rowKey, PointInTimeProvider provider) { return(new ProviderEntity { PartitionKey = partitionKey, RowKey = rowKey, ProviderJson = JsonConvert.SerializeObject(provider), PointInTime = provider.PointInTime, IsCurrent = provider.IsCurrent, }); }
private ProviderEntity ModelToEntityForStaging(PointInTimeProvider provider) { return(ModelToEntity(GetStagingPartitionKey(provider.PointInTime), provider.UnitedKingdomProviderReferenceNumber.ToString(), provider)); }
private ProviderEntity ModelToEntity(string rowKey, PointInTimeProvider provider) { return(ModelToEntity(provider.UnitedKingdomProviderReferenceNumber.ToString(), rowKey, provider)); }
private ProviderEntity ModelToEntity(PointInTimeProvider provider) { return(ModelToEntity(provider.PointInTime.ToString("yyyyMMdd"), provider)); }