-- Create "users" table
CREATE TABLE "public"."users" (
  "id" uuid NOT NULL,
  "first_name" text NOT NULL,
  "last_name" text NOT NULL,
  "display_name" text NOT NULL,
  "email" text NOT NULL,
  "created_at" timestamptz NOT NULL DEFAULT now(),
  "updated_at" timestamptz NULL DEFAULT now(),
  "deleted_at" timestamptz NULL,
  PRIMARY KEY ("id"),
  CONSTRAINT "users_email_unique" UNIQUE ("email")
);
-- Create "accounts" table
CREATE TABLE "public"."accounts" (
  "id" uuid NOT NULL,
  "user_id" uuid NOT NULL,
  "password" text NULL,
  "access_token" text NULL,
  "refresh_token" text NULL,
  "scope" text NULL,
  "meta" jsonb NULL,
  "created_at" timestamptz NOT NULL DEFAULT now(),
  "updated_at" timestamptz NULL DEFAULT now(),
  "deleted_at" timestamptz NULL,
  PRIMARY KEY ("id"),
  CONSTRAINT "accounts_user_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users" ("id") ON UPDATE CASCADE ON DELETE CASCADE
);
-- Create index "accounts_user_id_idx" to table: "accounts"
CREATE INDEX "accounts_user_id_idx" ON "public"."accounts" ("user_id");
-- Create "roles" table
CREATE TABLE "public"."roles" (
  "id" uuid NOT NULL,
  "name" text NOT NULL,
  "description" text NULL,
  "created_at" timestamptz NOT NULL DEFAULT now(),
  "updated_at" timestamptz NULL DEFAULT now(),
  "deleted_at" timestamptz NULL,
  PRIMARY KEY ("id"),
  CONSTRAINT "roles_name_unique" UNIQUE ("name")
);
-- Create "user_roles" table
CREATE TABLE "public"."user_roles" (
  "id" uuid NOT NULL,
  "user_id" uuid NOT NULL,
  "role_id" uuid NOT NULL,
  "created_at" timestamptz NOT NULL DEFAULT now(),
  "updated_at" timestamptz NULL DEFAULT now(),
  "deleted_at" timestamptz NULL,
  PRIMARY KEY ("id"),
  CONSTRAINT "user_roles_role_id_fk" FOREIGN KEY ("role_id") REFERENCES "public"."roles" ("id") ON UPDATE CASCADE ON DELETE CASCADE,
  CONSTRAINT "user_roles_user_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users" ("id") ON UPDATE CASCADE ON DELETE CASCADE
);
-- Create index "user_roles_role_id_idx" to table: "user_roles"
CREATE INDEX "user_roles_role_id_idx" ON "public"."user_roles" ("role_id");
-- Create index "user_roles_user_id_idx" to table: "user_roles"
CREATE INDEX "user_roles_user_id_idx" ON "public"."user_roles" ("user_id");
