2e038a1d3f
- миграция 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-снапшота
32 lines
1.7 KiB
SQL
32 lines
1.7 KiB
SQL
-- +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;
|