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); }
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)); }