Indexium/indexium-backend/migrations/20260906000000_init_schema.sql

32 lines
1.3 KiB
SQL

-- Таблица модов (метаданные репозитория)
CREATE TABLE IF NOT EXISTS mods (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
github_repo_id BIGINT UNIQUE NOT NULL,
owner VARCHAR(255) NOT NULL,
repo VARCHAR(255) NOT NULL,
slug VARCHAR(64) UNIQUE NOT NULL,
name VARCHAR(128) NOT NULL,
summary TEXT,
icon_url TEXT,
default_branch VARCHAR(32) NOT NULL DEFAULT 'main',
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
-- Таблица версий (релизов), полученных через Webhook/API
CREATE TABLE IF NOT EXISTS mod_versions (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
mod_id UUID NOT NULL REFERENCES mods(id) ON DELETE CASCADE,
version_number VARCHAR(64) NOT NULL,
game_versions VARCHAR(32)[] NOT NULL,
loaders VARCHAR(32)[] NOT NULL,
download_url TEXT NOT NULL,
file_sha256 CHAR(64) NOT NULL,
published_at TIMESTAMPTZ NOT NULL,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
CONSTRAINT unique_mod_version UNIQUE (mod_id, version_number)
);
-- Индексы для быстрой фильтрации лаунчерами
CREATE INDEX IF NOT EXISTS idx_mods_slug ON mods(slug);
CREATE INDEX IF NOT EXISTS idx_versions_lookup ON mod_versions USING GIN (game_versions, loaders);