-- CreateTable CREATE TABLE "accounts" ( "id" TEXT NOT NULL, "user_id" TEXT NOT NULL, "type" TEXT NOT NULL, "provider" TEXT NOT NULL, "provider_account_id" TEXT NOT NULL, "refresh_token" TEXT, "access_token" TEXT, "expires_at" INTEGER, "token_type" TEXT, "scope" TEXT, "id_token" TEXT, "session_state" TEXT, "refresh_token_expires_in" INTEGER, CONSTRAINT "accounts_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "sessions" ( "id" TEXT NOT NULL, "session_token" TEXT NOT NULL, "user_id" TEXT NOT NULL, "expires" TIMESTAMP(3) NOT NULL, CONSTRAINT "sessions_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "users" ( "id" TEXT NOT NULL, "name" TEXT, "email" TEXT, "email_verified" TIMESTAMP(3), "image" TEXT, CONSTRAINT "users_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "verificationtokens" ( "identifier" TEXT NOT NULL, "token" TEXT NOT NULL, "expires" TIMESTAMP(3) NOT NULL ); -- CreateTable CREATE TABLE "Subscription" ( "id" SERIAL NOT NULL, "lemon_squeezy_id" INTEGER NOT NULL, "order_id" INTEGER NOT NULL, "name" TEXT NOT NULL, "email" TEXT NOT NULL, "status" TEXT NOT NULL, "renews_at" TIMESTAMP(3), "ends_at" TIMESTAMP(3), "trial_ends_at" TIMESTAMP(3), "resumes_at" TIMESTAMP(3), "price" INTEGER NOT NULL, "plan_id" INTEGER NOT NULL, "user_id" TEXT NOT NULL, "is_usage_based" BOOLEAN NOT NULL DEFAULT false, "subscription_item_id" INTEGER, CONSTRAINT "Subscription_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "Plan" ( "id" SERIAL NOT NULL, "product_id" INTEGER NOT NULL, "variant_id" INTEGER NOT NULL, "name" TEXT, "description" TEXT, "variant_name" TEXT NOT NULL, "sort" INTEGER NOT NULL, "status" TEXT NOT NULL, "price" INTEGER NOT NULL, "interval" TEXT NOT NULL, "interval_count" INTEGER NOT NULL DEFAULT 1, CONSTRAINT "Plan_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "WebhookEvent" ( "id" SERIAL NOT NULL, "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "event_name" TEXT NOT NULL, "processed" BOOLEAN NOT NULL DEFAULT false, "body" JSONB NOT NULL, "processing_error" TEXT, CONSTRAINT "WebhookEvent_pkey" PRIMARY KEY ("id") ); -- CreateIndex CREATE UNIQUE INDEX "accounts_provider_provider_account_id_key" ON "accounts"("provider", "provider_account_id"); -- CreateIndex CREATE UNIQUE INDEX "sessions_session_token_key" ON "sessions"("session_token"); -- CreateIndex CREATE UNIQUE INDEX "users_email_key" ON "users"("email"); -- CreateIndex CREATE UNIQUE INDEX "verificationtokens_token_key" ON "verificationtokens"("token"); -- CreateIndex CREATE UNIQUE INDEX "verificationtokens_identifier_token_key" ON "verificationtokens"("identifier", "token"); -- CreateIndex CREATE UNIQUE INDEX "Subscription_lemon_squeezy_id_key" ON "Subscription"("lemon_squeezy_id"); -- CreateIndex CREATE UNIQUE INDEX "Subscription_order_id_key" ON "Subscription"("order_id"); -- CreateIndex CREATE UNIQUE INDEX "Subscription_subscription_item_id_key" ON "Subscription"("subscription_item_id"); -- CreateIndex CREATE INDEX "Subscription_plan_id_lemon_squeezy_id_idx" ON "Subscription"("plan_id", "lemon_squeezy_id"); -- CreateIndex CREATE UNIQUE INDEX "Plan_variant_id_key" ON "Plan"("variant_id"); -- AddForeignKey ALTER TABLE "accounts" ADD CONSTRAINT "accounts_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "sessions" ADD CONSTRAINT "sessions_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "Subscription" ADD CONSTRAINT "Subscription_plan_id_fkey" FOREIGN KEY ("plan_id") REFERENCES "Plan"("id") ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "Subscription" ADD CONSTRAINT "Subscription_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;