You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Koito/db/migrations/old/20250606_users_and_source_t...

53 lines
1.1 KiB

-- +goose Up
-- +goose StatementBegin
CREATE TYPE role AS ENUM ('admin', 'user');
CREATE TABLE IF NOT EXISTS users (
id INT NOT NULL GENERATED ALWAYS AS IDENTITY,
PRIMARY KEY(id),
username TEXT NOT NULL UNIQUE,
password TEXT NOT NULL,
role role NOT NULL DEFAULT 'user'
);
CREATE TABLE IF NOT EXISTS api_keys (
id INT NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
key TEXT NOT NULL UNIQUE,
user_id INT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
label TEXT
);
CREATE TABLE IF NOT EXISTS release_aliases (
release_id INT NOT NULL REFERENCES releases(id) ON DELETE CASCADE,
alias TEXT NOT NULL,
PRIMARY KEY (release_id, alias),
source TEXT NOT NULL
);
ALTER TABLE listens
ADD user_id INT NOT NULL REFERENCES users(id);
ALTER TABLE listens
ADD client TEXT;
-- +goose StatementEnd
-- +goose Down
-- +goose StatementBegin
ALTER TABLE listens
DROP COLUMN client;
ALTER TABLE listens
DROP COLUMN user_id;
DROP TABLE IF EXISTS release_aliases;
DROP TABLE IF EXISTS api_keys;
DROP TABLE IF EXISTS users;
DROP TYPE IF EXISTS role;
-- +goose StatementEnd