Files
fullstack-starter/src/server/db/fields.ts
T
imbytecat 22ac02cbc6 refactor(db): 精简 generatedFields,删三分支 PK 策略与泛型 keys 工具
- PK 策略原本给了 native(PG18)/extension/app-side 三条路,对 base 项目
  是 YAGNI。全部落到最稳妥的 $defaultFn(uuidv7):任意 PG 版本都能跑,
  不依赖扩展或 18+ 的 uuidv7() 原生函数
- createGeneratedFieldKeys 泛型 reduce 只为了生成 { id: true, createdAt:
  true, updatedAt: true } 这三项,直接手写 as const 更直观
- 删掉 pk/id/createdAt/updatedAt 的独立 helper 导出——没人引用,它们
  只是 generatedFields 的内部组合
2026-04-24 20:37:51 +08:00

16 lines
500 B
TypeScript

import { timestamp, uuid } from 'drizzle-orm/pg-core'
import { v7 as uuidv7 } from 'uuid'
export const generatedFields = {
id: uuid('id')
.primaryKey()
.$defaultFn(() => uuidv7()),
createdAt: timestamp('created_at', { withTimezone: true }).notNull().defaultNow(),
updatedAt: timestamp('updated_at', { withTimezone: true })
.notNull()
.defaultNow()
.$onUpdateFn(() => new Date()),
}
export const generatedFieldKeys = { id: true, createdAt: true, updatedAt: true } as const