mirror of
https://github.com/alkimake/paperclip.git
synced 2026-06-17 03:10:38 +09:00
135 lines
7.2 KiB
MySQL
135 lines
7.2 KiB
MySQL
|
|
CREATE TABLE "account" (
|
||
|
|
"id" text PRIMARY KEY NOT NULL,
|
||
|
|
"account_id" text NOT NULL,
|
||
|
|
"provider_id" text NOT NULL,
|
||
|
|
"user_id" text NOT NULL,
|
||
|
|
"access_token" text,
|
||
|
|
"refresh_token" text,
|
||
|
|
"id_token" text,
|
||
|
|
"access_token_expires_at" timestamp with time zone,
|
||
|
|
"refresh_token_expires_at" timestamp with time zone,
|
||
|
|
"scope" text,
|
||
|
|
"password" text,
|
||
|
|
"created_at" timestamp with time zone NOT NULL,
|
||
|
|
"updated_at" timestamp with time zone NOT NULL
|
||
|
|
);
|
||
|
|
--> statement-breakpoint
|
||
|
|
CREATE TABLE "session" (
|
||
|
|
"id" text PRIMARY KEY NOT NULL,
|
||
|
|
"expires_at" timestamp with time zone NOT NULL,
|
||
|
|
"token" text NOT NULL,
|
||
|
|
"created_at" timestamp with time zone NOT NULL,
|
||
|
|
"updated_at" timestamp with time zone NOT NULL,
|
||
|
|
"ip_address" text,
|
||
|
|
"user_agent" text,
|
||
|
|
"user_id" text NOT NULL
|
||
|
|
);
|
||
|
|
--> statement-breakpoint
|
||
|
|
CREATE TABLE "user" (
|
||
|
|
"id" text PRIMARY KEY NOT NULL,
|
||
|
|
"name" text NOT NULL,
|
||
|
|
"email" text NOT NULL,
|
||
|
|
"email_verified" boolean DEFAULT false NOT NULL,
|
||
|
|
"image" text,
|
||
|
|
"created_at" timestamp with time zone NOT NULL,
|
||
|
|
"updated_at" timestamp with time zone NOT NULL
|
||
|
|
);
|
||
|
|
--> statement-breakpoint
|
||
|
|
CREATE TABLE "verification" (
|
||
|
|
"id" text PRIMARY KEY NOT NULL,
|
||
|
|
"identifier" text NOT NULL,
|
||
|
|
"value" text NOT NULL,
|
||
|
|
"expires_at" timestamp with time zone NOT NULL,
|
||
|
|
"created_at" timestamp with time zone,
|
||
|
|
"updated_at" timestamp with time zone
|
||
|
|
);
|
||
|
|
--> statement-breakpoint
|
||
|
|
CREATE TABLE "company_memberships" (
|
||
|
|
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
||
|
|
"company_id" uuid NOT NULL,
|
||
|
|
"principal_type" text NOT NULL,
|
||
|
|
"principal_id" text NOT NULL,
|
||
|
|
"status" text DEFAULT 'active' NOT NULL,
|
||
|
|
"membership_role" text,
|
||
|
|
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
||
|
|
"updated_at" timestamp with time zone DEFAULT now() NOT NULL
|
||
|
|
);
|
||
|
|
--> statement-breakpoint
|
||
|
|
CREATE TABLE "instance_user_roles" (
|
||
|
|
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
||
|
|
"user_id" text NOT NULL,
|
||
|
|
"role" text DEFAULT 'instance_admin' NOT NULL,
|
||
|
|
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
||
|
|
"updated_at" timestamp with time zone DEFAULT now() NOT NULL
|
||
|
|
);
|
||
|
|
--> statement-breakpoint
|
||
|
|
CREATE TABLE "invites" (
|
||
|
|
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
||
|
|
"company_id" uuid,
|
||
|
|
"invite_type" text DEFAULT 'company_join' NOT NULL,
|
||
|
|
"token_hash" text NOT NULL,
|
||
|
|
"allowed_join_types" text DEFAULT 'both' NOT NULL,
|
||
|
|
"defaults_payload" jsonb,
|
||
|
|
"expires_at" timestamp with time zone NOT NULL,
|
||
|
|
"invited_by_user_id" text,
|
||
|
|
"revoked_at" timestamp with time zone,
|
||
|
|
"accepted_at" timestamp with time zone,
|
||
|
|
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
||
|
|
"updated_at" timestamp with time zone DEFAULT now() NOT NULL
|
||
|
|
);
|
||
|
|
--> statement-breakpoint
|
||
|
|
CREATE TABLE "join_requests" (
|
||
|
|
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
||
|
|
"invite_id" uuid NOT NULL,
|
||
|
|
"company_id" uuid NOT NULL,
|
||
|
|
"request_type" text NOT NULL,
|
||
|
|
"status" text DEFAULT 'pending_approval' NOT NULL,
|
||
|
|
"request_ip" text NOT NULL,
|
||
|
|
"requesting_user_id" text,
|
||
|
|
"request_email_snapshot" text,
|
||
|
|
"agent_name" text,
|
||
|
|
"adapter_type" text,
|
||
|
|
"capabilities" text,
|
||
|
|
"agent_defaults_payload" jsonb,
|
||
|
|
"created_agent_id" uuid,
|
||
|
|
"approved_by_user_id" text,
|
||
|
|
"approved_at" timestamp with time zone,
|
||
|
|
"rejected_by_user_id" text,
|
||
|
|
"rejected_at" timestamp with time zone,
|
||
|
|
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
||
|
|
"updated_at" timestamp with time zone DEFAULT now() NOT NULL
|
||
|
|
);
|
||
|
|
--> statement-breakpoint
|
||
|
|
CREATE TABLE "principal_permission_grants" (
|
||
|
|
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
||
|
|
"company_id" uuid NOT NULL,
|
||
|
|
"principal_type" text NOT NULL,
|
||
|
|
"principal_id" text NOT NULL,
|
||
|
|
"permission_key" text NOT NULL,
|
||
|
|
"scope" jsonb,
|
||
|
|
"granted_by_user_id" text,
|
||
|
|
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
||
|
|
"updated_at" timestamp with time zone DEFAULT now() NOT NULL
|
||
|
|
);
|
||
|
|
--> statement-breakpoint
|
||
|
|
ALTER TABLE "issues" ADD COLUMN "assignee_user_id" text;--> statement-breakpoint
|
||
|
|
ALTER TABLE "account" ADD CONSTRAINT "account_user_id_user_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."user"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
||
|
|
ALTER TABLE "session" ADD CONSTRAINT "session_user_id_user_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."user"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
||
|
|
ALTER TABLE "company_memberships" ADD CONSTRAINT "company_memberships_company_id_companies_id_fk" FOREIGN KEY ("company_id") REFERENCES "public"."companies"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
|
||
|
|
ALTER TABLE "invites" ADD CONSTRAINT "invites_company_id_companies_id_fk" FOREIGN KEY ("company_id") REFERENCES "public"."companies"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
|
||
|
|
ALTER TABLE "join_requests" ADD CONSTRAINT "join_requests_invite_id_invites_id_fk" FOREIGN KEY ("invite_id") REFERENCES "public"."invites"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
|
||
|
|
ALTER TABLE "join_requests" ADD CONSTRAINT "join_requests_company_id_companies_id_fk" FOREIGN KEY ("company_id") REFERENCES "public"."companies"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
|
||
|
|
ALTER TABLE "join_requests" ADD CONSTRAINT "join_requests_created_agent_id_agents_id_fk" FOREIGN KEY ("created_agent_id") REFERENCES "public"."agents"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
|
||
|
|
ALTER TABLE "principal_permission_grants" ADD CONSTRAINT "principal_permission_grants_company_id_companies_id_fk" FOREIGN KEY ("company_id") REFERENCES "public"."companies"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
|
||
|
|
CREATE UNIQUE INDEX "company_memberships_company_principal_unique_idx" ON "company_memberships" USING btree ("company_id","principal_type","principal_id");--> statement-breakpoint
|
||
|
|
CREATE INDEX "company_memberships_principal_status_idx" ON "company_memberships" USING btree ("principal_type","principal_id","status");--> statement-breakpoint
|
||
|
|
CREATE INDEX "company_memberships_company_status_idx" ON "company_memberships" USING btree ("company_id","status");--> statement-breakpoint
|
||
|
|
CREATE UNIQUE INDEX "instance_user_roles_user_role_unique_idx" ON "instance_user_roles" USING btree ("user_id","role");--> statement-breakpoint
|
||
|
|
CREATE INDEX "instance_user_roles_role_idx" ON "instance_user_roles" USING btree ("role");--> statement-breakpoint
|
||
|
|
CREATE UNIQUE INDEX "invites_token_hash_unique_idx" ON "invites" USING btree ("token_hash");--> statement-breakpoint
|
||
|
|
CREATE INDEX "invites_company_invite_state_idx" ON "invites" USING btree ("company_id","invite_type","revoked_at","expires_at");--> statement-breakpoint
|
||
|
|
CREATE UNIQUE INDEX "join_requests_invite_unique_idx" ON "join_requests" USING btree ("invite_id");--> statement-breakpoint
|
||
|
|
CREATE INDEX "join_requests_company_status_type_created_idx" ON "join_requests" USING btree ("company_id","status","request_type","created_at");--> statement-breakpoint
|
||
|
|
CREATE UNIQUE INDEX "principal_permission_grants_unique_idx" ON "principal_permission_grants" USING btree ("company_id","principal_type","principal_id","permission_key");--> statement-breakpoint
|
||
|
|
CREATE INDEX "principal_permission_grants_company_permission_idx" ON "principal_permission_grants" USING btree ("company_id","permission_key");--> statement-breakpoint
|
||
|
|
CREATE INDEX "issues_company_assignee_user_status_idx" ON "issues" USING btree ("company_id","assignee_user_id","status");
|