CREATE TABLE IF NOT EXISTS "Subscription" ( "userId" uuid PRIMARY KEY NOT NULL, "tier" varchar DEFAULT 'free' NOT NULL, "status" varchar DEFAULT 'active' NOT NULL, "stripeCustomerId" text, "stripeSubscriptionId" text, "currentPeriodEnd" timestamp, "createdAt" timestamp DEFAULT now() NOT NULL, "updatedAt" timestamp DEFAULT now() NOT NULL ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "Usage" ( "userId" uuid NOT NULL, "periodKey" varchar(10) NOT NULL, "messageCount" integer DEFAULT 0 NOT NULL, "toolCallCount" integer DEFAULT 0 NOT NULL, "updatedAt" timestamp DEFAULT now() NOT NULL, CONSTRAINT "Usage_userId_periodKey_pk" PRIMARY KEY("userId","periodKey") ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "WebhookEvent" ( "id" text PRIMARY KEY NOT NULL, "type" text NOT NULL, "receivedAt" timestamp DEFAULT now() NOT NULL ); --> statement-breakpoint DO $$ BEGIN ALTER TABLE "Subscription" ADD CONSTRAINT "Subscription_userId_User_id_fk" FOREIGN KEY ("userId") REFERENCES "public"."User"("id") ON DELETE no action ON UPDATE no action; EXCEPTION WHEN duplicate_object THEN null; END $$; --> statement-breakpoint DO $$ BEGIN ALTER TABLE "Usage" ADD CONSTRAINT "Usage_userId_User_id_fk" FOREIGN KEY ("userId") REFERENCES "public"."User"("id") ON DELETE no action ON UPDATE no action; EXCEPTION WHEN duplicate_object THEN null; END $$;