feat: watchlist repository, remove ef core from all bot code
This commit is contained in:
parent
da4dfae27c
commit
f0511a560c
19 changed files with 155 additions and 97 deletions
|
|
@ -19,6 +19,7 @@ using Catalogger.Backend.Bot;
|
|||
using Catalogger.Backend.Database.Queries;
|
||||
using Catalogger.Backend.Extensions;
|
||||
using Catalogger.Backend.Services;
|
||||
using Dapper;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Remora.Discord.Extensions.Embeds;
|
||||
|
|
@ -40,7 +41,7 @@ public partial class GuildsController
|
|||
);
|
||||
}
|
||||
|
||||
var guildConfig = await db.GetGuildAsync(guildId.Value, false);
|
||||
var guildConfig = await guildRepository.GetAsync(guildId);
|
||||
var logChannelId =
|
||||
webhookExecutor.GetLogChannel(guildConfig, LogChannelType.GuildUpdate)
|
||||
?? webhookExecutor.GetLogChannel(guildConfig, LogChannelType.GuildMemberRemove);
|
||||
|
|
@ -80,17 +81,32 @@ public partial class GuildsController
|
|||
);
|
||||
}
|
||||
|
||||
await using var tx = await db.Database.BeginTransactionAsync();
|
||||
var inviteCount = await db
|
||||
.Invites.Where(i => i.GuildId == guildId.Value)
|
||||
.ExecuteDeleteAsync();
|
||||
var watchlistCount = await db
|
||||
.Watchlists.Where(w => w.GuildId == guildId.Value)
|
||||
.ExecuteDeleteAsync();
|
||||
var messageCount = await db
|
||||
.Messages.Where(m => m.GuildId == guildId.Value)
|
||||
.ExecuteDeleteAsync();
|
||||
await db.Guilds.Where(g => g.Id == guildId.Value).ExecuteDeleteAsync();
|
||||
await using var tx = await dbConn.BeginTransactionAsync();
|
||||
|
||||
var inviteCount = await dbConn.ExecuteAsync(
|
||||
"delete from invites where guild_id = @GuildId",
|
||||
new { GuildId = guildId.Value },
|
||||
tx
|
||||
);
|
||||
|
||||
var watchlistCount = await dbConn.ExecuteAsync(
|
||||
"delete from watchlists where guild_id = @GuildId",
|
||||
new { GuildId = guildId.Value },
|
||||
tx
|
||||
);
|
||||
|
||||
var messageCount = await dbConn.ExecuteAsync(
|
||||
"delete from messages where guild_id = @GuildId",
|
||||
new { GuildId = guildId.Value },
|
||||
tx
|
||||
);
|
||||
|
||||
await dbConn.ExecuteAsync(
|
||||
"delete from guilds where id = @GuildId",
|
||||
new { GuildId = guildId.Value },
|
||||
tx
|
||||
);
|
||||
|
||||
await tx.CommitAsync();
|
||||
|
||||
_logger.Information(
|
||||
|
|
|
|||
|
|
@ -18,8 +18,8 @@ using Catalogger.Backend.Api.Middleware;
|
|||
using Catalogger.Backend.Cache;
|
||||
using Catalogger.Backend.Cache.InMemoryCache;
|
||||
using Catalogger.Backend.Database;
|
||||
using Catalogger.Backend.Database.Queries;
|
||||
using Catalogger.Backend.Database.Redis;
|
||||
using Catalogger.Backend.Database.Dapper;
|
||||
using Catalogger.Backend.Database.Dapper.Repositories;
|
||||
using Catalogger.Backend.Services;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Remora.Discord.API;
|
||||
|
|
@ -33,6 +33,8 @@ namespace Catalogger.Backend.Api;
|
|||
public partial class GuildsController(
|
||||
ILogger logger,
|
||||
DatabaseContext db,
|
||||
DatabaseConnection dbConn,
|
||||
GuildRepository guildRepository,
|
||||
GuildCache guildCache,
|
||||
EmojiCache emojiCache,
|
||||
ChannelCache channelCache,
|
||||
|
|
@ -70,7 +72,7 @@ public partial class GuildsController(
|
|||
{
|
||||
var (guildId, guild) = await ParseGuildAsync(id);
|
||||
|
||||
var guildConfig = await db.GetGuildAsync(guildId.Value, false);
|
||||
var guildConfig = await guildRepository.GetAsync(guildId);
|
||||
|
||||
var channels = channelCache
|
||||
.GuildChannels(guildId)
|
||||
|
|
@ -134,12 +136,12 @@ public partial class GuildsController(
|
|||
[ProducesResponseType<Database.Models.Guild.ChannelConfig>(statusCode: StatusCodes.Status200OK)]
|
||||
public async Task<IActionResult> PatchGuildAsync(string id, [FromBody] ChannelRequest req)
|
||||
{
|
||||
var (guildId, guild) = await ParseGuildAsync(id);
|
||||
var (guildId, _) = await ParseGuildAsync(id);
|
||||
var guildChannels = channelCache
|
||||
.GuildChannels(guildId)
|
||||
.Where(c => c.Type is ChannelType.GuildText)
|
||||
.ToList();
|
||||
var guildConfig = await db.GetGuildAsync(guildId);
|
||||
var guildConfig = await guildRepository.GetAsync(guildId);
|
||||
|
||||
if (req.IgnoredChannels != null)
|
||||
{
|
||||
|
|
@ -316,9 +318,7 @@ public partial class GuildsController(
|
|||
)
|
||||
guildConfig.Channels.MessageDeleteBulk = req.MessageDeleteBulk ?? 0;
|
||||
|
||||
db.Update(guildConfig);
|
||||
await db.SaveChangesAsync();
|
||||
|
||||
await guildRepository.UpdateChannelConfigAsync(guildId, guildConfig.Channels);
|
||||
return Ok(guildConfig.Channels);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue