public async Task <CountryModel> GetCountry(CountryRequest request)
    {
        var entity = _reader.Get(KycCountryNoSqlEntity.GeneratePartitionKey(),
                                 KycCountryNoSqlEntity.GenerateRowKey(request.CountryCode));

        return(entity?.Country ?? await _grpcService.GetCountry(request));
    }
Beispiel #2
0
        public async Task InsertOrReplaceCountry(CountryModel country)
        {
            await using var context = new DatabaseContext(_dbContextOptionsBuilder.Options);
            await context.UpsertAsync(new[] { country });

            await _cache.InsertOrReplaceAsync(KycCountryNoSqlEntity.Create(country));
        }
Beispiel #3
0
        public async Task RefreshCache()
        {
            await using var context = new DatabaseContext(_dbContextOptionsBuilder.Options);
            var countries = context.Countries.ToList();

            foreach (var country in countries)
            {
                await _cache.InsertOrReplaceAsync(KycCountryNoSqlEntity.Create(country));
            }
        }
Beispiel #4
0
        public async Task DeleteCountry(string countryCode)
        {
            var country = await GetCountry(countryCode);

            await using var context = new DatabaseContext(_dbContextOptionsBuilder.Options);
            context.Countries.Remove(country);
            await context.SaveChangesAsync();

            await _cache.DeleteAsync(KycCountryNoSqlEntity.GeneratePartitionKey(),
                                     KycCountryNoSqlEntity.GenerateRowKey(countryCode));
        }
Beispiel #5
0
        public async Task <List <CountryModel> > GetAllCountries()
        {
            var entities = await _cache.GetAsync(KycCountryNoSqlEntity.GeneratePartitionKey());

            if (entities != null && entities.Any())
            {
                return(entities.Select(t => t.Country).ToList());
            }

            await RefreshCache();

            await using var context = new DatabaseContext(_dbContextOptionsBuilder.Options);
            return(context.Countries.ToList());
        }
Beispiel #6
0
        public async Task <CountryModel> GetCountry(string countryCode)
        {
            if (countryCode == null)
            {
                return(null);
            }
            var entities = await _cache.GetAsync(KycCountryNoSqlEntity.GeneratePartitionKey(), KycCountryNoSqlEntity.GenerateRowKey(countryCode));

            if (entities != null)
            {
                return(entities.Country);
            }

            await RefreshCache();

            await using var context = new DatabaseContext(_dbContextOptionsBuilder.Options);
            return(context.Countries.FirstOrDefault(t => t.CountryCode == countryCode));
        }