2025-01-20 18:54:03 +00:00
|
|
|
--
|
|
|
|
-- New items
|
|
|
|
--
|
|
|
|
|
2025-01-23 09:39:40 +00:00
|
|
|
-- Accounts
|
2025-01-20 18:54:03 +00:00
|
|
|
CREATE TABLE arimelody.account (
|
2025-01-23 09:39:40 +00:00
|
|
|
id UUID DEFAULT gen_random_uuid(),
|
|
|
|
username TEXT NOT NULL UNIQUE,
|
|
|
|
password TEXT NOT NULL,
|
|
|
|
email TEXT,
|
|
|
|
avatar_url TEXT,
|
2025-01-20 19:11:16 +00:00
|
|
|
created_at TIMESTAMP DEFAULT current_timestamp
|
2025-01-20 18:54:03 +00:00
|
|
|
);
|
|
|
|
ALTER TABLE arimelody.account ADD CONSTRAINT account_pk PRIMARY KEY (id);
|
|
|
|
|
|
|
|
-- Privilege
|
|
|
|
CREATE TABLE arimelody.privilege (
|
2025-01-23 09:39:40 +00:00
|
|
|
account UUID NOT NULL,
|
|
|
|
privilege TEXT NOT NULL
|
2025-01-20 18:54:03 +00:00
|
|
|
);
|
|
|
|
ALTER TABLE arimelody.privilege ADD CONSTRAINT privilege_pk PRIMARY KEY (account, privilege);
|
|
|
|
|
|
|
|
-- Invites
|
|
|
|
CREATE TABLE arimelody.invite (
|
|
|
|
code text NOT NULL,
|
2025-01-26 20:37:20 +00:00
|
|
|
created_at TIMESTAMP NOT NULL DEFAULT current_timestamp,
|
2025-01-20 18:54:03 +00:00
|
|
|
expires_at TIMESTAMP NOT NULL
|
|
|
|
);
|
|
|
|
ALTER TABLE arimelody.invite ADD CONSTRAINT invite_pk PRIMARY KEY (code);
|
|
|
|
|
2025-01-26 20:37:20 +00:00
|
|
|
-- Sessions
|
2025-01-23 00:37:19 +00:00
|
|
|
CREATE TABLE arimelody.session (
|
2025-01-20 18:54:03 +00:00
|
|
|
token TEXT,
|
|
|
|
user_agent TEXT NOT NULL,
|
|
|
|
created_at TIMESTAMP NOT NULL DEFAULT current_timestamp,
|
2025-01-23 09:39:40 +00:00
|
|
|
expires_at TIMESTAMP DEFAULT NULL,
|
2025-01-23 00:37:19 +00:00
|
|
|
account UUID,
|
2025-01-26 23:41:35 +00:00
|
|
|
attempt_account UUID,
|
2025-01-23 00:37:19 +00:00
|
|
|
message TEXT,
|
2025-01-23 09:39:40 +00:00
|
|
|
error TEXT
|
2025-01-20 18:54:03 +00:00
|
|
|
);
|
2025-01-23 09:39:40 +00:00
|
|
|
ALTER TABLE arimelody.session ADD CONSTRAINT session_pk PRIMARY KEY (token);
|
2025-01-20 18:54:03 +00:00
|
|
|
|
2025-01-26 20:37:20 +00:00
|
|
|
-- TOTP methods
|
2025-01-20 23:49:54 +00:00
|
|
|
CREATE TABLE arimelody.totp (
|
|
|
|
name TEXT NOT NULL,
|
|
|
|
account UUID NOT NULL,
|
|
|
|
secret TEXT,
|
2025-01-26 20:50:02 +00:00
|
|
|
created_at TIMESTAMP NOT NULL DEFAULT current_timestamp,
|
|
|
|
confirmed BOOLEAN DEFAULT false
|
2025-01-20 23:49:54 +00:00
|
|
|
);
|
|
|
|
ALTER TABLE arimelody.totp ADD CONSTRAINT totp_pk PRIMARY KEY (account, name);
|
|
|
|
|
2025-01-20 18:54:03 +00:00
|
|
|
-- Foreign keys
|
|
|
|
ALTER TABLE arimelody.privilege ADD CONSTRAINT privilege_account_fk FOREIGN KEY (account) REFERENCES account(id) ON DELETE CASCADE;
|
2025-01-26 23:41:35 +00:00
|
|
|
ALTER TABLE arimelody.session ADD CONSTRAINT session_account_fk FOREIGN KEY (account) REFERENCES account(id) ON DELETE CASCADE;
|
|
|
|
ALTER TABLE arimelody.session ADD CONSTRAINT session_attempt_account_fk FOREIGN KEY (account) REFERENCES account(id) ON DELETE CASCADE;
|
2025-01-20 23:49:54 +00:00
|
|
|
ALTER TABLE arimelody.totp ADD CONSTRAINT totp_account_fk FOREIGN KEY (account) REFERENCES account(id) ON DELETE CASCADE;
|