22ac02cbc6
- 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 的内部组合
16 lines
500 B
TypeScript
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
|