CREATE TABLE "managed_account_shares" (
	"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
	"module" varchar(32) NOT NULL,
	"source_owner_id" uuid NOT NULL,
	"source_account_id" varchar(200) NOT NULL,
	"grantee_id" uuid NOT NULL,
	"created_by" uuid,
	"created_at" timestamp with time zone DEFAULT now() NOT NULL,
	"updated_at" timestamp with time zone DEFAULT now() NOT NULL
);
--> statement-breakpoint
ALTER TABLE "managed_account_shares" ADD CONSTRAINT "managed_account_shares_source_owner_id_users_id_fk" FOREIGN KEY ("source_owner_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
ALTER TABLE "managed_account_shares" ADD CONSTRAINT "managed_account_shares_grantee_id_users_id_fk" FOREIGN KEY ("grantee_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
ALTER TABLE "managed_account_shares" ADD CONSTRAINT "managed_account_shares_created_by_users_id_fk" FOREIGN KEY ("created_by") REFERENCES "public"."users"("id") ON DELETE set null ON UPDATE no action;--> statement-breakpoint
CREATE UNIQUE INDEX "managed_account_shares_unique" ON "managed_account_shares" USING btree ("module","source_owner_id","source_account_id","grantee_id");--> statement-breakpoint
CREATE INDEX "managed_account_shares_grantee_module_idx" ON "managed_account_shares" USING btree ("grantee_id","module");--> statement-breakpoint
CREATE INDEX "managed_account_shares_source_idx" ON "managed_account_shares" USING btree ("source_owner_id","module");