67 lines
2.3 KiB
MySQL
67 lines
2.3 KiB
MySQL
|
|
-- CreateTable: channels
|
||
|
|
CREATE TABLE "channels" (
|
||
|
|
"id" TEXT NOT NULL,
|
||
|
|
"group_id" INTEGER NOT NULL,
|
||
|
|
"name" TEXT NOT NULL,
|
||
|
|
"platform" TEXT NOT NULL DEFAULT 'claude',
|
||
|
|
"rate_multiplier" DECIMAL(10,4) NOT NULL,
|
||
|
|
"description" TEXT,
|
||
|
|
"models" TEXT,
|
||
|
|
"features" TEXT,
|
||
|
|
"sort_order" INTEGER NOT NULL DEFAULT 0,
|
||
|
|
"enabled" BOOLEAN NOT NULL DEFAULT true,
|
||
|
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
|
|
"updated_at" TIMESTAMP(3) NOT NULL,
|
||
|
|
|
||
|
|
CONSTRAINT "channels_pkey" PRIMARY KEY ("id")
|
||
|
|
);
|
||
|
|
|
||
|
|
-- CreateTable: subscription_plans
|
||
|
|
CREATE TABLE "subscription_plans" (
|
||
|
|
"id" TEXT NOT NULL,
|
||
|
|
"group_id" INTEGER NOT NULL,
|
||
|
|
"name" TEXT NOT NULL,
|
||
|
|
"description" TEXT,
|
||
|
|
"price" DECIMAL(10,2) NOT NULL,
|
||
|
|
"original_price" DECIMAL(10,2),
|
||
|
|
"validity_days" INTEGER NOT NULL DEFAULT 30,
|
||
|
|
"features" TEXT,
|
||
|
|
"for_sale" BOOLEAN NOT NULL DEFAULT false,
|
||
|
|
"sort_order" INTEGER NOT NULL DEFAULT 0,
|
||
|
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
|
|
"updated_at" TIMESTAMP(3) NOT NULL,
|
||
|
|
|
||
|
|
CONSTRAINT "subscription_plans_pkey" PRIMARY KEY ("id")
|
||
|
|
);
|
||
|
|
|
||
|
|
-- CreateTable: system_configs
|
||
|
|
CREATE TABLE "system_configs" (
|
||
|
|
"key" TEXT NOT NULL,
|
||
|
|
"value" TEXT NOT NULL,
|
||
|
|
"group" TEXT NOT NULL DEFAULT 'general',
|
||
|
|
"label" TEXT,
|
||
|
|
"updated_at" TIMESTAMP(3) NOT NULL,
|
||
|
|
|
||
|
|
CONSTRAINT "system_configs_pkey" PRIMARY KEY ("key")
|
||
|
|
);
|
||
|
|
|
||
|
|
-- AlterTable: orders - add subscription fields
|
||
|
|
ALTER TABLE "orders" ADD COLUMN "order_type" TEXT NOT NULL DEFAULT 'balance';
|
||
|
|
ALTER TABLE "orders" ADD COLUMN "plan_id" TEXT;
|
||
|
|
ALTER TABLE "orders" ADD COLUMN "subscription_group_id" INTEGER;
|
||
|
|
ALTER TABLE "orders" ADD COLUMN "subscription_days" INTEGER;
|
||
|
|
|
||
|
|
-- CreateIndex
|
||
|
|
CREATE UNIQUE INDEX "channels_group_id_key" ON "channels"("group_id");
|
||
|
|
CREATE INDEX "channels_sort_order_idx" ON "channels"("sort_order");
|
||
|
|
|
||
|
|
CREATE UNIQUE INDEX "subscription_plans_group_id_key" ON "subscription_plans"("group_id");
|
||
|
|
CREATE INDEX "subscription_plans_for_sale_sort_order_idx" ON "subscription_plans"("for_sale", "sort_order");
|
||
|
|
|
||
|
|
CREATE INDEX "system_configs_group_idx" ON "system_configs"("group");
|
||
|
|
|
||
|
|
CREATE INDEX "orders_order_type_idx" ON "orders"("order_type");
|
||
|
|
|
||
|
|
-- AddForeignKey
|
||
|
|
ALTER TABLE "orders" ADD CONSTRAINT "orders_plan_id_fkey" FOREIGN KEY ("plan_id") REFERENCES "subscription_plans"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|