0000_legal_brother_voodoo.sql 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. CREATE TABLE "keys" (
  2. "id" serial PRIMARY KEY NOT NULL,
  3. "user_id" integer NOT NULL,
  4. "key" varchar NOT NULL,
  5. "name" varchar NOT NULL,
  6. "is_enabled" boolean DEFAULT true,
  7. "expires_at" timestamp,
  8. "limit_5h_usd" numeric(10, 2),
  9. "limit_weekly_usd" numeric(10, 2),
  10. "limit_monthly_usd" numeric(10, 2),
  11. "limit_concurrent_sessions" integer DEFAULT 0,
  12. "created_at" timestamp with time zone DEFAULT now(),
  13. "updated_at" timestamp with time zone DEFAULT now(),
  14. "deleted_at" timestamp with time zone
  15. );
  16. --> statement-breakpoint
  17. CREATE TABLE "message_request" (
  18. "id" serial PRIMARY KEY NOT NULL,
  19. "provider_id" integer NOT NULL,
  20. "user_id" integer NOT NULL,
  21. "key" varchar NOT NULL,
  22. "model" varchar(128),
  23. "duration_ms" integer,
  24. "cost_usd" numeric(21, 15) DEFAULT '0',
  25. "provider_chain" jsonb,
  26. "status_code" integer,
  27. "api_type" varchar(20),
  28. "input_tokens" integer,
  29. "output_tokens" integer,
  30. "cache_creation_input_tokens" integer,
  31. "cache_read_input_tokens" integer,
  32. "error_message" text,
  33. "created_at" timestamp with time zone DEFAULT now(),
  34. "updated_at" timestamp with time zone DEFAULT now(),
  35. "deleted_at" timestamp with time zone
  36. );
  37. --> statement-breakpoint
  38. CREATE TABLE "model_prices" (
  39. "id" serial PRIMARY KEY NOT NULL,
  40. "model_name" varchar NOT NULL,
  41. "price_data" jsonb NOT NULL,
  42. "created_at" timestamp with time zone DEFAULT now(),
  43. "updated_at" timestamp with time zone DEFAULT now()
  44. );
  45. --> statement-breakpoint
  46. CREATE TABLE "providers" (
  47. "id" serial PRIMARY KEY NOT NULL,
  48. "name" varchar NOT NULL,
  49. "description" text,
  50. "url" varchar NOT NULL,
  51. "key" varchar NOT NULL,
  52. "is_enabled" boolean DEFAULT true NOT NULL,
  53. "weight" integer DEFAULT 1 NOT NULL,
  54. "priority" integer DEFAULT 0 NOT NULL,
  55. "cost_multiplier" numeric(10, 4) DEFAULT '1.0',
  56. "group_tag" varchar(50),
  57. "provider_type" varchar(20) DEFAULT 'claude' NOT NULL,
  58. "model_redirects" jsonb,
  59. "limit_5h_usd" numeric(10, 2),
  60. "limit_weekly_usd" numeric(10, 2),
  61. "limit_monthly_usd" numeric(10, 2),
  62. "limit_concurrent_sessions" integer DEFAULT 0,
  63. "tpm" integer DEFAULT 0,
  64. "rpm" integer DEFAULT 0,
  65. "rpd" integer DEFAULT 0,
  66. "cc" integer DEFAULT 0,
  67. "created_at" timestamp with time zone DEFAULT now(),
  68. "updated_at" timestamp with time zone DEFAULT now(),
  69. "deleted_at" timestamp with time zone
  70. );
  71. --> statement-breakpoint
  72. CREATE TABLE "system_settings" (
  73. "id" serial PRIMARY KEY NOT NULL,
  74. "site_title" varchar(128) DEFAULT 'Claude Code Hub' NOT NULL,
  75. "allow_global_usage_view" boolean DEFAULT true NOT NULL,
  76. "created_at" timestamp with time zone DEFAULT now(),
  77. "updated_at" timestamp with time zone DEFAULT now()
  78. );
  79. --> statement-breakpoint
  80. CREATE TABLE "users" (
  81. "id" serial PRIMARY KEY NOT NULL,
  82. "name" varchar NOT NULL,
  83. "description" text,
  84. "role" varchar DEFAULT 'user',
  85. "rpm_limit" integer DEFAULT 60,
  86. "daily_limit_usd" numeric(10, 2) DEFAULT '100.00',
  87. "provider_group" varchar(50),
  88. "created_at" timestamp with time zone DEFAULT now(),
  89. "updated_at" timestamp with time zone DEFAULT now(),
  90. "deleted_at" timestamp with time zone
  91. );
  92. --> statement-breakpoint
  93. CREATE INDEX "idx_keys_user_id" ON "keys" USING btree ("user_id");--> statement-breakpoint
  94. CREATE INDEX "idx_keys_created_at" ON "keys" USING btree ("created_at");--> statement-breakpoint
  95. CREATE INDEX "idx_keys_deleted_at" ON "keys" USING btree ("deleted_at");--> statement-breakpoint
  96. CREATE INDEX "idx_message_request_user_date_cost" ON "message_request" USING btree ("user_id","created_at","cost_usd") WHERE "message_request"."deleted_at" IS NULL;--> statement-breakpoint
  97. CREATE INDEX "idx_message_request_user_query" ON "message_request" USING btree ("user_id","created_at") WHERE "message_request"."deleted_at" IS NULL;--> statement-breakpoint
  98. CREATE INDEX "idx_message_request_provider_id" ON "message_request" USING btree ("provider_id");--> statement-breakpoint
  99. CREATE INDEX "idx_message_request_user_id" ON "message_request" USING btree ("user_id");--> statement-breakpoint
  100. CREATE INDEX "idx_message_request_key" ON "message_request" USING btree ("key");--> statement-breakpoint
  101. CREATE INDEX "idx_message_request_created_at" ON "message_request" USING btree ("created_at");--> statement-breakpoint
  102. CREATE INDEX "idx_message_request_deleted_at" ON "message_request" USING btree ("deleted_at");--> statement-breakpoint
  103. CREATE INDEX "idx_model_prices_latest" ON "model_prices" USING btree ("model_name","created_at" DESC NULLS LAST);--> statement-breakpoint
  104. CREATE INDEX "idx_model_prices_model_name" ON "model_prices" USING btree ("model_name");--> statement-breakpoint
  105. CREATE INDEX "idx_model_prices_created_at" ON "model_prices" USING btree ("created_at" DESC NULLS LAST);--> statement-breakpoint
  106. CREATE INDEX "idx_providers_enabled_priority" ON "providers" USING btree ("is_enabled","priority","weight") WHERE "providers"."deleted_at" IS NULL;--> statement-breakpoint
  107. CREATE INDEX "idx_providers_group" ON "providers" USING btree ("group_tag") WHERE "providers"."deleted_at" IS NULL;--> statement-breakpoint
  108. CREATE INDEX "idx_providers_created_at" ON "providers" USING btree ("created_at");--> statement-breakpoint
  109. CREATE INDEX "idx_providers_deleted_at" ON "providers" USING btree ("deleted_at");--> statement-breakpoint
  110. CREATE INDEX "idx_users_active_role_sort" ON "users" USING btree ("deleted_at","role","id") WHERE "users"."deleted_at" IS NULL;--> statement-breakpoint
  111. CREATE INDEX "idx_users_created_at" ON "users" USING btree ("created_at");--> statement-breakpoint
  112. CREATE INDEX "idx_users_deleted_at" ON "users" USING btree ("deleted_at");