public async Task <TQueryResult> GetAsync(TQuery query, CancellationToken token)
        {
            var attr = _decoratee.GetType().GetMethod("GetAsync")?.GetCustomAttribute <CacheAttribute>();

            if (attr == null)
            {
                return(await _decoratee.GetAsync(query, token));
            }

            if (_cacheProvider is null)
            {
                return(await _decoratee.GetAsync(query, token));
            }

            var cacheKey = $"{query.GetType().Name}_{query.AsDictionary(BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance).ToContentString()}";
            //var cacheKey = CacheResultInterceptor.GetCacheKey(_decoratee.GetType(), "GetAsync", new object[] { query });

            var result = _cacheProvider.Value.Get <TQueryResult>(cacheKey, attr.Region);

            if (result != null)
            {
                return(result);
            }


            result = await _decoratee.GetAsync(query, token);

            _cacheProvider.Value.Set(cacheKey, attr.Region, result, attr.Duration, attr.Slide);
            return(result);
        }
Пример #2
0
 public async Task <IEnumerable <NamedQueryModel> > GetCompaniesIndex() =>
 await _namedQueryHandler.GetAsync();
Пример #3
0
 GetLocationsIndex(int companyId) =>
 await _namedQueryHandler.GetAsync(
     l => l.CompanyId == companyId);