migration.sql 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. -- CreateTable
  2. CREATE TABLE "users" (
  3. "id" TEXT NOT NULL,
  4. "email" TEXT NOT NULL,
  5. "password_hash" TEXT NOT NULL,
  6. "currency" TEXT NOT NULL DEFAULT 'USD',
  7. "balance_cents" BIGINT NOT NULL DEFAULT 0,
  8. "status" TEXT NOT NULL DEFAULT 'active',
  9. "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
  10. "updated_at" TIMESTAMP(3) NOT NULL,
  11. CONSTRAINT "users_pkey" PRIMARY KEY ("id")
  12. );
  13. -- CreateTable
  14. CREATE TABLE "api_keys" (
  15. "id" TEXT NOT NULL,
  16. "user_id" TEXT NOT NULL,
  17. "name" TEXT NOT NULL,
  18. "key_hash" TEXT NOT NULL,
  19. "prefix" TEXT NOT NULL,
  20. "last_used_at" TIMESTAMP(3),
  21. "status" TEXT NOT NULL DEFAULT 'active',
  22. "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
  23. "updated_at" TIMESTAMP(3) NOT NULL,
  24. CONSTRAINT "api_keys_pkey" PRIMARY KEY ("id")
  25. );
  26. -- CreateTable
  27. CREATE TABLE "balance_transactions" (
  28. "id" TEXT NOT NULL,
  29. "user_id" TEXT NOT NULL,
  30. "amount_cents" BIGINT NOT NULL,
  31. "type" TEXT NOT NULL,
  32. "ref_id" TEXT,
  33. "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
  34. CONSTRAINT "balance_transactions_pkey" PRIMARY KEY ("id")
  35. );
  36. -- CreateTable
  37. CREATE TABLE "usage_records" (
  38. "id" TEXT NOT NULL,
  39. "user_id" TEXT NOT NULL,
  40. "api_key_id" TEXT NOT NULL,
  41. "model" TEXT NOT NULL,
  42. "prompt_tokens" INTEGER NOT NULL,
  43. "completion_tokens" INTEGER NOT NULL,
  44. "cost_cents" INTEGER NOT NULL,
  45. "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
  46. CONSTRAINT "usage_records_pkey" PRIMARY KEY ("id")
  47. );
  48. -- CreateTable
  49. CREATE TABLE "orders" (
  50. "id" TEXT NOT NULL,
  51. "user_id" TEXT NOT NULL,
  52. "provider" TEXT NOT NULL,
  53. "provider_order_id" TEXT,
  54. "amount_cents" BIGINT NOT NULL,
  55. "status" TEXT NOT NULL DEFAULT 'pending',
  56. "currency" TEXT NOT NULL DEFAULT 'USD',
  57. "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
  58. CONSTRAINT "orders_pkey" PRIMARY KEY ("id")
  59. );
  60. -- CreateIndex
  61. CREATE UNIQUE INDEX "users_email_key" ON "users"("email");
  62. -- CreateIndex
  63. CREATE UNIQUE INDEX "api_keys_key_hash_key" ON "api_keys"("key_hash");
  64. -- AddForeignKey
  65. ALTER TABLE "api_keys" ADD CONSTRAINT "api_keys_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
  66. -- AddForeignKey
  67. ALTER TABLE "balance_transactions" ADD CONSTRAINT "balance_transactions_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
  68. -- AddForeignKey
  69. ALTER TABLE "usage_records" ADD CONSTRAINT "usage_records_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
  70. -- AddForeignKey
  71. 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;
  72. -- AddForeignKey
  73. ALTER TABLE "orders" ADD CONSTRAINT "orders_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;