CREATE TABLE "jwks" ( "id" uuid PRIMARY KEY, "public_key" text NOT NULL, "private_key" text NOT NULL, "created_at" timestamp with time zone DEFAULT now() NOT NULL, "expires_at" timestamp with time zone ); --> statement-breakpoint CREATE TABLE "oauth_access_token" ( "id" uuid PRIMARY KEY, "token" text NOT NULL UNIQUE, "client_id" text NOT NULL, "session_id" uuid, "user_id" uuid, "reference_id" text, "refresh_id" uuid, "expires_at" timestamp with time zone, "created_at" timestamp with time zone DEFAULT now(), "scopes" text[] NOT NULL ); --> statement-breakpoint CREATE TABLE "oauth_client" ( "id" uuid PRIMARY KEY, "client_id" text NOT NULL UNIQUE, "client_secret" text, "disabled" boolean DEFAULT false, "skip_consent" boolean, "enable_end_session" boolean, "subject_type" text, "scopes" text[], "user_id" uuid, "created_at" timestamp with time zone DEFAULT now(), "updated_at" timestamp with time zone DEFAULT now(), "name" text, "uri" text, "icon" text, "contacts" text[], "tos" text, "policy" text, "software_id" text, "software_version" text, "software_statement" text, "redirect_uris" text[] NOT NULL, "post_logout_redirect_uris" text[], "token_endpoint_auth_method" text, "grant_types" text[], "response_types" text[], "public" boolean, "type" text, "require_pkce" boolean, "reference_id" text, "metadata" jsonb ); --> statement-breakpoint CREATE TABLE "oauth_consent" ( "id" uuid PRIMARY KEY, "client_id" text NOT NULL, "user_id" uuid, "reference_id" text, "scopes" text[] NOT NULL, "created_at" timestamp with time zone DEFAULT now(), "updated_at" timestamp with time zone DEFAULT now() ); --> statement-breakpoint CREATE TABLE "oauth_refresh_token" ( "id" uuid PRIMARY KEY, "token" text NOT NULL, "client_id" text NOT NULL, "session_id" uuid, "user_id" uuid NOT NULL, "reference_id" text, "expires_at" timestamp with time zone, "created_at" timestamp with time zone DEFAULT now(), "revoked" timestamp with time zone, "auth_time" timestamp with time zone, "scopes" text[] NOT NULL ); --> statement-breakpoint CREATE INDEX "oauth_access_token_token_index" ON "oauth_access_token" ("token");--> statement-breakpoint CREATE INDEX "oauth_client_client_id_index" ON "oauth_client" ("client_id");--> statement-breakpoint CREATE INDEX "oauth_consent_user_id_client_id_index" ON "oauth_consent" ("user_id","client_id");--> statement-breakpoint CREATE INDEX "oauth_refresh_token_token_index" ON "oauth_refresh_token" ("token");--> statement-breakpoint ALTER TABLE "oauth_access_token" ADD CONSTRAINT "oauth_access_token_client_id_oauth_client_client_id_fkey" FOREIGN KEY ("client_id") REFERENCES "oauth_client"("client_id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "oauth_access_token" ADD CONSTRAINT "oauth_access_token_session_id_session_id_fkey" FOREIGN KEY ("session_id") REFERENCES "session"("id") ON DELETE SET NULL;--> statement-breakpoint ALTER TABLE "oauth_access_token" ADD CONSTRAINT "oauth_access_token_user_id_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "user"("id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "oauth_access_token" ADD CONSTRAINT "oauth_access_token_refresh_id_oauth_refresh_token_id_fkey" FOREIGN KEY ("refresh_id") REFERENCES "oauth_refresh_token"("id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "oauth_client" ADD CONSTRAINT "oauth_client_user_id_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "user"("id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "oauth_consent" ADD CONSTRAINT "oauth_consent_client_id_oauth_client_client_id_fkey" FOREIGN KEY ("client_id") REFERENCES "oauth_client"("client_id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "oauth_consent" ADD CONSTRAINT "oauth_consent_user_id_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "user"("id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "oauth_refresh_token" ADD CONSTRAINT "oauth_refresh_token_client_id_oauth_client_client_id_fkey" FOREIGN KEY ("client_id") REFERENCES "oauth_client"("client_id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "oauth_refresh_token" ADD CONSTRAINT "oauth_refresh_token_session_id_session_id_fkey" FOREIGN KEY ("session_id") REFERENCES "session"("id") ON DELETE SET NULL;--> statement-breakpoint ALTER TABLE "oauth_refresh_token" ADD CONSTRAINT "oauth_refresh_token_user_id_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "user"("id") ON DELETE CASCADE;