33 lines
1.4 KiB
SQL
33 lines
1.4 KiB
SQL
-- Users table for API key authentication
|
|
CREATE TABLE IF NOT EXISTS users (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
username TEXT NOT NULL UNIQUE,
|
|
display_name TEXT NOT NULL DEFAULT '',
|
|
role TEXT NOT NULL DEFAULT 'user',
|
|
api_key TEXT UNIQUE,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
);
|
|
|
|
CREATE UNIQUE INDEX IF NOT EXISTS idx_users_api_key ON users (api_key) WHERE api_key IS NOT NULL;
|
|
|
|
-- Requests table for media request workflow
|
|
CREATE TABLE IF NOT EXISTS requests (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
media_id BIGINT,
|
|
media_type TEXT NOT NULL DEFAULT '',
|
|
title TEXT NOT NULL DEFAULT '',
|
|
requested_by BIGINT NOT NULL REFERENCES users(id),
|
|
status TEXT NOT NULL DEFAULT 'pending',
|
|
quality_profile_id INTEGER REFERENCES quality_profiles(id),
|
|
root_folder_id INTEGER REFERENCES root_folders(id),
|
|
notes TEXT DEFAULT '',
|
|
reviewed_by BIGINT REFERENCES users(id),
|
|
reviewed_at TIMESTAMPTZ,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_requests_status ON requests (status);
|
|
CREATE INDEX IF NOT EXISTS idx_requests_requested_by ON requests (requested_by);
|
|
CREATE INDEX IF NOT EXISTS idx_requests_media ON requests (media_id, media_type);
|