diff --git a/Catalogger.Backend/Api/GuildsController.ChannelsRoles.cs b/Catalogger.Backend/Api/GuildsController.ChannelsRoles.cs index b3a6928..c93a2b8 100644 --- a/Catalogger.Backend/Api/GuildsController.ChannelsRoles.cs +++ b/Catalogger.Backend/Api/GuildsController.ChannelsRoles.cs @@ -45,7 +45,7 @@ public partial class GuildsController return NoContent(); guildConfig.Messages.IgnoredChannels.Add(channelId); - await guildRepository.UpdateChannelConfigAsync(guildId, guildConfig); + await guildRepository.UpdateConfigAsync(guildId, guildConfig); return NoContent(); } @@ -57,7 +57,7 @@ public partial class GuildsController var guildConfig = await guildRepository.GetAsync(guildId); guildConfig.Messages.IgnoredChannels.Remove(channelId); - await guildRepository.UpdateChannelConfigAsync(guildId, guildConfig); + await guildRepository.UpdateConfigAsync(guildId, guildConfig); return NoContent(); } @@ -75,7 +75,7 @@ public partial class GuildsController return NoContent(); guildConfig.Messages.IgnoredRoles.Add(roleId); - await guildRepository.UpdateChannelConfigAsync(guildId, guildConfig); + await guildRepository.UpdateConfigAsync(guildId, guildConfig); return NoContent(); } @@ -87,7 +87,7 @@ public partial class GuildsController var guildConfig = await guildRepository.GetAsync(guildId); guildConfig.Messages.IgnoredRoles.Remove(roleId); - await guildRepository.UpdateChannelConfigAsync(guildId, guildConfig); + await guildRepository.UpdateConfigAsync(guildId, guildConfig); return NoContent(); } @@ -117,7 +117,7 @@ public partial class GuildsController return NoContent(); guildConfig.IgnoredChannels = [.. guildConfig.IgnoredChannels, channelId]; - await guildRepository.UpdateChannelConfigAsync(guildId, guildConfig); + await guildRepository.UpdateConfigAsync(guildId, guildConfig); return NoContent(); } @@ -131,7 +131,7 @@ public partial class GuildsController var channels = guildConfig.IgnoredChannels.ToList(); channels.Remove(channelId); guildConfig.IgnoredChannels = channels.ToArray(); - await guildRepository.UpdateChannelConfigAsync(guildId, guildConfig); + await guildRepository.UpdateConfigAsync(guildId, guildConfig); return NoContent(); } @@ -149,7 +149,7 @@ public partial class GuildsController return NoContent(); guildConfig.IgnoredRoles = [.. guildConfig.IgnoredRoles, roleId]; - await guildRepository.UpdateChannelConfigAsync(guildId, guildConfig); + await guildRepository.UpdateConfigAsync(guildId, guildConfig); return NoContent(); } @@ -163,7 +163,7 @@ public partial class GuildsController var roles = guildConfig.IgnoredRoles.ToList(); roles.Remove(roleId); guildConfig.IgnoredRoles = roles.ToArray(); - await guildRepository.UpdateChannelConfigAsync(guildId, guildConfig); + await guildRepository.UpdateConfigAsync(guildId, guildConfig); return NoContent(); } diff --git a/Catalogger.Backend/Api/GuildsController.Redirects.cs b/Catalogger.Backend/Api/GuildsController.Redirects.cs index f762896..4131343 100644 --- a/Catalogger.Backend/Api/GuildsController.Redirects.cs +++ b/Catalogger.Backend/Api/GuildsController.Redirects.cs @@ -61,7 +61,7 @@ public partial class GuildsController ); guildConfig.Channels.Redirects[source.ID.Value] = target.ID.Value; - await guildRepository.UpdateChannelConfigAsync(guildId, guildConfig); + await guildRepository.UpdateConfigAsync(guildId, guildConfig); return NoContent(); } @@ -80,7 +80,7 @@ public partial class GuildsController ); guildConfig.Channels.Redirects.Remove(channelId, out _); - await guildRepository.UpdateChannelConfigAsync(guildId, guildConfig); + await guildRepository.UpdateConfigAsync(guildId, guildConfig); return NoContent(); } diff --git a/Catalogger.Backend/Api/GuildsController.Users.cs b/Catalogger.Backend/Api/GuildsController.Users.cs index 3a3ef43..e67cb55 100644 --- a/Catalogger.Backend/Api/GuildsController.Users.cs +++ b/Catalogger.Backend/Api/GuildsController.Users.cs @@ -76,7 +76,7 @@ public partial class GuildsController return Ok(new IgnoredUser(user.ID.Value, user.Tag())); guildConfig.Messages.IgnoredUsers.Add(user.ID.Value); - await guildRepository.UpdateChannelConfigAsync(guildId, guildConfig); + await guildRepository.UpdateConfigAsync(guildId, guildConfig); return Ok(new IgnoredUser(user.ID.Value, user.Tag())); } @@ -88,7 +88,7 @@ public partial class GuildsController var guildConfig = await guildRepository.GetAsync(guildId); guildConfig.Messages.IgnoredUsers.Remove(userId); - await guildRepository.UpdateChannelConfigAsync(guildId, guildConfig); + await guildRepository.UpdateConfigAsync(guildId, guildConfig); return NoContent(); } diff --git a/Catalogger.Backend/Api/GuildsController.cs b/Catalogger.Backend/Api/GuildsController.cs index 5eb29f3..d032d6f 100644 --- a/Catalogger.Backend/Api/GuildsController.cs +++ b/Catalogger.Backend/Api/GuildsController.cs @@ -318,7 +318,7 @@ public partial class GuildsController( ) guildConfig.Channels.MessageDeleteBulk = req.MessageDeleteBulk ?? 0; - await guildRepository.UpdateChannelConfigAsync(guildId, guildConfig); + await guildRepository.UpdateConfigAsync(guildId, guildConfig); return Ok(guildConfig.Channels); } diff --git a/Catalogger.Backend/Bot/Commands/ChannelCommandsComponents.cs b/Catalogger.Backend/Bot/Commands/ChannelCommandsComponents.cs index ae472e7..9867e7d 100644 --- a/Catalogger.Backend/Bot/Commands/ChannelCommandsComponents.cs +++ b/Catalogger.Backend/Bot/Commands/ChannelCommandsComponents.cs @@ -261,7 +261,7 @@ public class ChannelCommandsComponents( throw new ArgumentOutOfRangeException(); } - await guildRepository.UpdateChannelConfigAsync(guildId, guildConfig); + await guildRepository.UpdateConfigAsync(guildId, guildConfig); goto case "return"; case "return": var (e, c) = ChannelCommands.BuildRootMenu(guildChannels, guild, guildConfig); @@ -384,7 +384,7 @@ public class ChannelCommandsComponents( throw new ArgumentOutOfRangeException(); } - await guildRepository.UpdateChannelConfigAsync(guildId, guildConfig); + await guildRepository.UpdateConfigAsync(guildId, guildConfig); List embeds = [ diff --git a/Catalogger.Backend/Bot/Commands/IgnoreMessageCommands.Channels.cs b/Catalogger.Backend/Bot/Commands/IgnoreMessageCommands.Channels.cs index 310142d..a365c9f 100644 --- a/Catalogger.Backend/Bot/Commands/IgnoreMessageCommands.Channels.cs +++ b/Catalogger.Backend/Bot/Commands/IgnoreMessageCommands.Channels.cs @@ -75,7 +75,7 @@ public partial class IgnoreMessageCommands : CommandGroup ); guildConfig.Messages.IgnoredChannels.Add(channel.ID.Value); - await guildRepository.UpdateChannelConfigAsync(guildId, guildConfig); + await guildRepository.UpdateConfigAsync(guildId, guildConfig); return await feedbackService.ReplyAsync( $"Successfully added {(channel.Type == ChannelType.GuildCategory ? channel.Name : $"<#{channel.ID}>")} to the list of ignored channels." @@ -98,7 +98,7 @@ public partial class IgnoreMessageCommands : CommandGroup ); guildConfig.Messages.IgnoredChannels.Remove(channel.ID.Value); - await guildRepository.UpdateChannelConfigAsync(guildId, guildConfig); + await guildRepository.UpdateConfigAsync(guildId, guildConfig); return await feedbackService.ReplyAsync( $"Successfully removed {(channel.Type == ChannelType.GuildCategory ? channel.Name : $"<#{channel.ID}>")} from the list of ignored channels." diff --git a/Catalogger.Backend/Bot/Commands/IgnoreMessageCommands.Roles.cs b/Catalogger.Backend/Bot/Commands/IgnoreMessageCommands.Roles.cs index 6515f47..cf3cb10 100644 --- a/Catalogger.Backend/Bot/Commands/IgnoreMessageCommands.Roles.cs +++ b/Catalogger.Backend/Bot/Commands/IgnoreMessageCommands.Roles.cs @@ -54,7 +54,7 @@ public partial class IgnoreMessageCommands ); guildConfig.Messages.IgnoredRoles.Add(role.ID.Value); - await guildRepository.UpdateChannelConfigAsync(guildId, guildConfig); + await guildRepository.UpdateConfigAsync(guildId, guildConfig); return await feedbackService.ReplyAsync( $"Successfully added {role.Name} to the list of ignored roles." @@ -77,7 +77,7 @@ public partial class IgnoreMessageCommands ); guildConfig.Messages.IgnoredRoles.Remove(role.ID.Value); - await guildRepository.UpdateChannelConfigAsync(guildId, guildConfig); + await guildRepository.UpdateConfigAsync(guildId, guildConfig); return await feedbackService.ReplyAsync( $"Successfully removed {role.Name} from the list of ignored roles." diff --git a/Catalogger.Backend/Bot/Commands/IgnoreMessageCommands.Users.cs b/Catalogger.Backend/Bot/Commands/IgnoreMessageCommands.Users.cs index 89f329b..d89f487 100644 --- a/Catalogger.Backend/Bot/Commands/IgnoreMessageCommands.Users.cs +++ b/Catalogger.Backend/Bot/Commands/IgnoreMessageCommands.Users.cs @@ -58,7 +58,7 @@ public partial class IgnoreMessageCommands ); guildConfig.Messages.IgnoredUsers.Add(user.ID.Value); - await guildRepository.UpdateChannelConfigAsync(guildId, guildConfig); + await guildRepository.UpdateConfigAsync(guildId, guildConfig); return await feedbackService.ReplyAsync( $"Successfully added {user.PrettyFormat()} to the list of ignored users." @@ -81,7 +81,7 @@ public partial class IgnoreMessageCommands ); guildConfig.Messages.IgnoredUsers.Remove(user.ID.Value); - await guildRepository.UpdateChannelConfigAsync(guildId, guildConfig); + await guildRepository.UpdateConfigAsync(guildId, guildConfig); return await feedbackService.ReplyAsync( $"Successfully removed {user.PrettyFormat()} from the list of ignored users." diff --git a/Catalogger.Backend/Bot/Commands/RedirectCommands.cs b/Catalogger.Backend/Bot/Commands/RedirectCommands.cs index 0fb2a3d..586deb3 100644 --- a/Catalogger.Backend/Bot/Commands/RedirectCommands.cs +++ b/Catalogger.Backend/Bot/Commands/RedirectCommands.cs @@ -61,7 +61,7 @@ public class RedirectCommands( var (_, guildId) = contextInjectionService.GetUserAndGuild(); var guildConfig = await guildRepository.GetAsync(guildId); guildConfig.Channels.Redirects[source.ID.Value] = target.ID.Value; - await guildRepository.UpdateChannelConfigAsync(guildId, guildConfig); + await guildRepository.UpdateConfigAsync(guildId, guildConfig); var output = $"Success! Edited and deleted messages from {FormatChannel(source)} will now be redirected to <#{target.ID}>."; @@ -101,7 +101,7 @@ public class RedirectCommands( var guildConfig = await guildRepository.GetAsync(guildId); var wasSet = guildConfig.Channels.Redirects.Remove(source.ID.Value); - await guildRepository.UpdateChannelConfigAsync(guildId, guildConfig); + await guildRepository.UpdateConfigAsync(guildId, guildConfig); var output = wasSet ? $"Removed the redirect for {FormatChannel(source)}! Message logs from" diff --git a/Catalogger.Backend/Database/Migrations/005_add_ignored_channels_roles.up.sql b/Catalogger.Backend/Database/Migrations/005_add_ignored_channels_roles.up.sql new file mode 100644 index 0000000..8d39d94 --- /dev/null +++ b/Catalogger.Backend/Database/Migrations/005_add_ignored_channels_roles.up.sql @@ -0,0 +1,2 @@ +alter table guilds add column ignored_channels bigint[] not null default array[]::bigint[]; +alter table guilds add column ignored_roles bigint[] not null default array[]::bigint[]; diff --git a/Catalogger.Backend/Database/Migrations/006_add_ignored_channels_roles.down.sql b/Catalogger.Backend/Database/Migrations/006_add_ignored_channels_roles.down.sql new file mode 100644 index 0000000..30f833d --- /dev/null +++ b/Catalogger.Backend/Database/Migrations/006_add_ignored_channels_roles.down.sql @@ -0,0 +1,2 @@ +alter table guilds drop column ignored_channels; +alter table guilds drop column ignored_roles; diff --git a/Catalogger.Backend/Database/Repositories/GuildRepository.cs b/Catalogger.Backend/Database/Repositories/GuildRepository.cs index 276b89a..853a93e 100644 --- a/Catalogger.Backend/Database/Repositories/GuildRepository.cs +++ b/Catalogger.Backend/Database/Repositories/GuildRepository.cs @@ -131,14 +131,22 @@ public class GuildRepository(ILogger logger, DatabaseConnection conn) new { GuildId = guildId.Value, RoleId = roleId.Value } ); - public async Task UpdateChannelConfigAsync(Snowflake id, Guild config) => + public async Task UpdateConfigAsync(Snowflake id, Guild config) => await conn.ExecuteAsync( - "update guilds set channels = @Channels::jsonb, messages = @Messages::jsonb where id = @Id", + """ + update guilds set channels = @Channels::jsonb, + messages = @Messages::jsonb, + ignored_channels = @IgnoredChannels, + ignored_roles = @IgnoredRoles + where id = @Id + """, new { Id = id.Value, config.Channels, config.Messages, + config.IgnoredChannels, + config.IgnoredRoles, } );