96 lines
4.4 KiB
SQL
96 lines
4.4 KiB
SQL
CREATE TABLE "account" (
|
|
"id" text PRIMARY KEY NOT NULL,
|
|
"accountId" text NOT NULL,
|
|
"providerId" text NOT NULL,
|
|
"userId" text NOT NULL,
|
|
"accessToken" text,
|
|
"refreshToken" text,
|
|
"idToken" text,
|
|
"accessTokenExpiresAt" timestamp with time zone,
|
|
"refreshTokenExpiresAt" timestamp with time zone,
|
|
"scope" text,
|
|
"password" text,
|
|
"createdAt" timestamp with time zone NOT NULL,
|
|
"updatedAt" timestamp with time zone NOT NULL
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE "invitation" (
|
|
"id" text PRIMARY KEY NOT NULL,
|
|
"organizationId" text NOT NULL,
|
|
"email" text NOT NULL,
|
|
"role" text,
|
|
"status" text DEFAULT 'pending' NOT NULL,
|
|
"expiresAt" timestamp with time zone NOT NULL,
|
|
"createdAt" timestamp with time zone NOT NULL,
|
|
"inviterId" text NOT NULL
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE "member" (
|
|
"id" text PRIMARY KEY NOT NULL,
|
|
"organizationId" text NOT NULL,
|
|
"userId" text NOT NULL,
|
|
"role" text DEFAULT 'member' NOT NULL,
|
|
"createdAt" timestamp with time zone NOT NULL
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE "organization" (
|
|
"id" text PRIMARY KEY NOT NULL,
|
|
"name" text NOT NULL,
|
|
"slug" text NOT NULL,
|
|
"logo" text,
|
|
"createdAt" timestamp with time zone NOT NULL,
|
|
"metadata" text
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE "session" (
|
|
"id" text PRIMARY KEY NOT NULL,
|
|
"expiresAt" timestamp with time zone NOT NULL,
|
|
"token" text NOT NULL,
|
|
"createdAt" timestamp with time zone NOT NULL,
|
|
"updatedAt" timestamp with time zone NOT NULL,
|
|
"ipAddress" text,
|
|
"userAgent" text,
|
|
"userId" text NOT NULL,
|
|
"impersonatedBy" text,
|
|
"activeOrganizationId" text
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE "user" (
|
|
"id" text PRIMARY KEY NOT NULL,
|
|
"name" text NOT NULL,
|
|
"email" text NOT NULL,
|
|
"emailVerified" boolean DEFAULT false NOT NULL,
|
|
"image" text,
|
|
"createdAt" timestamp with time zone NOT NULL,
|
|
"updatedAt" timestamp with time zone NOT NULL,
|
|
"role" text,
|
|
"banned" boolean DEFAULT false,
|
|
"banReason" text,
|
|
"banExpires" timestamp with time zone
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE "verification" (
|
|
"id" text PRIMARY KEY NOT NULL,
|
|
"identifier" text NOT NULL,
|
|
"value" text NOT NULL,
|
|
"expiresAt" timestamp with time zone NOT NULL,
|
|
"createdAt" timestamp with time zone NOT NULL,
|
|
"updatedAt" timestamp with time zone NOT NULL
|
|
);
|
|
--> statement-breakpoint
|
|
ALTER TABLE "account" ADD CONSTRAINT "account_userId_user_id_fk" FOREIGN KEY ("userId") REFERENCES "public"."user"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
ALTER TABLE "invitation" ADD CONSTRAINT "invitation_organizationId_organization_id_fk" FOREIGN KEY ("organizationId") REFERENCES "public"."organization"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
ALTER TABLE "invitation" ADD CONSTRAINT "invitation_inviterId_user_id_fk" FOREIGN KEY ("inviterId") REFERENCES "public"."user"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
ALTER TABLE "member" ADD CONSTRAINT "member_organizationId_organization_id_fk" FOREIGN KEY ("organizationId") REFERENCES "public"."organization"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
ALTER TABLE "member" ADD CONSTRAINT "member_userId_user_id_fk" FOREIGN KEY ("userId") REFERENCES "public"."user"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
ALTER TABLE "session" ADD CONSTRAINT "session_userId_user_id_fk" FOREIGN KEY ("userId") REFERENCES "public"."user"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
CREATE INDEX "account_userId_idx" ON "account" USING btree ("userId");--> statement-breakpoint
|
|
CREATE INDEX "invitation_organizationId_idx" ON "invitation" USING btree ("organizationId");--> statement-breakpoint
|
|
CREATE INDEX "invitation_email_idx" ON "invitation" USING btree ("email");--> statement-breakpoint
|
|
CREATE INDEX "member_organizationId_idx" ON "member" USING btree ("organizationId");--> statement-breakpoint
|
|
CREATE INDEX "member_userId_idx" ON "member" USING btree ("userId");--> statement-breakpoint
|
|
CREATE UNIQUE INDEX "organization_slug_uidx" ON "organization" USING btree ("slug");--> statement-breakpoint
|
|
CREATE UNIQUE INDEX "session_token_uidx" ON "session" USING btree ("token");--> statement-breakpoint
|
|
CREATE INDEX "session_userId_idx" ON "session" USING btree ("userId");--> statement-breakpoint
|
|
CREATE UNIQUE INDEX "user_email_uidx" ON "user" USING btree ("email");--> statement-breakpoint
|
|
CREATE INDEX "verification_identifier_idx" ON "verification" USING btree ("identifier"); |