Files
glchat/internal/database/migrations/00012_webhooks.sql
T

32 lines
1.7 KiB
SQL
Raw Normal View History

-- +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;