mirror of
https://github.com/BillyOutlast/stash-box.git
synced 2026-02-04 11:01:17 +01:00
* Add user * Generate root user * Add create/update validation * Disallow removing root user * Fix packr deprecation message * Change authorisation to user apikey * Return error message when apikey fails * Add integration tests for unauthorised calls * Ignore .vscode * Add gitattributes to fix UI eol lint issue * Misc changes * Prevent caching of integration test results * Disallow changing root name or roles * Remove old api key config * Ensure api key matches stored key * Add session management * Fix empty key detection code * Allow users to query users, hiding some info * Add regenerate api key and change password
168 lines
5.0 KiB
SQL
168 lines
5.0 KiB
SQL
CREATE TABLE "performers" (
|
|
"id" uuid not null primary key,
|
|
"name" varchar(255) not null,
|
|
"disambiguation" varchar(255),
|
|
"gender" varchar(20),
|
|
"birthdate" date,
|
|
"birthdate_accuracy" varchar(10),
|
|
"ethnicity" varchar(20),
|
|
"country" varchar(255),
|
|
"eye_color" varchar(10),
|
|
"hair_color" varchar(10),
|
|
"height" integer,
|
|
"cup_size" varchar(5),
|
|
"band_size" integer,
|
|
"hip_size" integer,
|
|
"waist_size" integer,
|
|
"breast_type" varchar(10),
|
|
"career_start_year" integer,
|
|
"career_end_year" integer,
|
|
"created_at" timestamp not null,
|
|
"updated_at" timestamp not null
|
|
);
|
|
|
|
CREATE TABLE "performer_aliases" (
|
|
"performer_id" uuid not null,
|
|
"alias" varchar(255) not null,
|
|
foreign key("performer_id") references "performers"("id") ON DELETE CASCADE,
|
|
unique ("performer_id", "alias")
|
|
);
|
|
|
|
CREATE TABLE "performer_urls" (
|
|
"performer_id" uuid not null,
|
|
"url" varchar not null,
|
|
"type" varchar(255) not null,
|
|
foreign key("performer_id") references "performers"("id") ON DELETE CASCADE,
|
|
unique ("performer_id", "url"),
|
|
unique ("performer_id", "type")
|
|
);
|
|
|
|
CREATE TABLE "performer_piercings" (
|
|
"performer_id" uuid not null,
|
|
"location" varchar(255),
|
|
"description" varchar(255),
|
|
foreign key("performer_id") references "performers"("id") ON DELETE CASCADE,
|
|
unique ("performer_id", "location")
|
|
);
|
|
|
|
CREATE TABLE "performer_tattoos" (
|
|
"performer_id" uuid not null,
|
|
"location" varchar(255),
|
|
"description" varchar(255),
|
|
foreign key("performer_id") references "performers"("id") ON DELETE CASCADE,
|
|
unique ("performer_id", "location")
|
|
);
|
|
|
|
CREATE INDEX "index_performers_on_name" on "performers" ("name");
|
|
CREATE INDEX "index_performers_on_alias" on "performer_aliases" ("alias");
|
|
CREATE INDEX "index_performers_on_piercing_location" on "performer_piercings" ("location");
|
|
CREATE INDEX "index_performers_on_tattoo_location" on "performer_tattoos" ("location");
|
|
CREATE INDEX "index_performers_on_tattoo_description" on "performer_tattoos" ("description");
|
|
|
|
CREATE TABLE "tags" (
|
|
"id" uuid not null primary key,
|
|
"name" varchar(255) not null,
|
|
"description" varchar(255),
|
|
"created_at" timestamp not null,
|
|
"updated_at" timestamp not null,
|
|
unique ("name")
|
|
);
|
|
|
|
CREATE TABLE "tag_aliases" (
|
|
"tag_id" uuid not null,
|
|
"alias" varchar(255) not null,
|
|
foreign key("tag_id") references "tags"("id") ON DELETE CASCADE,
|
|
unique ("alias")
|
|
);
|
|
|
|
CREATE TABLE "studios" (
|
|
"id" uuid not null primary key,
|
|
"name" varchar(255) not null,
|
|
"parent_studio_id" uuid,
|
|
"created_at" timestamp not null,
|
|
"updated_at" timestamp not null,
|
|
foreign key("parent_studio_id") references "studios"("id") ON DELETE CASCADE
|
|
);
|
|
|
|
CREATE TABLE "studio_urls" (
|
|
"studio_id" uuid not null,
|
|
"url" varchar not null,
|
|
"type" varchar(255) not null,
|
|
foreign key("studio_id") references "studios"("id") ON DELETE CASCADE,
|
|
unique ("studio_id", "url"),
|
|
unique ("studio_id", "type")
|
|
);
|
|
|
|
CREATE TABLE "scenes" (
|
|
"id" uuid not null primary key,
|
|
"title" varchar(255),
|
|
"details" text,
|
|
"date" date,
|
|
"studio_id" uuid,
|
|
"created_at" timestamp not null,
|
|
"updated_at" timestamp not null,
|
|
foreign key("studio_id") references "studios"("id") ON DELETE SET NULL
|
|
);
|
|
|
|
CREATE TABLE "scene_urls" (
|
|
"scene_id" uuid not null,
|
|
"url" varchar not null,
|
|
"type" varchar(255) not null,
|
|
foreign key("scene_id") references "scenes"("id") ON DELETE CASCADE,
|
|
unique ("scene_id", "url"),
|
|
unique ("scene_id", "type")
|
|
);
|
|
|
|
CREATE TABLE "scene_fingerprints" (
|
|
"scene_id" uuid not null,
|
|
"hash" varchar(255) not null,
|
|
"algorithm" varchar(20) not null,
|
|
foreign key("scene_id") references "scenes"("id") ON DELETE CASCADE,
|
|
unique ("scene_id", "algorithm", "hash")
|
|
);
|
|
|
|
CREATE INDEX "index_scene_fingerprints_on_hash" on "scene_fingerprints" ("algorithm", "hash");
|
|
|
|
CREATE TABLE "scene_performers" (
|
|
"scene_id" uuid not null,
|
|
"as" varchar(255),
|
|
"performer_id" uuid not null,
|
|
foreign key("scene_id") references "scenes"("id") ON DELETE CASCADE,
|
|
foreign key("performer_id") references "performers"("id") ON DELETE CASCADE,
|
|
unique("scene_id", "performer_id")
|
|
);
|
|
|
|
CREATE TABLE "scene_tags" (
|
|
"scene_id" uuid not null,
|
|
"tag_id" uuid not null,
|
|
foreign key("scene_id") references "scenes"("id") ON DELETE CASCADE,
|
|
foreign key("tag_id") references "tags"("id") ON DELETE CASCADE,
|
|
unique("scene_id", "tag_id")
|
|
);
|
|
|
|
CREATE TABLE "users" (
|
|
"id" uuid not null primary key,
|
|
"name" varchar(255) not null,
|
|
"password_hash" varchar(60) not null,
|
|
"email" varchar(255) not null,
|
|
"api_key" varchar(255) not null,
|
|
"api_calls" integer default 0,
|
|
"last_api_call" timestamp not null,
|
|
"created_at" timestamp not null,
|
|
"updated_at" timestamp not null,
|
|
unique ("name"),
|
|
unique ("email")
|
|
);
|
|
|
|
CREATE TABLE "user_roles" (
|
|
"user_id" uuid not null,
|
|
"role" varchar(10) not null,
|
|
foreign key("user_id") references "users"("id") ON DELETE CASCADE,
|
|
unique ("user_id", "role")
|
|
);
|
|
|
|
CREATE INDEX "index_users_on_name" on "users" ("name");
|
|
CREATE INDEX "index_users_on_email" on "users" ("email");
|
|
CREATE INDEX "index_users_on_api_key" on "users" ("api_key");
|
|
|