Exemple #1
0
        public Option <IUser> Get(ulong id)
        {
            var user = (IUser)_client.GetUser(id);

            if (user != null)
            {
                return(Option.Some(user));
            }
            var userM = _cacheService.Get <IUser>(CacheId.GetUser(id));

            return(userM);
        }
Exemple #2
0
        public async Task <Option <IUser> > GetOrSetAndGet(ulong id)
        {
            var user = this.Get(id);

            if (user.HasValue)
            {
                return(user);
            }
            // Otherwise we gotta fetch and store it in cache
            var userResp = await _restClient.GetUserAsync(id).ConfigureAwait(false);

            if (userResp == null)
            {
                return(Option.None <IUser>());
            }
            // Otherwise we save it
            _cacheService.Set(CacheId.GetUser(id), userResp, TimeSpan.FromMinutes(_USER_TTL_MINS));
            return(Option.Some <IUser>(userResp));
        }