예제 #1
0
 public async Task <uint> AddWaifuRequest(WaifuRequestAddDto waifuRequestAddDto)
 => await _soraTransactor.DoInTransactionAndGetAsync(async context =>
 {
     WaifuRequest req = new WaifuRequest()
     {
         Name         = waifuRequestAddDto.Name,
         ImageUrl     = waifuRequestAddDto.ImageUrl,
         Rarity       = waifuRequestAddDto.Rarity,
         RequestState = RequestState.Pending,
         RequestTime  = DateTime.UtcNow,
         UserId       = ulong.Parse(waifuRequestAddDto.UserId),
     };
     context.WaifuRequests.Add(req);
     await context.SaveChangesAsync().ConfigureAwait(false);
     return(req.Id);
 }).ConfigureAwait(false);
예제 #2
0
        public async Task <Some <User> > GetOrCreateUser(ulong id)
        {
            return(await _soraTransactor.DoInTransactionAndGetAsync(async context =>
            {
                var user = await context.Users.FindAsync(id).ConfigureAwait(false);
                if (user != null)
                {
                    return user;
                }

                // Otherwise we'll have to create the user ourselves
                user = new User()
                {
                    Id = id
                };
                await context.Users.AddAsync(user).ConfigureAwait(false);
                await context.SaveChangesAsync().ConfigureAwait(false);
                return user;
            }).ConfigureAwait(false));
        }
예제 #3
0
 public async Task <Option <Guild> > GetOrSetAndGetGuild(ulong id)
 => await _soraTransactor.DoInTransactionAndGetAsync(async context
                                                     => Option.Some(await GetOrSetAndGetGuild(id, context).ConfigureAwait(false))
                                                     ).ConfigureAwait(false);