-- CreateTable CREATE TABLE "users" ( "id" TEXT NOT NULL, "email" TEXT NOT NULL, "password_hash" TEXT NOT NULL, "currency" TEXT NOT NULL DEFAULT 'USD', "balance_cents" BIGINT NOT NULL DEFAULT 0, "status" TEXT NOT NULL DEFAULT 'active', "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updated_at" TIMESTAMP(3) NOT NULL, CONSTRAINT "users_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "api_keys" ( "id" TEXT NOT NULL, "user_id" TEXT NOT NULL, "name" TEXT NOT NULL, "key_hash" TEXT NOT NULL, "prefix" TEXT NOT NULL, "last_used_at" TIMESTAMP(3), "status" TEXT NOT NULL DEFAULT 'active', "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updated_at" TIMESTAMP(3) NOT NULL, CONSTRAINT "api_keys_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "balance_transactions" ( "id" TEXT NOT NULL, "user_id" TEXT NOT NULL, "amount_cents" BIGINT NOT NULL, "type" TEXT NOT NULL, "ref_id" TEXT, "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT "balance_transactions_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "usage_records" ( "id" TEXT NOT NULL, "user_id" TEXT NOT NULL, "api_key_id" TEXT NOT NULL, "model" TEXT NOT NULL, "prompt_tokens" INTEGER NOT NULL, "completion_tokens" INTEGER NOT NULL, "cost_cents" INTEGER NOT NULL, "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT "usage_records_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "orders" ( "id" TEXT NOT NULL, "user_id" TEXT NOT NULL, "provider" TEXT NOT NULL, "provider_order_id" TEXT, "amount_cents" BIGINT NOT NULL, "status" TEXT NOT NULL DEFAULT 'pending', "currency" TEXT NOT NULL DEFAULT 'USD', "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT "orders_pkey" PRIMARY KEY ("id") ); -- CreateIndex CREATE UNIQUE INDEX "users_email_key" ON "users"("email"); -- CreateIndex CREATE UNIQUE INDEX "api_keys_key_hash_key" ON "api_keys"("key_hash"); -- AddForeignKey ALTER TABLE "api_keys" ADD CONSTRAINT "api_keys_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "balance_transactions" ADD CONSTRAINT "balance_transactions_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "usage_records" ADD CONSTRAINT "usage_records_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "usage_records" ADD CONSTRAINT "usage_records_api_key_id_fkey" FOREIGN KEY ("api_key_id") REFERENCES "api_keys"("id") ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "orders" ADD CONSTRAINT "orders_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;