예제 #1
0
        public async Task <IEnumerable <HatResource> > GetHatsAsync()
        {
            // Note: In the real world, we'd use a caching interface that supports GetOrAddAsync<T> for atomicity
            const string region = nameof(CachingHatService) + "|" + nameof(GetHatsAsync);
            var          key    = region;
            var          cached = await _cache.GetStringAsync(key);

            IEnumerable <HatResource> result;

            if (cached != null)
            {
                _logger.LogInformation("Cached hats found");
                result = JsonConvert.DeserializeObject <List <HatResource> >(cached);
            }
            else
            {
                _logger.LogInformation("Cached hats not found, retrieving from data store");
                result = await _dataLayer.GetHatsAsync();

                await _cache.SetStringAsync(key, JsonConvert.SerializeObject(result));
            }

            return(result.Select(_mapper.Map <HatResource>));
        }
예제 #2
0
 public async Task <IEnumerable <HatResource> > Get([FromServices] IHatService service)
 {
     _logger.LogInformation("Getting all hats");
     return(await service.GetHatsAsync());
 }