Files
glchat/internal/database/migrations/00013_profile_styles.sql
T

33 lines
1.6 KiB
SQL
Raw Normal View History

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