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