33 lines
1.6 KiB
SQL
33 lines
1.6 KiB
SQL
|
|
-- +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;
|