コード例 #1
0
ファイル: ProductService.cs プロジェクト: yevhenip/Warehouse
        private async Task <List <Manufacturer> > GetManufacturers(IReadOnlyCollection <string> manufacturerIds)
        {
            List <Manufacturer> cachedManufacturers = new();
            var notCachedManufacturerIds            = manufacturerIds.ToList();

            foreach (var manufacturerId in manufacturerIds)
            {
                var cacheKey = $"Manufacturer-{manufacturerId}";
                var cache    = await _cacheService.GetStringAsync(cacheKey);

                if (!string.IsNullOrEmpty(cache))
                {
                    var cachedManufacturer = JsonSerializer.Deserialize <Manufacturer>(cache);
                    cachedManufacturers.Add(cachedManufacturer);
                    notCachedManufacturerIds.Remove(manufacturerId);
                }
            }

            var manufacturersInDb =
                await _manufacturerRepository.GetRangeAsync(m => notCachedManufacturerIds.Contains(m.Id));

            foreach (var manufacturerDto in manufacturersInDb)
            {
                await _cacheService.SetCacheAsync($"Manufacturer-{manufacturerDto.Id}", manufacturerDto,
                                                  _manufacturerSettings);
            }

            manufacturersInDb.AddRange(cachedManufacturers);

            return(manufacturersInDb);
        }
コード例 #2
0
        public async Task <Result <List <ManufacturerDto> > > Handle(GetManufacturersCommand request,
                                                                     CancellationToken cancellationToken)
        {
            var manufacturersInDb = await _manufacturerRepository.GetRangeAsync(request.Predicate);

            var manufacturers = _mapper.Map <List <ManufacturerDto> >(manufacturersInDb);

            return(Result <List <ManufacturerDto> > .Success(manufacturers));
        }