feat(webhooks): вебхуки комнат — бэкенд, клиент и настройки комнаты
- миграция 00012: таблица webhooks, снимок имени и аватара в messages (AGENT.md 7.11)
- API: список/создание/правка/удаление и пересоздание токена (MANAGE_WEBHOOKS,
step-up при создании, аудит), загрузка аватара отдельной multipart-ручкой
- исполнение POST /webhooks/{id}/{token} без сессии: content, username,
avatar_url, файлы создателя вебхука, лимит 30/мин на вебхук
- клиент: пункт настроек «Комната» со списком вебхуков, копированием ссылки,
пересозданием токена и удалением
- сообщения вебхуков: имя, аватар и значок в ленте вместо «неизвестного автора»
- fix: неполный ответ REST больше не затирает данные READY-снапшота
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
-- +goose Up
|
||||
-- Вебхуки серверов (AGENT.md 7.11): сообщения без пользовательской сессии.
|
||||
-- Токен — секрет ссылки исполнения, его можно пересоздать.
|
||||
CREATE TABLE webhooks (
|
||||
id INTEGER PRIMARY KEY,
|
||||
guild_id INTEGER NOT NULL REFERENCES guilds (id) ON DELETE CASCADE,
|
||||
channel_id INTEGER NOT NULL REFERENCES channels (id) ON DELETE CASCADE,
|
||||
name TEXT NOT NULL,
|
||||
avatar_file_id INTEGER REFERENCES files (id) ON DELETE SET NULL,
|
||||
token TEXT NOT NULL,
|
||||
created_by INTEGER REFERENCES users (id) ON DELETE SET NULL,
|
||||
created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))
|
||||
);
|
||||
CREATE UNIQUE INDEX webhooks_token_idx ON webhooks (token);
|
||||
CREATE INDEX webhooks_channel_idx ON webhooks (channel_id, id);
|
||||
CREATE INDEX webhooks_guild_idx ON webhooks (guild_id, id);
|
||||
|
||||
-- Сообщение вебхука: автора-пользователя нет. Имя и аватар сохраняем снимком,
|
||||
-- чтобы удаление вебхука не меняло уже отправленные сообщения.
|
||||
ALTER TABLE messages ADD COLUMN webhook_id INTEGER REFERENCES webhooks (id) ON DELETE SET NULL;
|
||||
ALTER TABLE messages ADD COLUMN webhook_name TEXT NOT NULL DEFAULT '';
|
||||
ALTER TABLE messages ADD COLUMN webhook_avatar TEXT NOT NULL DEFAULT '';
|
||||
|
||||
-- +goose Down
|
||||
ALTER TABLE messages DROP COLUMN webhook_avatar;
|
||||
ALTER TABLE messages DROP COLUMN webhook_name;
|
||||
ALTER TABLE messages DROP COLUMN webhook_id;
|
||||
DROP INDEX webhooks_guild_idx;
|
||||
DROP INDEX webhooks_channel_idx;
|
||||
DROP INDEX webhooks_token_idx;
|
||||
DROP TABLE webhooks;
|
||||
Reference in New Issue
Block a user