From 3d6679a7c27268bc07241f8b2d5335d9ad350f43 Mon Sep 17 00:00:00 2001 From: Sunwuyuan Date: Mon, 9 Feb 2026 11:26:09 +0800 Subject: [PATCH] fix: remove outdated migration files and update schema for consistency --- generated/prisma/internal/class.ts | 2 +- prisma/migrations/0_init/migration.sql | 110 ------------------ .../migration.sql | 14 --- .../20260201131541_fix_idbug/migration.sql | 4 - .../20260209032205_init/migration.sql | 94 +++++++++++++++ prisma/schema.prisma | 25 ++-- 6 files changed, 108 insertions(+), 141 deletions(-) delete mode 100644 prisma/migrations/0_init/migration.sql delete mode 100644 prisma/migrations/20260201120205_fix_timestamp_defaults/migration.sql delete mode 100644 prisma/migrations/20260201131541_fix_idbug/migration.sql create mode 100644 prisma/migrations/20260209032205_init/migration.sql diff --git a/generated/prisma/internal/class.ts b/generated/prisma/internal/class.ts index 9d7b5af..bb07856 100644 --- a/generated/prisma/internal/class.ts +++ b/generated/prisma/internal/class.ts @@ -20,7 +20,7 @@ const config: runtime.GetPrismaClientConfig = { "clientVersion": "7.3.0", "engineVersion": "9d6ad21cbbceab97458517b147a6a09ff43aa735", "activeProvider": "postgresql", - "inlineSchema": "generator client {\n provider = \"prisma-client\"\n output = \"../generated/prisma\"\n}\n\ndatasource db {\n provider = \"postgresql\"\n}\n\nmodel Account {\n id String @id(map: \"idx_18303_PRIMARY\") @default(cuid()) @db.VarChar(191)\n provider String @db.VarChar(191)\n providerId String @db.VarChar(191)\n email String? @db.VarChar(191)\n name String? @db.VarChar(191)\n avatarUrl String? @db.VarChar(191)\n providerData Json? @db.Json\n accessToken String?\n createdAt DateTime @default(now()) @db.Timestamptz(6)\n updatedAt DateTime @default(now()) @updatedAt @db.Timestamptz(6)\n refreshToken String?\n refreshTokenExpiry DateTime? @db.Timestamptz(6)\n tokenVersion Int @default(1)\n\n devices Device[]\n\n @@unique([provider, providerId], map: \"idx_18303_Account_provider_providerId_key\")\n}\n\nmodel AppInstall {\n id String @id(map: \"idx_18310_PRIMARY\") @default(cuid()) @db.VarChar(191)\n deviceId Int\n appId String @db.VarChar(191)\n token String @unique(map: \"idx_18310_AppInstall_token_key\") @db.VarChar(191)\n note String? @db.VarChar(191)\n installedAt DateTime @default(now()) @db.Timestamptz(6)\n updatedAt DateTime @default(now()) @updatedAt @db.Timestamptz(6)\n deviceType String? @db.VarChar(191)\n isReadOnly Boolean @default(false)\n\n device Device @relation(fields: [deviceId], references: [id], onDelete: Cascade)\n\n @@index([deviceId], map: \"idx_18310_AppInstall_deviceId_fkey\")\n}\n\nmodel AutoAuth {\n id String @id(map: \"idx_18317_PRIMARY\") @default(cuid()) @db.VarChar(191)\n deviceId Int\n password String? @db.VarChar(191)\n deviceType String? @db.VarChar(191)\n isReadOnly Boolean @default(false)\n createdAt DateTime @default(now()) @db.Timestamptz(6)\n updatedAt DateTime @default(now()) @updatedAt @db.Timestamptz(6)\n\n device Device @relation(fields: [deviceId], references: [id], onDelete: Cascade)\n\n @@unique([deviceId, password], map: \"idx_18317_AutoAuth_deviceId_password_key\")\n}\n\nmodel Device {\n id Int @id(map: \"idx_18324_PRIMARY\") @default(autoincrement())\n uuid String @unique(map: \"idx_18324_Device_uuid_key\") @db.VarChar(191)\n name String? @db.VarChar(191)\n accountId String? @db.VarChar(191)\n createdAt DateTime @default(now()) @db.Timestamptz(6)\n updatedAt DateTime @default(now()) @updatedAt @db.Timestamptz(6)\n password String? @db.VarChar(191)\n passwordHint String? @db.VarChar(191)\n namespace String? @unique(map: \"idx_18324_Device_namespace_key\") @db.VarChar(191)\n\n // 关联关系\n account Account? @relation(fields: [accountId], references: [id], onDelete: SetNull)\n appInstalls AppInstall[]\n kvStore KVStore[] // 设备相关的KV存储\n autoAuths AutoAuth[] // 自动授权配置\n\n @@index([accountId], map: \"idx_18324_Device_accountId_fkey\")\n}\n\nmodel KVStore {\n deviceId Int\n key String @db.VarChar(191)\n value Json @db.Json\n creatorIp String? @default(\"\") @db.VarChar(191)\n createdAt DateTime @default(now()) @db.Timestamptz(6)\n updatedAt DateTime @default(now()) @updatedAt @db.Timestamptz(6)\n\n device Device @relation(fields: [deviceId], references: [id], onDelete: Cascade)\n\n @@id([deviceId, key], map: \"idx_18330_PRIMARY\")\n}\n", + "inlineSchema": "generator client {\n provider = \"prisma-client\"\n output = \"../generated/prisma\"\n}\n\ndatasource db {\n provider = \"postgresql\"\n relationMode = \"prisma\"\n}\n\nmodel Account {\n id String @id @default(cuid()) @db.VarChar(191)\n provider String @db.VarChar(191)\n providerId String @db.VarChar(191)\n email String? @db.VarChar(191)\n name String? @db.VarChar(191)\n avatarUrl String? @db.VarChar(191)\n providerData Json? @db.Json\n accessToken String?\n createdAt DateTime @default(now()) @db.Timestamptz(6)\n updatedAt DateTime @default(now()) @updatedAt @db.Timestamptz(6)\n refreshToken String?\n refreshTokenExpiry DateTime? @db.Timestamptz(6)\n tokenVersion Int @default(1)\n\n devices Device[]\n\n @@unique([provider, providerId])\n}\n\nmodel AppInstall {\n id String @id @default(cuid()) @db.VarChar(191)\n deviceId Int\n appId String @db.VarChar(191)\n token String @unique @db.VarChar(191)\n note String? @db.VarChar(191)\n installedAt DateTime @default(now()) @db.Timestamptz(6)\n updatedAt DateTime @default(now()) @updatedAt @db.Timestamptz(6)\n deviceType String? @db.VarChar(191)\n isReadOnly Boolean @default(false)\n\n device Device @relation(fields: [deviceId], references: [id], onDelete: Cascade)\n\n @@index([deviceId])\n}\n\nmodel AutoAuth {\n id String @id @default(cuid()) @db.VarChar(191)\n deviceId Int\n password String? @db.VarChar(191)\n deviceType String? @db.VarChar(191)\n isReadOnly Boolean @default(false)\n createdAt DateTime @default(now()) @db.Timestamptz(6)\n updatedAt DateTime @default(now()) @updatedAt @db.Timestamptz(6)\n\n device Device @relation(fields: [deviceId], references: [id], onDelete: Cascade)\n\n @@unique([deviceId, password])\n}\n\nmodel Device {\n id Int @id @default(autoincrement())\n uuid String @unique @db.VarChar(191)\n name String? @db.VarChar(191)\n accountId String? @db.VarChar(191)\n createdAt DateTime @default(now()) @db.Timestamptz(6)\n updatedAt DateTime @default(now()) @updatedAt @db.Timestamptz(6)\n password String? @db.VarChar(191)\n passwordHint String? @db.VarChar(191)\n namespace String? @unique @db.VarChar(191)\n\n // 关联关系\n account Account? @relation(fields: [accountId], references: [id], onDelete: SetNull)\n appInstalls AppInstall[]\n kvStore KVStore[] // 设备相关的KV存储\n autoAuths AutoAuth[] // 自动授权配置\n\n @@index([accountId])\n}\n\nmodel KVStore {\n deviceId Int\n key String @db.VarChar(191)\n value Json @db.Json\n creatorIp String? @default(\"\") @db.VarChar(191)\n createdAt DateTime @default(now()) @db.Timestamptz(6)\n updatedAt DateTime @default(now()) @updatedAt @db.Timestamptz(6)\n\n device Device @relation(fields: [deviceId], references: [id], onDelete: Cascade)\n\n @@id([deviceId, key])\n}\n", "runtimeDataModel": { "models": {}, "enums": {}, diff --git a/prisma/migrations/0_init/migration.sql b/prisma/migrations/0_init/migration.sql deleted file mode 100644 index c91f790..0000000 --- a/prisma/migrations/0_init/migration.sql +++ /dev/null @@ -1,110 +0,0 @@ --- CreateSchema -CREATE SCHEMA IF NOT EXISTS "public"; - --- CreateTable -CREATE TABLE "Account" ( - "id" VARCHAR(191) NOT NULL, - "provider" VARCHAR(191) NOT NULL, - "providerId" VARCHAR(191) NOT NULL, - "email" VARCHAR(191), - "name" VARCHAR(191), - "avatarUrl" VARCHAR(191), - "providerData" JSON, - "accessToken" TEXT, - "createdAt" TIMESTAMPTZ(6) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMPTZ(6) NOT NULL, - "refreshToken" TEXT, - "refreshTokenExpiry" TIMESTAMPTZ(6), - "tokenVersion" INTEGER NOT NULL DEFAULT 1, - - CONSTRAINT "idx_18303_PRIMARY" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "AppInstall" ( - "id" VARCHAR(191) NOT NULL, - "deviceId" INTEGER NOT NULL, - "appId" VARCHAR(191) NOT NULL, - "token" VARCHAR(191) NOT NULL, - "note" VARCHAR(191), - "installedAt" TIMESTAMPTZ(6) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMPTZ(6) NOT NULL, - "deviceType" VARCHAR(191), - "isReadOnly" BOOLEAN NOT NULL DEFAULT false, - - CONSTRAINT "idx_18310_PRIMARY" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "AutoAuth" ( - "id" VARCHAR(191) NOT NULL, - "deviceId" INTEGER NOT NULL, - "password" VARCHAR(191), - "deviceType" VARCHAR(191), - "isReadOnly" BOOLEAN NOT NULL DEFAULT false, - "createdAt" TIMESTAMPTZ(6) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMPTZ(6) NOT NULL, - - CONSTRAINT "idx_18317_PRIMARY" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "Device" ( - "id" INTEGER NOT NULL, - "uuid" VARCHAR(191) NOT NULL, - "name" VARCHAR(191), - "accountId" VARCHAR(191), - "createdAt" TIMESTAMPTZ(6) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMPTZ(6) NOT NULL, - "password" VARCHAR(191), - "passwordHint" VARCHAR(191), - "namespace" VARCHAR(191), - - CONSTRAINT "idx_18324_PRIMARY" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "KVStore" ( - "deviceId" INTEGER NOT NULL, - "key" VARCHAR(191) NOT NULL, - "value" JSON NOT NULL, - "creatorIp" VARCHAR(191) DEFAULT '', - "createdAt" TIMESTAMPTZ(6) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMPTZ(6) NOT NULL, - - CONSTRAINT "idx_18330_PRIMARY" PRIMARY KEY ("deviceId","key") -); - --- CreateIndex -CREATE UNIQUE INDEX "idx_18303_Account_provider_providerId_key" ON "Account"("provider", "providerId"); - --- CreateIndex -CREATE UNIQUE INDEX "idx_18310_AppInstall_token_key" ON "AppInstall"("token"); - --- CreateIndex -CREATE INDEX "idx_18310_AppInstall_deviceId_fkey" ON "AppInstall"("deviceId"); - --- CreateIndex -CREATE UNIQUE INDEX "idx_18317_AutoAuth_deviceId_password_key" ON "AutoAuth"("deviceId", "password"); - --- CreateIndex -CREATE UNIQUE INDEX "idx_18324_Device_uuid_key" ON "Device"("uuid"); - --- CreateIndex -CREATE UNIQUE INDEX "idx_18324_Device_namespace_key" ON "Device"("namespace"); - --- CreateIndex -CREATE INDEX "idx_18324_Device_accountId_fkey" ON "Device"("accountId"); - --- AddForeignKey -ALTER TABLE "AppInstall" ADD CONSTRAINT "AppInstall_deviceId_fkey" FOREIGN KEY ("deviceId") REFERENCES "Device"("id") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "AutoAuth" ADD CONSTRAINT "AutoAuth_deviceId_fkey" FOREIGN KEY ("deviceId") REFERENCES "Device"("id") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "Device" ADD CONSTRAINT "Device_accountId_fkey" FOREIGN KEY ("accountId") REFERENCES "Account"("id") ON DELETE SET NULL ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "KVStore" ADD CONSTRAINT "KVStore_deviceId_fkey" FOREIGN KEY ("deviceId") REFERENCES "Device"("id") ON DELETE CASCADE ON UPDATE CASCADE; - diff --git a/prisma/migrations/20260201120205_fix_timestamp_defaults/migration.sql b/prisma/migrations/20260201120205_fix_timestamp_defaults/migration.sql deleted file mode 100644 index 6ab05e9..0000000 --- a/prisma/migrations/20260201120205_fix_timestamp_defaults/migration.sql +++ /dev/null @@ -1,14 +0,0 @@ --- AlterTable -ALTER TABLE "Account" ALTER COLUMN "updatedAt" SET DEFAULT CURRENT_TIMESTAMP; - --- AlterTable -ALTER TABLE "AppInstall" ALTER COLUMN "updatedAt" SET DEFAULT CURRENT_TIMESTAMP; - --- AlterTable -ALTER TABLE "AutoAuth" ALTER COLUMN "updatedAt" SET DEFAULT CURRENT_TIMESTAMP; - --- AlterTable -ALTER TABLE "Device" ALTER COLUMN "updatedAt" SET DEFAULT CURRENT_TIMESTAMP; - --- AlterTable -ALTER TABLE "KVStore" ALTER COLUMN "updatedAt" SET DEFAULT CURRENT_TIMESTAMP; diff --git a/prisma/migrations/20260201131541_fix_idbug/migration.sql b/prisma/migrations/20260201131541_fix_idbug/migration.sql deleted file mode 100644 index 5b971a8..0000000 --- a/prisma/migrations/20260201131541_fix_idbug/migration.sql +++ /dev/null @@ -1,4 +0,0 @@ --- AlterTable -CREATE SEQUENCE device_id_seq; -ALTER TABLE "Device" ALTER COLUMN "id" SET DEFAULT nextval('device_id_seq'); -ALTER SEQUENCE device_id_seq OWNED BY "Device"."id"; diff --git a/prisma/migrations/20260209032205_init/migration.sql b/prisma/migrations/20260209032205_init/migration.sql new file mode 100644 index 0000000..ada7791 --- /dev/null +++ b/prisma/migrations/20260209032205_init/migration.sql @@ -0,0 +1,94 @@ +-- CreateTable +CREATE TABLE "Account" ( + "id" VARCHAR(191) NOT NULL, + "provider" VARCHAR(191) NOT NULL, + "providerId" VARCHAR(191) NOT NULL, + "email" VARCHAR(191), + "name" VARCHAR(191), + "avatarUrl" VARCHAR(191), + "providerData" JSON, + "accessToken" TEXT, + "createdAt" TIMESTAMPTZ(6) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMPTZ(6) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "refreshToken" TEXT, + "refreshTokenExpiry" TIMESTAMPTZ(6), + "tokenVersion" INTEGER NOT NULL DEFAULT 1, + + CONSTRAINT "Account_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "AppInstall" ( + "id" VARCHAR(191) NOT NULL, + "deviceId" INTEGER NOT NULL, + "appId" VARCHAR(191) NOT NULL, + "token" VARCHAR(191) NOT NULL, + "note" VARCHAR(191), + "installedAt" TIMESTAMPTZ(6) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMPTZ(6) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "deviceType" VARCHAR(191), + "isReadOnly" BOOLEAN NOT NULL DEFAULT false, + + CONSTRAINT "AppInstall_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "AutoAuth" ( + "id" VARCHAR(191) NOT NULL, + "deviceId" INTEGER NOT NULL, + "password" VARCHAR(191), + "deviceType" VARCHAR(191), + "isReadOnly" BOOLEAN NOT NULL DEFAULT false, + "createdAt" TIMESTAMPTZ(6) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMPTZ(6) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "AutoAuth_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Device" ( + "id" SERIAL NOT NULL, + "uuid" VARCHAR(191) NOT NULL, + "name" VARCHAR(191), + "accountId" VARCHAR(191), + "createdAt" TIMESTAMPTZ(6) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMPTZ(6) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "password" VARCHAR(191), + "passwordHint" VARCHAR(191), + "namespace" VARCHAR(191), + + CONSTRAINT "Device_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "KVStore" ( + "deviceId" INTEGER NOT NULL, + "key" VARCHAR(191) NOT NULL, + "value" JSON NOT NULL, + "creatorIp" VARCHAR(191) DEFAULT '', + "createdAt" TIMESTAMPTZ(6) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMPTZ(6) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "KVStore_pkey" PRIMARY KEY ("deviceId","key") +); + +-- CreateIndex +CREATE UNIQUE INDEX "Account_provider_providerId_key" ON "Account"("provider", "providerId"); + +-- CreateIndex +CREATE UNIQUE INDEX "AppInstall_token_key" ON "AppInstall"("token"); + +-- CreateIndex +CREATE INDEX "AppInstall_deviceId_idx" ON "AppInstall"("deviceId"); + +-- CreateIndex +CREATE UNIQUE INDEX "AutoAuth_deviceId_password_key" ON "AutoAuth"("deviceId", "password"); + +-- CreateIndex +CREATE UNIQUE INDEX "Device_uuid_key" ON "Device"("uuid"); + +-- CreateIndex +CREATE UNIQUE INDEX "Device_namespace_key" ON "Device"("namespace"); + +-- CreateIndex +CREATE INDEX "Device_accountId_idx" ON "Device"("accountId"); diff --git a/prisma/schema.prisma b/prisma/schema.prisma index bd0bc6b..e701c67 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -5,10 +5,11 @@ generator client { datasource db { provider = "postgresql" + relationMode = "prisma" } model Account { - id String @id(map: "idx_18303_PRIMARY") @db.VarChar(191) @default(cuid()) + id String @id @db.VarChar(191) @default(cuid()) provider String @db.VarChar(191) providerId String @db.VarChar(191) email String? @db.VarChar(191) @@ -24,14 +25,14 @@ model Account { devices Device[] - @@unique([provider, providerId], map: "idx_18303_Account_provider_providerId_key") + @@unique([provider, providerId]) } model AppInstall { - id String @id(map: "idx_18310_PRIMARY") @default(cuid()) @db.VarChar(191) + id String @id @default(cuid()) @db.VarChar(191) deviceId Int appId String @db.VarChar(191) - token String @unique(map: "idx_18310_AppInstall_token_key") @db.VarChar(191) + token String @unique @db.VarChar(191) note String? @db.VarChar(191) installedAt DateTime @default(now()) @db.Timestamptz(6) updatedAt DateTime @default(now()) @updatedAt @db.Timestamptz(6) @@ -40,11 +41,11 @@ model AppInstall { device Device @relation(fields: [deviceId], references: [id], onDelete: Cascade) - @@index([deviceId], map: "idx_18310_AppInstall_deviceId_fkey") + @@index([deviceId]) } model AutoAuth { - id String @id(map: "idx_18317_PRIMARY") @default(cuid()) @db.VarChar(191) + id String @id @default(cuid()) @db.VarChar(191) deviceId Int password String? @db.VarChar(191) deviceType String? @db.VarChar(191) @@ -54,26 +55,26 @@ model AutoAuth { device Device @relation(fields: [deviceId], references: [id], onDelete: Cascade) - @@unique([deviceId, password], map: "idx_18317_AutoAuth_deviceId_password_key") + @@unique([deviceId, password]) } model Device { - id Int @id(map: "idx_18324_PRIMARY") @default(autoincrement()) - uuid String @unique(map: "idx_18324_Device_uuid_key") @db.VarChar(191) + id Int @id @default(autoincrement()) + uuid String @unique @db.VarChar(191) name String? @db.VarChar(191) accountId String? @db.VarChar(191) createdAt DateTime @default(now()) @db.Timestamptz(6) updatedAt DateTime @default(now()) @updatedAt @db.Timestamptz(6) password String? @db.VarChar(191) passwordHint String? @db.VarChar(191) - namespace String? @unique(map: "idx_18324_Device_namespace_key") @db.VarChar(191) + namespace String? @unique @db.VarChar(191) // 关联关系 account Account? @relation(fields: [accountId], references: [id], onDelete: SetNull) appInstalls AppInstall[] kvStore KVStore[] // 设备相关的KV存储 autoAuths AutoAuth[] // 自动授权配置 - @@index([accountId], map: "idx_18324_Device_accountId_fkey") + @@index([accountId]) } model KVStore { @@ -86,5 +87,5 @@ model KVStore { device Device @relation(fields: [deviceId], references: [id], onDelete: Cascade) - @@id([deviceId, key], map: "idx_18330_PRIMARY") + @@id([deviceId, key]) }