nom-nom-nix-gc/migrations/V1__init.sql
Félix Baylac Jacqué 0920bf7adb
All checks were successful
Build nomnom / Build-NomNom (push) Successful in 3m38s
Models: add basic binarycache/project/token machinery
2023-11-29 12:10:04 +01:00

52 lines
1.3 KiB
SQL

CREATE TABLE Users (
id UUID PRIMARY KEY NOT NULL,
user_name text NOT NULL
);
CREATE TABLE Keys (
id SERIAL PRIMARY KEY NOT NULL,
name text NOT NULL,
key_dump jsonb NOT NULL,
user_id UUID NOT NULL,
CONSTRAINT fk_user FOREIGN KEY (user_id) REFERENCES Users(id)
);
CREATE TABLE PendingRegistrations (
id uuid PRIMARY KEY NOT NULL,
user_id UUID NOT NULL,
CONSTRAINT fk_user FOREIGN KEY (user_id) REFERENCES Users(id)
);
CREATE TABLE BinaryCaches (
id SERIAL PRIMARY KEY NOT NULL,
name text NOT NULL,
access_key text NOT NULL,
secret_key text NOT NULL,
region text NOT NULL
);
CREATE TABLE Projects (
id SERIAL PRIMARY KEY NOT NULL,
name text NOT NULL UNIQUE,
binary_cache_id integer NOT NULL,
-- TODO: figure out rules
CONSTRAINT fk_project_binary_cache FOREIGN KEY (binary_cache_id) REFERENCES BinaryCaches(id)
);
CREATE TABLE ProjectTokens (
id SERIAL PRIMARY KEY NOT NULL,
token UUID NOT NULL,
project_id integer NOT NULL,
CONSTRAINT fk_project_project_token FOREIGN KEY (project_id) REFERENCES Projects(id)
);
CREATE TABLE Closures (
id SERIAL PRIMARY KEY NOT NULL,
project_id integer NOT NULL,
objects text[] NOT NULL,
CONSTRAINT fk_project_closure FOREIGN KEY (project_id) REFERENCES Projects(id)
);
-- We'll mostly querying the Keys using the associated uid.
CREATE INDEX idx_keys_uid ON Keys USING HASH (user_id);