mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-11-05 09:33:25 -08:00
* [Server] Add room chat channels with per-channel fan-out and history * Fixup: redact all channel histories on message removal removeSaidMessages only redacted the main history, so banned/warned content stayed visible to late joiners on every other channel. Drop the unused channelId parameter and redact up to amount messages per channel across the whole channelChatHistory map. * [Server] Validate room channel ids and fix catalog schema per review - servatrice.sql: expand rooms_channels access_level enum to full set to match 0037->0038 migration - servatrice.cpp: skip empty, reserved (__main__) and duplicate channel ids when loading from ini and DB with qWarning - server_protocolhandler.cpp: clarify catalog replay comment (filtering happens in moderator stack) - server_room: drop duplicate channelIndex, linear search preserves catalog order * [Server] Fix server_room.cpp formatting per clang-format-18 --------- Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de> Co-authored-by: BruebachL <bruebachl@cockatrice.example>
21 lines
No EOL
1 KiB
SQL
21 lines
No EOL
1 KiB
SQL
-- Servatrice db migration from version 37 to version 38
|
|
|
|
-- Room chat channels.
|
|
--
|
|
-- A room now offers a fixed catalog of named message streams in addition to the
|
|
-- implicit Main channel. Public channels are broadcast to every room member;
|
|
-- restricted channels are only delivered to (and sendable by) members whose
|
|
-- privilege level meets the channel's access level.
|
|
|
|
-- 1. Catalog table, mirroring the config-driven channels of no-DB servers.
|
|
CREATE TABLE IF NOT EXISTS `cockatrice_rooms_channels` (
|
|
`id_room` int(7) unsigned NOT NULL,
|
|
`id_server` tinyint(3) NOT NULL DEFAULT 1,
|
|
`channel_id` varchar(50) NOT NULL,
|
|
`display_name` varchar(50) NOT NULL,
|
|
`access_level` ENUM('public','registered','judge','moderator','admin','developer') NOT NULL DEFAULT 'public',
|
|
PRIMARY KEY (`id_room`, `id_server`, `channel_id`),
|
|
FOREIGN KEY(`id_room`) REFERENCES `cockatrice_rooms`(`id`) ON DELETE CASCADE ON UPDATE CASCADE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE utf8mb4_unicode_ci;
|
|
|
|
UPDATE cockatrice_schema_version SET version=38 WHERE version=37; |