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);
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)); }
public async Task <Option <Guild> > GetOrSetAndGetGuild(ulong id) => await _soraTransactor.DoInTransactionAndGetAsync(async context => Option.Some(await GetOrSetAndGetGuild(id, context).ConfigureAwait(false)) ).ConfigureAwait(false);