-- +goose Up -- Галерея оформления сервера (AGENT.md 7.4): рамки аватара и иконки рядом с -- ником. Файлы лежат обычными загрузками, поэтому анимация сохраняется. CREATE TABLE guild_cosmetics ( id INTEGER PRIMARY KEY, guild_id INTEGER NOT NULL REFERENCES guilds (id) ON DELETE CASCADE, kind TEXT NOT NULL, name TEXT NOT NULL, file_id INTEGER NOT NULL REFERENCES files (id) ON DELETE CASCADE, created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')) ); CREATE INDEX guild_cosmetics_guild_idx ON guild_cosmetics (guild_id, kind, id); -- Личные стили профиля: guild_id IS NULL — стиль «для друзей» (DM, друзья, -- глобальные места), иначе переопределение для конкретного сервера (7.2). CREATE TABLE user_styles ( id INTEGER PRIMARY KEY, user_id INTEGER NOT NULL REFERENCES users (id) ON DELETE CASCADE, guild_id INTEGER REFERENCES guilds (id) ON DELETE CASCADE, frame_id INTEGER REFERENCES guild_cosmetics (id) ON DELETE SET NULL, badge_id INTEGER REFERENCES guild_cosmetics (id) ON DELETE SET NULL, nick_color INTEGER, nick_effect TEXT, updated_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')) ); CREATE UNIQUE INDEX user_styles_scope_idx ON user_styles (user_id, IFNULL(guild_id, 0)); -- +goose Down DROP INDEX user_styles_scope_idx; DROP TABLE user_styles; DROP INDEX guild_cosmetics_guild_idx; DROP TABLE guild_cosmetics;