very close to rolling this out! just need to address some security concerns first
66 lines
2 KiB
SQL
66 lines
2 KiB
SQL
--
|
|
-- Migration
|
|
--
|
|
|
|
-- Move existing tables to new schema
|
|
ALTER TABLE public.artist SET SCHEMA arimelody;
|
|
ALTER TABLE public.musicrelease SET SCHEMA arimelody;
|
|
ALTER TABLE public.musiclink SET SCHEMA arimelody;
|
|
ALTER TABLE public.musiccredit SET SCHEMA arimelody;
|
|
ALTER TABLE public.musictrack SET SCHEMA arimelody;
|
|
ALTER TABLE public.musicreleasetrack SET SCHEMA arimelody;
|
|
|
|
|
|
|
|
--
|
|
-- New items
|
|
--
|
|
|
|
-- Acounts
|
|
CREATE TABLE arimelody.account (
|
|
id uuid DEFAULT gen_random_uuid(),
|
|
username text NOT NULL UNIQUE,
|
|
password text NOT NULL,
|
|
email text,
|
|
avatar_url text
|
|
);
|
|
ALTER TABLE arimelody.account ADD CONSTRAINT account_pk PRIMARY KEY (id);
|
|
|
|
-- Privilege
|
|
CREATE TABLE arimelody.privilege (
|
|
account uuid NOT NULL,
|
|
privilege text NOT NULL
|
|
);
|
|
ALTER TABLE arimelody.privilege ADD CONSTRAINT privilege_pk PRIMARY KEY (account, privilege);
|
|
|
|
-- TOTP
|
|
CREATE TABLE arimelody.totp (
|
|
account uuid NOT NULL,
|
|
name text NOT NULL,
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
ALTER TABLE arimelody.totp ADD CONSTRAINT totp_pk PRIMARY KEY (account, name);
|
|
|
|
-- Invites
|
|
CREATE TABLE arimelody.invite (
|
|
code text NOT NULL,
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
expires_at TIMESTAMP NOT NULL
|
|
);
|
|
ALTER TABLE arimelody.invite ADD CONSTRAINT invite_pk PRIMARY KEY (code);
|
|
|
|
-- Tokens
|
|
CREATE TABLE arimelody.token (
|
|
token TEXT,
|
|
account UUID NOT NULL,
|
|
user_agent TEXT NOT NULL,
|
|
created_at TIMESTAMP NOT NULL DEFAULT current_timestamp,
|
|
expires_at TIMESTAMP DEFAULT NULL
|
|
);
|
|
ALTER TABLE arimelody.token ADD CONSTRAINT token_pk PRIMARY KEY (token);
|
|
|
|
-- Foreign keys
|
|
ALTER TABLE arimelody.privilege ADD CONSTRAINT privilege_account_fk FOREIGN KEY (account) REFERENCES account(id) ON DELETE CASCADE;
|
|
ALTER TABLE arimelody.totp ADD CONSTRAINT totp_account_fk FOREIGN KEY (account) REFERENCES account(id) ON DELETE CASCADE;
|
|
ALTER TABLE arimelody.token ADD CONSTRAINT token_account_fk FOREIGN KEY (account) REFERENCES account(id) ON DELETE CASCADE;
|