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