public static void SubscribeWith <TResponse>(this ISubscriptionManager manager, R.ResponsesPaged <TResponse> dto, Q.QueriesPaged <TResponse> query, string session) { var key = query.GetCacheKey(); query.SubscriptionType = query.SubscriptionType ?? ChangeType.All; foreach (var record in dto.Records) { manager.Manage(record, key, query.SubscriptionId, query.SubscriptionType ?? ChangeType.All, TimeSpan.FromSeconds(query.SubscriptionTime ?? 3600), session); } manager.Manage <TResponse>(query, query.SubscriptionId, query.SubscriptionType ?? ChangeType.All, TimeSpan.FromSeconds(query.SubscriptionTime ?? 3600), session); }
public static R.ResponsesPaged <TResponse> ToOptimizedCachedResult <TResponse>(this IRequest request, Q.QueriesPaged <TResponse> query, ICacheClient cache, Func <R.ResponsesPaged <TResponse> > factory) { var key = query.GetCacheKey(); var cached = cache.GetOrCreate(key, () => { var result = factory(); return(result); }); return(cached); }
public static async Task <R.ResponsesPaged <TResponse> > ToOptimizedCachedResult <TResponse>(this IRequest request, Q.QueriesPaged <TResponse> query, ICacheClient cache, Func <Task <R.ResponsesPaged <TResponse> > > factory) { var key = query.GetCacheKey(); var cached = cache.Get <R.ResponsesPaged <TResponse> >(key); if (cached == null) { cached = await factory().ConfigureAwait(false); cache.Add(key, cached); } return(cached); }
public static async Task <R.ResponsesPaged <TResponse> > ToOptimizedCachedAndSubscribedPagedResult <TResponse>(this IRequest request, Q.QueriesPaged <TResponse> query, ICacheClient cache, ISubscriptionManager manager, Func <Task <R.ResponsesPaged <TResponse> > > factory) { var key = query.GetCacheKey(); var cached = cache.Get <R.ResponsesPaged <TResponse> >(key); if (cached == null) { cached = await factory().ConfigureAwait(false); cache.Add(key, cached); } if (!query.SubscriptionId.IsNullOrEmpty()) { manager.SubscribeWith(cached, query, request.GetSessionId()); } return(cached); }