mirror of
https://gitlab.com/Kwoth/nadekobot.git
synced 2025-09-10 09:18:27 -04:00
* Refactored some of the cleanup code
* Fixed blacklist issues due to code conversion from efcore to linq2db * Fixed medusasearch not having a description
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
#nullable disable
|
||||
using LinqToDB;
|
||||
using LinqToDB.Data;
|
||||
using LinqToDB.EntityFrameworkCore;
|
||||
using NadekoBot.Common.ModuleBehaviors;
|
||||
using NadekoBot.Db;
|
||||
@@ -96,6 +97,16 @@ public sealed class BlacklistService : IExecOnMessage
|
||||
Type = type,
|
||||
});
|
||||
|
||||
if (type == BlacklistType.User)
|
||||
{
|
||||
await uow.GetTable<DiscordUser>()
|
||||
.Where(x => x.UserId == id)
|
||||
.UpdateAsync(_ => new()
|
||||
{
|
||||
CurrencyAmount = 0
|
||||
});
|
||||
}
|
||||
|
||||
Reload();
|
||||
}
|
||||
|
||||
@@ -109,27 +120,23 @@ public sealed class BlacklistService : IExecOnMessage
|
||||
Reload();
|
||||
}
|
||||
|
||||
public void BlacklistUsers(IReadOnlyCollection<ulong> toBlacklist)
|
||||
public async Task BlacklistUsers(IReadOnlyCollection<ulong> toBlacklist)
|
||||
{
|
||||
using (var uow = _db.GetDbContext())
|
||||
await using var uow = _db.GetDbContext();
|
||||
var bc = uow.GetTable<BlacklistEntry>();
|
||||
await bc.BulkCopyAsync(toBlacklist.Select(uid => new BlacklistEntry
|
||||
{
|
||||
var bc = uow.Set<BlacklistEntry>();
|
||||
bc.AddRange(toBlacklist.Select(x => new BlacklistEntry
|
||||
{
|
||||
ItemId = x,
|
||||
Type = BlacklistType.User
|
||||
}));
|
||||
ItemId = uid,
|
||||
Type = BlacklistType.User
|
||||
}));
|
||||
|
||||
// todo check if blacklist works and removes currency
|
||||
uow.GetTable<DiscordUser>()
|
||||
.UpdateAsync(x => toBlacklist.Contains(x.UserId),
|
||||
_ => new()
|
||||
{
|
||||
CurrencyAmount = 0
|
||||
});
|
||||
|
||||
uow.SaveChanges();
|
||||
}
|
||||
var blList = toBlacklist.ToList();
|
||||
await uow.GetTable<DiscordUser>()
|
||||
.Where(x => blList.Contains(x.UserId))
|
||||
.UpdateAsync(_ => new()
|
||||
{
|
||||
CurrencyAmount = 0
|
||||
});
|
||||
|
||||
Reload();
|
||||
}
|
||||
|
@@ -0,0 +1,60 @@
|
||||
using LinqToDB;
|
||||
using NadekoBot.Db.Models;
|
||||
using NadekoBot.Services.Database.Models;
|
||||
|
||||
namespace Nadeko.Bot.Modules.Gambling.Gambling._Common;
|
||||
|
||||
public class GamblingCleanupService : IGamblingCleanupService, INService
|
||||
{
|
||||
private readonly DbService _db;
|
||||
|
||||
public GamblingCleanupService(DbService db)
|
||||
{
|
||||
_db = db;
|
||||
}
|
||||
|
||||
public async Task DeleteWaifus()
|
||||
{
|
||||
await using var ctx = _db.GetDbContext();
|
||||
await ctx.Set<WaifuInfo>().DeleteAsync();
|
||||
await ctx.Set<WaifuItem>().DeleteAsync();
|
||||
await ctx.Set<WaifuUpdate>().DeleteAsync();
|
||||
await ctx.SaveChangesAsync();
|
||||
}
|
||||
|
||||
public async Task DeleteWaifu(ulong userId)
|
||||
{
|
||||
await using var ctx = _db.GetDbContext();
|
||||
await ctx.Set<WaifuUpdate>()
|
||||
.Where(x => x.User.UserId == userId)
|
||||
.DeleteAsync();
|
||||
await ctx.Set<WaifuItem>()
|
||||
.Where(x => x.WaifuInfo.Waifu.UserId == userId)
|
||||
.DeleteAsync();
|
||||
await ctx.Set<WaifuInfo>()
|
||||
.Where(x => x.Claimer.UserId == userId)
|
||||
.UpdateAsync(old => new WaifuInfo()
|
||||
{
|
||||
ClaimerId = null,
|
||||
});
|
||||
await ctx.Set<WaifuInfo>()
|
||||
.Where(x => x.Waifu.UserId == userId)
|
||||
.DeleteAsync();
|
||||
await ctx.SaveChangesAsync();
|
||||
}
|
||||
|
||||
public async Task DeleteCurrency()
|
||||
{
|
||||
await using var uow = _db.GetDbContext();
|
||||
await uow.Set<DiscordUser>().UpdateAsync(_ => new DiscordUser()
|
||||
{
|
||||
CurrencyAmount = 0
|
||||
});
|
||||
|
||||
await uow.Set<CurrencyTransaction>().DeleteAsync();
|
||||
await uow.Set<PlantedCurrency>().DeleteAsync();
|
||||
await uow.Set<BankUser>().DeleteAsync();
|
||||
await uow.SaveChangesAsync();
|
||||
}
|
||||
|
||||
}
|
@@ -1,68 +1,8 @@
|
||||
using LinqToDB;
|
||||
using NadekoBot.Db.Models;
|
||||
using NadekoBot.Services.Database.Models;
|
||||
namespace Nadeko.Bot.Modules.Gambling.Gambling._Common;
|
||||
|
||||
namespace Nadeko.Bot.Modules.Gambling.Gambling._Common;
|
||||
|
||||
// todo organize
|
||||
public interface IGamblingCleanupService
|
||||
{
|
||||
Task DeleteWaifus();
|
||||
Task DeleteWaifu(ulong userId);
|
||||
Task DeleteCurrency();
|
||||
}
|
||||
|
||||
public class GamblingCleanupService : IGamblingCleanupService, INService
|
||||
{
|
||||
private readonly DbService _db;
|
||||
|
||||
public GamblingCleanupService(DbService db)
|
||||
{
|
||||
_db = db;
|
||||
}
|
||||
|
||||
public async Task DeleteWaifus()
|
||||
{
|
||||
await using var ctx = _db.GetDbContext();
|
||||
await ctx.Set<WaifuInfo>().DeleteAsync();
|
||||
await ctx.Set<WaifuItem>().DeleteAsync();
|
||||
await ctx.Set<WaifuUpdate>().DeleteAsync();
|
||||
await ctx.SaveChangesAsync();
|
||||
}
|
||||
|
||||
public async Task DeleteWaifu(ulong userId)
|
||||
{
|
||||
await using var ctx = _db.GetDbContext();
|
||||
await ctx.Set<WaifuUpdate>()
|
||||
.Where(x => x.User.UserId == userId)
|
||||
.DeleteAsync();
|
||||
await ctx.Set<WaifuItem>()
|
||||
.Where(x => x.WaifuInfo.Waifu.UserId == userId)
|
||||
.DeleteAsync();
|
||||
await ctx.Set<WaifuInfo>()
|
||||
.Where(x => x.Claimer.UserId == userId)
|
||||
.UpdateAsync(old => new WaifuInfo()
|
||||
{
|
||||
ClaimerId = null,
|
||||
});
|
||||
await ctx.Set<WaifuInfo>()
|
||||
.Where(x => x.Waifu.UserId == userId)
|
||||
.DeleteAsync();
|
||||
await ctx.SaveChangesAsync();
|
||||
}
|
||||
|
||||
public async Task DeleteCurrency()
|
||||
{
|
||||
await using var uow = _db.GetDbContext();
|
||||
await uow.Set<DiscordUser>().UpdateAsync(_ => new DiscordUser()
|
||||
{
|
||||
CurrencyAmount = 0
|
||||
});
|
||||
|
||||
await uow.Set<CurrencyTransaction>().DeleteAsync();
|
||||
await uow.Set<PlantedCurrency>().DeleteAsync();
|
||||
await uow.Set<BankUser>().DeleteAsync();
|
||||
await uow.SaveChangesAsync();
|
||||
}
|
||||
|
||||
}
|
@@ -1,5 +1,6 @@
|
||||
#nullable disable
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using NadekoBot.Db.Models;
|
||||
using NadekoBot.Services.Database.Models;
|
||||
|
||||
@@ -481,10 +482,10 @@ public abstract class NadekoContext : DbContext
|
||||
#endregion
|
||||
}
|
||||
|
||||
// #if DEBUG
|
||||
// private static readonly ILoggerFactory _debugLoggerFactory = LoggerFactory.Create(x => x.AddConsole());
|
||||
//
|
||||
// protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
|
||||
// => optionsBuilder.UseLoggerFactory(_debugLoggerFactory);
|
||||
// #endif
|
||||
#if DEBUG
|
||||
private static readonly ILoggerFactory _debugLoggerFactory = LoggerFactory.Create(x => x.AddConsole());
|
||||
|
||||
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
|
||||
=> optionsBuilder.UseLoggerFactory(_debugLoggerFactory);
|
||||
#endif
|
||||
}
|
@@ -1358,6 +1358,9 @@ medusalist:
|
||||
medusainfo:
|
||||
- medusainfo
|
||||
- meinfo
|
||||
medusasearch:
|
||||
- medusasearch
|
||||
- mesearch
|
||||
# Bank stuff
|
||||
bankdeposit:
|
||||
- deposit
|
||||
|
@@ -2282,6 +2282,11 @@ medusalist:
|
||||
Read about the medusa system [here](https://nadekobot.readthedocs.io/en/latest/medusa/creating-a-medusa/)
|
||||
args:
|
||||
- ""
|
||||
medusasearch:
|
||||
desc: |-
|
||||
Searches for medusae online given the search term
|
||||
args:
|
||||
- "shrine"
|
||||
bankdeposit:
|
||||
desc: "Deposits the specified amount of currency into the bank for later use."
|
||||
args:
|
||||
|
Reference in New Issue
Block a user