text: 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");
  
  