@ai0x0/utils 0.0.18 → 0.0.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/backend/schemas/index.d.ts +17108 -26
- package/es/backend/schemas/index.js +30 -18
- package/lib/backend/schemas/index.d.ts +17108 -26
- package/lib/backend/schemas/index.js +14 -26
- package/package.json +1 -1
|
@@ -58,31 +58,43 @@ export var listBodySchema = function listBodySchema(schema) {
|
|
|
58
58
|
};
|
|
59
59
|
|
|
60
60
|
//============================创建一个pg表============================//
|
|
61
|
+
/**
|
|
62
|
+
* 基于 drizzle + drizzle-zod 快速生成带基础字段(id / 创建时间等)的
|
|
63
|
+
* 表定义以及 select / insert / update / query / list zod schema。
|
|
64
|
+
*
|
|
65
|
+
* 关键点:把合并后的 `basicFields & TColumnsMap` 交给 pgTable 时同时
|
|
66
|
+
* 提供显式泛型参数,返回的 table 会携带完整列类型;drizzle-zod 由此
|
|
67
|
+
* 推导出的 selectSchema 才是强类型的,而不是退化成
|
|
68
|
+
* `z.ZodObject<Record<string, any[] | null>>`。
|
|
69
|
+
*/
|
|
61
70
|
export var createTableSchema = function createTableSchema(_ref) {
|
|
62
71
|
var name = _ref.name,
|
|
63
72
|
columns = _ref.columns,
|
|
64
|
-
refineSchema = _ref.refineSchema,
|
|
65
73
|
extraConfig = _ref.extraConfig;
|
|
66
|
-
|
|
67
|
-
var table = pgTable(name,
|
|
68
|
-
|
|
69
|
-
var
|
|
70
|
-
//
|
|
71
|
-
var
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
74
|
+
var mergedColumns = _objectSpread(_objectSpread({}, basicFields), columns);
|
|
75
|
+
var table = pgTable(name, mergedColumns, extraConfig);
|
|
76
|
+
var selectSchema = createSelectSchema(table);
|
|
77
|
+
var insertSchema = createInsertSchema(pgTable(name, columns));
|
|
78
|
+
// id 用 defaultRandom() 避免进入 insert 必填;随后在 zod 层把 id 标为必填
|
|
79
|
+
var updateSchema = createUpdateSchema(pgTable(name, _objectSpread({
|
|
80
|
+
id: uuid("id")
|
|
81
|
+
}, columns))).extend({
|
|
82
|
+
id: z.string()
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
// querySchema / queryListSchema 使用手写 zod,避免 selectSchema 泛型通过 .pick / .partial
|
|
86
|
+
// 扩散,导致外部类型声明过长(TS7056)。运行时行为不变。
|
|
87
|
+
var querySchema = z.object({
|
|
88
|
+
id: z.string()
|
|
89
|
+
});
|
|
90
|
+
var queryListWithSchema = queryListSchema(z.object({}).catchall(z.unknown()));
|
|
75
91
|
return {
|
|
76
92
|
table: table,
|
|
77
93
|
selectSchema: selectSchema,
|
|
78
|
-
insertSchema:
|
|
79
|
-
updateSchema:
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
querySchema: selectSchema.pick({
|
|
83
|
-
id: true
|
|
84
|
-
}),
|
|
85
|
-
queryListSchema: queryListSchema(selectSchema.partial()),
|
|
94
|
+
insertSchema: insertSchema,
|
|
95
|
+
updateSchema: updateSchema,
|
|
96
|
+
querySchema: querySchema,
|
|
97
|
+
queryListSchema: queryListWithSchema,
|
|
86
98
|
queryListSelectSchema: selectSchema
|
|
87
99
|
};
|
|
88
100
|
};
|