@zhin.js/database 1.0.4 → 1.0.6
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/CHANGELOG.md +12 -0
- package/README.md +1360 -34
- package/lib/base/database.d.ts +71 -13
- package/lib/base/database.d.ts.map +1 -1
- package/lib/base/database.js +128 -4
- package/lib/base/database.js.map +1 -1
- package/lib/base/dialect.d.ts +27 -10
- package/lib/base/dialect.d.ts.map +1 -1
- package/lib/base/dialect.js +32 -0
- package/lib/base/dialect.js.map +1 -1
- package/lib/base/index.d.ts +1 -0
- package/lib/base/index.d.ts.map +1 -1
- package/lib/base/index.js +1 -0
- package/lib/base/index.js.map +1 -1
- package/lib/base/model.d.ts +105 -12
- package/lib/base/model.d.ts.map +1 -1
- package/lib/base/model.js +224 -3
- package/lib/base/model.js.map +1 -1
- package/lib/base/query-classes.d.ts +204 -33
- package/lib/base/query-classes.d.ts.map +1 -1
- package/lib/base/query-classes.js +276 -0
- package/lib/base/query-classes.js.map +1 -1
- package/lib/base/thenable.d.ts +7 -7
- package/lib/base/thenable.d.ts.map +1 -1
- package/lib/base/thenable.js +5 -4
- package/lib/base/thenable.js.map +1 -1
- package/lib/base/transaction.d.ts +46 -0
- package/lib/base/transaction.d.ts.map +1 -0
- package/lib/base/transaction.js +186 -0
- package/lib/base/transaction.js.map +1 -0
- package/lib/dialects/memory.d.ts +12 -7
- package/lib/dialects/memory.d.ts.map +1 -1
- package/lib/dialects/memory.js +7 -4
- package/lib/dialects/memory.js.map +1 -1
- package/lib/dialects/mongodb.d.ts +11 -7
- package/lib/dialects/mongodb.d.ts.map +1 -1
- package/lib/dialects/mongodb.js +18 -15
- package/lib/dialects/mongodb.js.map +1 -1
- package/lib/dialects/mysql.d.ts +35 -6
- package/lib/dialects/mysql.d.ts.map +1 -1
- package/lib/dialects/mysql.js +137 -18
- package/lib/dialects/mysql.js.map +1 -1
- package/lib/dialects/pg.d.ts +35 -6
- package/lib/dialects/pg.d.ts.map +1 -1
- package/lib/dialects/pg.js +137 -18
- package/lib/dialects/pg.js.map +1 -1
- package/lib/dialects/redis.d.ts +11 -6
- package/lib/dialects/redis.d.ts.map +1 -1
- package/lib/dialects/redis.js +11 -8
- package/lib/dialects/redis.js.map +1 -1
- package/lib/dialects/sqlite.d.ts +19 -6
- package/lib/dialects/sqlite.d.ts.map +1 -1
- package/lib/dialects/sqlite.js +63 -10
- package/lib/dialects/sqlite.js.map +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/migration.d.ts +132 -0
- package/lib/migration.d.ts.map +1 -0
- package/lib/migration.js +475 -0
- package/lib/migration.js.map +1 -0
- package/lib/registry.d.ts +26 -23
- package/lib/registry.d.ts.map +1 -1
- package/lib/registry.js +1 -5
- package/lib/registry.js.map +1 -1
- package/lib/type/document/database.d.ts +11 -11
- package/lib/type/document/database.d.ts.map +1 -1
- package/lib/type/document/database.js.map +1 -1
- package/lib/type/document/model.d.ts +7 -7
- package/lib/type/document/model.d.ts.map +1 -1
- package/lib/type/document/model.js.map +1 -1
- package/lib/type/keyvalue/database.d.ts +11 -11
- package/lib/type/keyvalue/database.d.ts.map +1 -1
- package/lib/type/keyvalue/database.js.map +1 -1
- package/lib/type/keyvalue/model.d.ts +2 -2
- package/lib/type/keyvalue/model.d.ts.map +1 -1
- package/lib/type/keyvalue/model.js.map +1 -1
- package/lib/type/related/database.d.ts +48 -13
- package/lib/type/related/database.d.ts.map +1 -1
- package/lib/type/related/database.js +258 -27
- package/lib/type/related/database.js.map +1 -1
- package/lib/type/related/model.d.ts +251 -15
- package/lib/type/related/model.d.ts.map +1 -1
- package/lib/type/related/model.js +647 -22
- package/lib/type/related/model.js.map +1 -1
- package/lib/types.d.ts +475 -37
- package/lib/types.d.ts.map +1 -1
- package/lib/types.js +6 -0
- package/lib/types.js.map +1 -1
- package/package.json +14 -5
- package/src/base/database.ts +168 -24
- package/src/base/dialect.ts +49 -10
- package/src/base/index.ts +2 -1
- package/src/base/model.ts +258 -18
- package/src/base/query-classes.ts +471 -63
- package/src/base/thenable.ts +12 -11
- package/src/base/transaction.ts +213 -0
- package/src/dialects/memory.ts +14 -13
- package/src/dialects/mongodb.ts +40 -38
- package/src/dialects/mysql.ts +151 -22
- package/src/dialects/pg.ts +148 -21
- package/src/dialects/redis.ts +40 -38
- package/src/dialects/sqlite.ts +73 -15
- package/src/index.ts +1 -2
- package/src/migration.ts +544 -0
- package/src/registry.ts +33 -33
- package/src/type/document/database.ts +32 -32
- package/src/type/document/model.ts +14 -14
- package/src/type/keyvalue/database.ts +32 -32
- package/src/type/keyvalue/model.ts +18 -18
- package/src/type/related/database.ts +309 -34
- package/src/type/related/model.ts +800 -33
- package/src/types.ts +559 -44
- package/tests/database.test.ts +1738 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../../src/type/related/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAC,MAAM,qBAAqB,CAAC;AAI3C;;;GAGG;AACH,MAAM,OAAO,YAA8C,SAAQ,KAAiB;IAClF,YACE,QAA4B,EAC5B,IAAY;QAEZ,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,IAAgB;QAC3B,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAO,IAAI,CAAC,QAA+B,CAAC,MAAM,CAAI,IAAI,CAAC,IAAI,EAAE,IAAS,CAAC,CAAC;YAC3F,OAAO,MAAW,CAAC;QACrB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,WAAW,CAAC,KAAc,EAAE,QAAQ,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,IAAkB;QACjC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACjD,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,EAAE,CAAC;YACnB,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;gBACxB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACvC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACvB,CAAC;YACD,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,WAAW,CAAC,KAAc,EAAE,YAAY,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IACD;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,KAAoB;QAClC,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YAChC,IAAI,KAAK,EAAE,CAAC;gBACV,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACzB,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACzC,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAChD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,WAAW,CAAC,KAAc,EAAE,WAAW,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,EAAO;QACtB,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAkB,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,KAAmB,EAAE,IAAgB;QACnD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACpD,OAAO,MAAM,GAAG,CAAC,CAAC;QACpB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,WAAW,CAAC,KAAc,EAAE,WAAW,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,EAAO,EAAE,IAAgB;QACxC,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAkB,EAAE,IAAI,CAAC,CAAC;IACtD,CAAC;IAGD;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,EAAO;QACtB,MAAM,MAAM,GAAC,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,EAAkB,CAAC,CAAC;QACvD,OAAO,MAAM,GAAC,CAAC,CAAA;IACjB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK,CAAC,KAAoB;QAC9B,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,GAAc,CAAC,CAAC;YAC9C,IAAI,KAAK,EAAE,CAAC;gBACV,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACzB,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC;YAChC,OAAO,OAAO,CAAC,MAAM,CAAC;QACxB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,WAAW,CAAC,KAAc,EAAE,OAAO,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../../src/type/related/model.ts"],"names":[],"mappings":"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"}
|
package/lib/types.d.ts
CHANGED
|
@@ -1,4 +1,10 @@
|
|
|
1
|
-
export type QueryType = 'create' | 'alter' | 'drop_table' | 'drop_index' | 'select' | 'insert' | 'update' | 'delete';
|
|
1
|
+
export type QueryType = 'create' | 'alter' | 'drop_table' | 'drop_index' | 'select' | 'insert' | 'insert_many' | 'update' | 'delete' | 'aggregate';
|
|
2
|
+
export type AggregateFunction = 'count' | 'sum' | 'avg' | 'min' | 'max';
|
|
3
|
+
export interface AggregateField<T extends object> {
|
|
4
|
+
fn: AggregateFunction;
|
|
5
|
+
field: keyof T | '*';
|
|
6
|
+
alias?: string;
|
|
7
|
+
}
|
|
2
8
|
export type ColumnType = "text" | "integer" | "float" | "boolean" | "date" | "json";
|
|
3
9
|
export interface Column<T = any> {
|
|
4
10
|
type: ColumnType;
|
|
@@ -12,6 +18,47 @@ export interface Column<T = any> {
|
|
|
12
18
|
export type Definition<T extends object = object> = {
|
|
13
19
|
[P in keyof T]: Column<T[P]>;
|
|
14
20
|
};
|
|
21
|
+
export interface ModelOptions {
|
|
22
|
+
/** 启用软删除(需要表中有 deletedAt 字段) */
|
|
23
|
+
softDelete?: boolean;
|
|
24
|
+
/** 软删除字段名,默认 'deletedAt' */
|
|
25
|
+
deletedAtField?: string;
|
|
26
|
+
/** 启用自动时间戳(createdAt, updatedAt) */
|
|
27
|
+
timestamps?: boolean;
|
|
28
|
+
/** createdAt 字段名,默认 'createdAt' */
|
|
29
|
+
createdAtField?: string;
|
|
30
|
+
/** updatedAt 字段名,默认 'updatedAt' */
|
|
31
|
+
updatedAtField?: string;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* 生命周期钩子上下文
|
|
35
|
+
* 包含当前操作的相关信息
|
|
36
|
+
*/
|
|
37
|
+
export interface HookContext<T extends object = object> {
|
|
38
|
+
/** 模型名称 */
|
|
39
|
+
modelName: string;
|
|
40
|
+
/** 当前操作的数据(create/update 时) */
|
|
41
|
+
data?: Partial<T>;
|
|
42
|
+
/** 查询条件(find/update/delete 时) */
|
|
43
|
+
where?: Condition<T>;
|
|
44
|
+
/** 操作结果(after 钩子时) */
|
|
45
|
+
result?: T | T[] | number;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* 钩子函数类型
|
|
49
|
+
* 返回 false 可以取消操作(仅 before 钩子)
|
|
50
|
+
*/
|
|
51
|
+
export type HookFn<T extends object = object> = (context: HookContext<T>) => void | boolean | Promise<void | boolean>;
|
|
52
|
+
/**
|
|
53
|
+
* 生命周期钩子名称
|
|
54
|
+
*/
|
|
55
|
+
export type HookName = 'beforeCreate' | 'afterCreate' | 'beforeUpdate' | 'afterUpdate' | 'beforeDelete' | 'afterDelete' | 'beforeFind' | 'afterFind';
|
|
56
|
+
/**
|
|
57
|
+
* 钩子配置
|
|
58
|
+
*/
|
|
59
|
+
export type HooksConfig<T extends object = object> = {
|
|
60
|
+
[K in HookName]?: HookFn<T> | HookFn<T>[];
|
|
61
|
+
};
|
|
15
62
|
export interface AddDefinition<T = any> {
|
|
16
63
|
action: "add";
|
|
17
64
|
type: ColumnType;
|
|
@@ -33,6 +80,19 @@ export interface DropDefinition {
|
|
|
33
80
|
export type AlterDefinition<T extends object> = {
|
|
34
81
|
[P in keyof T]?: AddDefinition<T[P]> | ModifyDefinition<T[P]> | DropDefinition;
|
|
35
82
|
};
|
|
83
|
+
/**
|
|
84
|
+
* 子查询标识接口
|
|
85
|
+
* @template T 子查询返回的字段类型
|
|
86
|
+
*/
|
|
87
|
+
export interface Subquery<T = any> {
|
|
88
|
+
readonly __isSubquery: true;
|
|
89
|
+
/** 子查询返回值类型标记(仅用于类型推断,运行时不存在) */
|
|
90
|
+
readonly __returnType?: T;
|
|
91
|
+
toSQL(): {
|
|
92
|
+
sql: string;
|
|
93
|
+
params: any[];
|
|
94
|
+
};
|
|
95
|
+
}
|
|
36
96
|
export interface ComparisonOperators<T> {
|
|
37
97
|
$eq?: T;
|
|
38
98
|
$ne?: T;
|
|
@@ -40,8 +100,10 @@ export interface ComparisonOperators<T> {
|
|
|
40
100
|
$gte?: T;
|
|
41
101
|
$lt?: T;
|
|
42
102
|
$lte?: T;
|
|
43
|
-
|
|
44
|
-
$
|
|
103
|
+
/** 值在数组中或子查询结果中 */
|
|
104
|
+
$in?: T[] | Subquery<T>;
|
|
105
|
+
/** 值不在数组中或子查询结果中 */
|
|
106
|
+
$nin?: T[] | Subquery<T>;
|
|
45
107
|
$like?: string;
|
|
46
108
|
$nlike?: string;
|
|
47
109
|
}
|
|
@@ -58,49 +120,81 @@ export interface Ordering<T extends object> {
|
|
|
58
120
|
field: keyof T;
|
|
59
121
|
direction: SortDirection;
|
|
60
122
|
}
|
|
61
|
-
export
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
123
|
+
export type JoinType = 'INNER' | 'LEFT' | 'RIGHT' | 'FULL';
|
|
124
|
+
/**
|
|
125
|
+
* JOIN 子句定义
|
|
126
|
+
* @template S Schema 类型
|
|
127
|
+
* @template T 主表
|
|
128
|
+
* @template J 关联表
|
|
129
|
+
*/
|
|
130
|
+
export interface JoinClause<S extends Record<string, object>, T extends keyof S, J extends keyof S> {
|
|
131
|
+
/** JOIN 类型 */
|
|
132
|
+
type: JoinType;
|
|
133
|
+
/** 关联表名 */
|
|
134
|
+
table: J;
|
|
135
|
+
/** 主表字段 */
|
|
136
|
+
leftField: keyof S[T];
|
|
137
|
+
/** 关联表字段 */
|
|
138
|
+
rightField: keyof S[J];
|
|
139
|
+
/** 表别名(可选) */
|
|
140
|
+
alias?: string;
|
|
141
|
+
}
|
|
142
|
+
export interface BaseQueryParams<S extends Record<string, object> = Record<string, object>, T extends keyof S = keyof S> {
|
|
143
|
+
tableName: T;
|
|
144
|
+
}
|
|
145
|
+
export interface CreateQueryParams<S extends Record<string, object>, T extends keyof S> extends BaseQueryParams<S, T> {
|
|
65
146
|
type: 'create';
|
|
66
|
-
definition: Definition<T>;
|
|
147
|
+
definition: Definition<S[T]>;
|
|
67
148
|
}
|
|
68
|
-
export interface AlterQueryParams<
|
|
149
|
+
export interface AlterQueryParams<S extends Record<string, object>, T extends keyof S> extends BaseQueryParams<S, T> {
|
|
69
150
|
type: 'alter';
|
|
70
|
-
alterations: AlterDefinition<T>;
|
|
151
|
+
alterations: AlterDefinition<S[T]>;
|
|
71
152
|
}
|
|
72
|
-
export interface DropTableQueryParams<
|
|
153
|
+
export interface DropTableQueryParams<S extends Record<string, object>, T extends keyof S> extends BaseQueryParams<S, T> {
|
|
73
154
|
type: 'drop_table';
|
|
74
|
-
conditions?: Condition<T>;
|
|
155
|
+
conditions?: Condition<S[T]>;
|
|
75
156
|
}
|
|
76
|
-
export interface DropIndexQueryParams extends BaseQueryParams {
|
|
157
|
+
export interface DropIndexQueryParams<S extends Record<string, object>, T extends keyof S> extends BaseQueryParams<S, T> {
|
|
77
158
|
type: 'drop_index';
|
|
78
159
|
indexName: string;
|
|
79
160
|
conditions?: Condition<any>;
|
|
80
161
|
}
|
|
81
|
-
export interface SelectQueryParams<
|
|
162
|
+
export interface SelectQueryParams<S extends Record<string, object>, T extends keyof S> extends BaseQueryParams<S, T> {
|
|
82
163
|
type: 'select';
|
|
83
|
-
fields?: (keyof T)[];
|
|
84
|
-
conditions?: Condition<T>;
|
|
85
|
-
groupings?: (keyof T)[];
|
|
86
|
-
orderings?: Ordering<T>[];
|
|
164
|
+
fields?: (keyof S[T])[];
|
|
165
|
+
conditions?: Condition<S[T]>;
|
|
166
|
+
groupings?: (keyof S[T])[];
|
|
167
|
+
orderings?: Ordering<S[T]>[];
|
|
87
168
|
limitCount?: number;
|
|
88
169
|
offsetCount?: number;
|
|
170
|
+
/** JOIN 子句列表 */
|
|
171
|
+
joins?: JoinClause<S, T, keyof S>[];
|
|
89
172
|
}
|
|
90
|
-
export interface InsertQueryParams<
|
|
173
|
+
export interface InsertQueryParams<S extends Record<string, object>, T extends keyof S> extends BaseQueryParams<S, T> {
|
|
91
174
|
type: 'insert';
|
|
92
|
-
data: T;
|
|
175
|
+
data: S[T];
|
|
176
|
+
}
|
|
177
|
+
export interface InsertManyQueryParams<S extends Record<string, object>, T extends keyof S> extends BaseQueryParams<S, T> {
|
|
178
|
+
type: 'insert_many';
|
|
179
|
+
data: S[T][];
|
|
93
180
|
}
|
|
94
|
-
export interface UpdateQueryParams<
|
|
181
|
+
export interface UpdateQueryParams<S extends Record<string, object>, T extends keyof S> extends BaseQueryParams<S, T> {
|
|
95
182
|
type: 'update';
|
|
96
|
-
update: Partial<T>;
|
|
97
|
-
conditions?: Condition<T>;
|
|
183
|
+
update: Partial<S[T]>;
|
|
184
|
+
conditions?: Condition<S[T]>;
|
|
98
185
|
}
|
|
99
|
-
export interface DeleteQueryParams<
|
|
186
|
+
export interface DeleteQueryParams<S extends Record<string, object>, T extends keyof S> extends BaseQueryParams<S, T> {
|
|
100
187
|
type: 'delete';
|
|
101
|
-
conditions?: Condition<T>;
|
|
188
|
+
conditions?: Condition<S[T]>;
|
|
102
189
|
}
|
|
103
|
-
export
|
|
190
|
+
export interface AggregateQueryParams<S extends Record<string, object>, T extends keyof S> extends BaseQueryParams<S, T> {
|
|
191
|
+
type: 'aggregate';
|
|
192
|
+
aggregates: AggregateField<S[T]>[];
|
|
193
|
+
conditions?: Condition<S[T]>;
|
|
194
|
+
groupings?: (keyof S[T])[];
|
|
195
|
+
havingConditions?: Condition<S[T]>;
|
|
196
|
+
}
|
|
197
|
+
export type QueryParams<S extends Record<string, object>, T extends keyof S> = CreateQueryParams<S, T> | AlterQueryParams<S, T> | DropTableQueryParams<S, T> | DropIndexQueryParams<S, T> | SelectQueryParams<S, T> | InsertQueryParams<S, T> | InsertManyQueryParams<S, T> | UpdateQueryParams<S, T> | DeleteQueryParams<S, T> | AggregateQueryParams<S, T>;
|
|
104
198
|
export interface BuildQueryResult<R> {
|
|
105
199
|
query: R;
|
|
106
200
|
params: any[];
|
|
@@ -181,14 +275,79 @@ export interface BaseDriverConfig {
|
|
|
181
275
|
timeout?: number;
|
|
182
276
|
retries?: number;
|
|
183
277
|
}
|
|
184
|
-
export interface MemoryConfig {
|
|
185
|
-
}
|
|
186
278
|
export interface DriverConnection {
|
|
187
279
|
isConnected(): boolean;
|
|
188
280
|
connect(): Promise<void>;
|
|
189
281
|
disconnect(): Promise<void>;
|
|
190
282
|
healthCheck(): Promise<boolean>;
|
|
191
283
|
}
|
|
284
|
+
export type IsolationLevel = 'READ_UNCOMMITTED' | 'READ_COMMITTED' | 'REPEATABLE_READ' | 'SERIALIZABLE';
|
|
285
|
+
export interface TransactionOptions {
|
|
286
|
+
isolationLevel?: IsolationLevel;
|
|
287
|
+
timeout?: number;
|
|
288
|
+
}
|
|
289
|
+
export interface Transaction {
|
|
290
|
+
commit(): Promise<void>;
|
|
291
|
+
rollback(): Promise<void>;
|
|
292
|
+
query<T = any>(sql: string, params?: any[]): Promise<T>;
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* 增强的事务接口,支持链式调用
|
|
296
|
+
*/
|
|
297
|
+
export interface TransactionContext<S extends Record<string, object> = Record<string, object>> extends Transaction {
|
|
298
|
+
/**
|
|
299
|
+
* 插入单条数据
|
|
300
|
+
*/
|
|
301
|
+
insert<T extends keyof S>(tableName: T, data: S[T]): Promise<S[T]>;
|
|
302
|
+
/**
|
|
303
|
+
* 批量插入数据
|
|
304
|
+
*/
|
|
305
|
+
insertMany<T extends keyof S>(tableName: T, data: S[T][]): Promise<{
|
|
306
|
+
affectedRows: number;
|
|
307
|
+
}>;
|
|
308
|
+
/**
|
|
309
|
+
* 查询数据
|
|
310
|
+
*/
|
|
311
|
+
select<T extends keyof S>(tableName: T, fields?: (keyof S[T])[]): TransactionSelection<S, T>;
|
|
312
|
+
/**
|
|
313
|
+
* 更新数据
|
|
314
|
+
*/
|
|
315
|
+
update<T extends keyof S>(tableName: T, data: Partial<S[T]>): TransactionUpdation<S, T>;
|
|
316
|
+
/**
|
|
317
|
+
* 删除数据
|
|
318
|
+
*/
|
|
319
|
+
delete<T extends keyof S>(tableName: T): TransactionDeletion<S, T>;
|
|
320
|
+
}
|
|
321
|
+
/**
|
|
322
|
+
* 事务查询选择器
|
|
323
|
+
*/
|
|
324
|
+
export interface TransactionSelection<S extends Record<string, object>, T extends keyof S> {
|
|
325
|
+
where(condition: Condition<S[T]>): this;
|
|
326
|
+
orderBy(field: keyof S[T], direction?: 'ASC' | 'DESC'): this;
|
|
327
|
+
limit(count: number): this;
|
|
328
|
+
offset(count: number): this;
|
|
329
|
+
then<R>(onfulfilled?: (value: S[T][]) => R | PromiseLike<R>): Promise<R>;
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* 事务更新器
|
|
333
|
+
*/
|
|
334
|
+
export interface TransactionUpdation<S extends Record<string, object>, T extends keyof S> {
|
|
335
|
+
where(condition: Condition<S[T]>): this;
|
|
336
|
+
then<R>(onfulfilled?: (value: number) => R | PromiseLike<R>): Promise<R>;
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* 事务删除器
|
|
340
|
+
*/
|
|
341
|
+
export interface TransactionDeletion<S extends Record<string, object>, T extends keyof S> {
|
|
342
|
+
where(condition: Condition<S[T]>): this;
|
|
343
|
+
then<R>(onfulfilled?: (value: number) => R | PromiseLike<R>): Promise<R>;
|
|
344
|
+
}
|
|
345
|
+
export interface PoolConfig {
|
|
346
|
+
min?: number;
|
|
347
|
+
max?: number;
|
|
348
|
+
acquireTimeoutMillis?: number;
|
|
349
|
+
idleTimeoutMillis?: number;
|
|
350
|
+
}
|
|
192
351
|
export interface DriverQuery {
|
|
193
352
|
query<T = any>(sql: string, params?: any[]): Promise<T>;
|
|
194
353
|
}
|
|
@@ -197,7 +356,7 @@ export interface DriverSchema {
|
|
|
197
356
|
getTableInfo(tableName: string): Promise<TableInfo[]>;
|
|
198
357
|
}
|
|
199
358
|
export interface DriverQueryBuilder<R> {
|
|
200
|
-
buildQuery<
|
|
359
|
+
buildQuery<S extends Record<string, object>, T extends keyof S>(params: QueryParams<S, T>): BuildQueryResult<R>;
|
|
201
360
|
}
|
|
202
361
|
export interface DriverLifecycle {
|
|
203
362
|
dispose(): Promise<void>;
|
|
@@ -240,12 +399,291 @@ export type DeepPartial<T> = {
|
|
|
240
399
|
export type DeepRequired<T> = {
|
|
241
400
|
[P in keyof T]-?: T[P] extends object ? DeepRequired<T[P]> : T[P];
|
|
242
401
|
};
|
|
243
|
-
export declare function isCreateQuery<T extends
|
|
244
|
-
export declare function isAlterQuery<T extends
|
|
245
|
-
export declare function isSelectQuery<T extends
|
|
246
|
-
export declare function isInsertQuery<T extends
|
|
247
|
-
export declare function isUpdateQuery<T extends
|
|
248
|
-
export declare function isDeleteQuery<T extends
|
|
249
|
-
export declare function isDropTableQuery<T extends
|
|
250
|
-
export declare function isDropIndexQuery(params: QueryParams): params is DropIndexQueryParams
|
|
402
|
+
export declare function isCreateQuery<S extends Record<string, object>, T extends keyof S>(params: QueryParams<S, T>): params is CreateQueryParams<S, T>;
|
|
403
|
+
export declare function isAlterQuery<S extends Record<string, object>, T extends keyof S>(params: QueryParams<S, T>): params is AlterQueryParams<S, T>;
|
|
404
|
+
export declare function isSelectQuery<S extends Record<string, object>, T extends keyof S>(params: QueryParams<S, T>): params is SelectQueryParams<S, T>;
|
|
405
|
+
export declare function isInsertQuery<S extends Record<string, object>, T extends keyof S>(params: QueryParams<S, T>): params is InsertQueryParams<S, T>;
|
|
406
|
+
export declare function isUpdateQuery<S extends Record<string, object>, T extends keyof S>(params: QueryParams<S, T>): params is UpdateQueryParams<S, T>;
|
|
407
|
+
export declare function isDeleteQuery<S extends Record<string, object>, T extends keyof S>(params: QueryParams<S, T>): params is DeleteQueryParams<S, T>;
|
|
408
|
+
export declare function isDropTableQuery<S extends Record<string, object>, T extends keyof S>(params: QueryParams<S, T>): params is DropTableQueryParams<S, T>;
|
|
409
|
+
export declare function isDropIndexQuery<S extends Record<string, object>, T extends keyof S>(params: QueryParams<S, T>): params is DropIndexQueryParams<S, T>;
|
|
410
|
+
export declare function isInsertManyQuery<S extends Record<string, object>, T extends keyof S>(params: QueryParams<S, T>): params is InsertManyQueryParams<S, T>;
|
|
411
|
+
export declare function isAggregateQuery<S extends Record<string, object>, T extends keyof S>(params: QueryParams<S, T>): params is AggregateQueryParams<S, T>;
|
|
412
|
+
/**
|
|
413
|
+
* 关联关系类型
|
|
414
|
+
*/
|
|
415
|
+
export type RelationType = 'hasOne' | 'hasMany' | 'belongsTo' | 'belongsToMany';
|
|
416
|
+
/**
|
|
417
|
+
* Schema 中的关系声明
|
|
418
|
+
*
|
|
419
|
+
* @example
|
|
420
|
+
* ```ts
|
|
421
|
+
* interface MySchema {
|
|
422
|
+
* users: {
|
|
423
|
+
* id: number;
|
|
424
|
+
* name: string;
|
|
425
|
+
* $hasMany: { orders: 'userId' };
|
|
426
|
+
* $hasOne: { profile: 'userId' };
|
|
427
|
+
* };
|
|
428
|
+
* orders: {
|
|
429
|
+
* id: number;
|
|
430
|
+
* userId: number;
|
|
431
|
+
* $belongsTo: { users: 'userId' };
|
|
432
|
+
* };
|
|
433
|
+
* }
|
|
434
|
+
* ```
|
|
435
|
+
*/
|
|
436
|
+
export interface SchemaRelations<S extends Record<string, object>> {
|
|
437
|
+
/** 一对多关系: { 目标表名: '外键字段' } */
|
|
438
|
+
$hasMany?: {
|
|
439
|
+
[K in keyof S]?: string;
|
|
440
|
+
};
|
|
441
|
+
/** 一对一关系: { 目标表名: '外键字段' } */
|
|
442
|
+
$hasOne?: {
|
|
443
|
+
[K in keyof S]?: string;
|
|
444
|
+
};
|
|
445
|
+
/** 多对一关系: { 目标表名: '本表外键字段' } */
|
|
446
|
+
$belongsTo?: {
|
|
447
|
+
[K in keyof S]?: string;
|
|
448
|
+
};
|
|
449
|
+
}
|
|
450
|
+
/**
|
|
451
|
+
* 从 Schema 表定义中提取纯数据字段(排除关系声明)
|
|
452
|
+
*/
|
|
453
|
+
export type SchemaFields<T> = Omit<T, '$hasMany' | '$hasOne' | '$belongsTo'>;
|
|
454
|
+
/**
|
|
455
|
+
* 关联关系定义
|
|
456
|
+
*/
|
|
457
|
+
export interface RelationDefinition<S extends Record<string, object>, From extends keyof S, To extends keyof S> {
|
|
458
|
+
/** 关联类型 */
|
|
459
|
+
type: RelationType;
|
|
460
|
+
/** 目标表名 */
|
|
461
|
+
target: To;
|
|
462
|
+
/** 本表外键字段 */
|
|
463
|
+
foreignKey: keyof S[From] | keyof S[To];
|
|
464
|
+
/** 目标表主键字段(默认 'id') */
|
|
465
|
+
targetKey?: keyof S[To];
|
|
466
|
+
/** 本表主键字段(默认 'id') */
|
|
467
|
+
localKey?: keyof S[From];
|
|
468
|
+
/** 中间表配置(仅 belongsToMany) */
|
|
469
|
+
pivot?: PivotConfig;
|
|
470
|
+
}
|
|
471
|
+
/**
|
|
472
|
+
* 中间表(Pivot Table)配置
|
|
473
|
+
* 用于多对多关系
|
|
474
|
+
*/
|
|
475
|
+
export interface PivotConfig {
|
|
476
|
+
/** 中间表名 */
|
|
477
|
+
table: string;
|
|
478
|
+
/** 中间表中指向源表的外键 */
|
|
479
|
+
foreignPivotKey: string;
|
|
480
|
+
/** 中间表中指向目标表的外键 */
|
|
481
|
+
relatedPivotKey: string;
|
|
482
|
+
/** 中间表额外字段(可选) */
|
|
483
|
+
pivotFields?: string[];
|
|
484
|
+
/** 是否包含时间戳 */
|
|
485
|
+
timestamps?: boolean;
|
|
486
|
+
}
|
|
487
|
+
/**
|
|
488
|
+
* 带关联数据的结果类型
|
|
489
|
+
*/
|
|
490
|
+
export type WithRelation<T extends object, RelName extends string, RelType extends 'hasOne' | 'belongsTo' | 'hasMany' | 'belongsToMany', RelData extends object> = T & {
|
|
491
|
+
[K in RelName]: RelType extends ('hasMany' | 'belongsToMany') ? RelData[] : RelData | null;
|
|
492
|
+
};
|
|
493
|
+
/**
|
|
494
|
+
* 带中间表数据的关联结果
|
|
495
|
+
*/
|
|
496
|
+
export type WithPivot<T extends object, PivotData extends object = Record<string, any>> = T & {
|
|
497
|
+
pivot: PivotData;
|
|
498
|
+
};
|
|
499
|
+
/**
|
|
500
|
+
* 关联查询选项
|
|
501
|
+
*/
|
|
502
|
+
export interface RelationQueryOptions<S extends Record<string, object>, T extends keyof S> {
|
|
503
|
+
/** 要加载的关联名称 */
|
|
504
|
+
relations?: string[];
|
|
505
|
+
/** 关联数据的筛选条件 */
|
|
506
|
+
where?: Condition<S[T]>;
|
|
507
|
+
}
|
|
508
|
+
/**
|
|
509
|
+
* 关系配置中的外键字段类型
|
|
510
|
+
* 表名是强类型的,字段名是 string(运行时验证)
|
|
511
|
+
*/
|
|
512
|
+
export type RelationForeignKey = string;
|
|
513
|
+
/**
|
|
514
|
+
* hasMany 关系配置:{ 目标表名: 外键字段名 }
|
|
515
|
+
*/
|
|
516
|
+
export type HasManyConfig<S extends Record<string, object>> = {
|
|
517
|
+
[K in Extract<keyof S, string>]?: RelationForeignKey;
|
|
518
|
+
};
|
|
519
|
+
/**
|
|
520
|
+
* hasOne 关系配置:{ 目标表名: 外键字段名 }
|
|
521
|
+
*/
|
|
522
|
+
export type HasOneConfig<S extends Record<string, object>> = {
|
|
523
|
+
[K in Extract<keyof S, string>]?: RelationForeignKey;
|
|
524
|
+
};
|
|
525
|
+
/**
|
|
526
|
+
* belongsTo 关系配置:{ 目标表名: 本表外键字段名 }
|
|
527
|
+
*/
|
|
528
|
+
export type BelongsToConfig<S extends Record<string, object>> = {
|
|
529
|
+
[K in Extract<keyof S, string>]?: RelationForeignKey;
|
|
530
|
+
};
|
|
531
|
+
/**
|
|
532
|
+
* belongsToMany 关系配置
|
|
533
|
+
* { 目标表名: { pivot: 中间表名, foreignKey: 源外键, relatedKey: 目标外键, pivotFields?: 额外字段 } }
|
|
534
|
+
*/
|
|
535
|
+
export interface BelongsToManyRelationConfig {
|
|
536
|
+
/** 中间表名 */
|
|
537
|
+
pivot: string;
|
|
538
|
+
/** 中间表中指向源表的外键 */
|
|
539
|
+
foreignKey: string;
|
|
540
|
+
/** 中间表中指向目标表的外键 */
|
|
541
|
+
relatedKey: string;
|
|
542
|
+
/** 要获取的中间表额外字段 */
|
|
543
|
+
pivotFields?: string[];
|
|
544
|
+
}
|
|
545
|
+
export type BelongsToManyConfig<S extends Record<string, object>> = {
|
|
546
|
+
[K in Extract<keyof S, string>]?: BelongsToManyRelationConfig;
|
|
547
|
+
};
|
|
548
|
+
/**
|
|
549
|
+
* 单个表的关系配置
|
|
550
|
+
*/
|
|
551
|
+
export interface TableRelationsConfig<S extends Record<string, object>> {
|
|
552
|
+
hasMany?: HasManyConfig<S>;
|
|
553
|
+
hasOne?: HasOneConfig<S>;
|
|
554
|
+
belongsTo?: BelongsToConfig<S>;
|
|
555
|
+
belongsToMany?: BelongsToManyConfig<S>;
|
|
556
|
+
}
|
|
557
|
+
/**
|
|
558
|
+
* 关系配置对象(用于 Database 构造)
|
|
559
|
+
*
|
|
560
|
+
* 表名是强类型的(必须是 Schema 中定义的表),
|
|
561
|
+
* 字段名是字符串(在运行时通过模型方法验证)
|
|
562
|
+
*
|
|
563
|
+
* @example
|
|
564
|
+
* ```ts
|
|
565
|
+
* interface Schema {
|
|
566
|
+
* users: { id: number; name: string };
|
|
567
|
+
* orders: { id: number; userId: number };
|
|
568
|
+
* }
|
|
569
|
+
*
|
|
570
|
+
* db.defineRelations({
|
|
571
|
+
* users: {
|
|
572
|
+
* hasMany: { orders: 'userId' } // ✅ 'orders' 是有效表名
|
|
573
|
+
* },
|
|
574
|
+
* orders: {
|
|
575
|
+
* belongsTo: { users: 'userId' } // ✅ 'users' 是有效表名
|
|
576
|
+
* },
|
|
577
|
+
* // wrongTable: {} // ❌ 类型错误:'wrongTable' 不在 Schema 中
|
|
578
|
+
* });
|
|
579
|
+
* ```
|
|
580
|
+
*/
|
|
581
|
+
export type RelationsConfig<S extends Record<string, object>> = {
|
|
582
|
+
[T in Extract<keyof S, string>]?: TableRelationsConfig<S>;
|
|
583
|
+
};
|
|
584
|
+
/**
|
|
585
|
+
* 迁移上下文 - 提供迁移操作所需的数据库方法
|
|
586
|
+
*/
|
|
587
|
+
export interface MigrationContext {
|
|
588
|
+
/** 创建表 */
|
|
589
|
+
createTable(tableName: string, columns: Record<string, Column>): Promise<void>;
|
|
590
|
+
/** 删除表 */
|
|
591
|
+
dropTable(tableName: string): Promise<void>;
|
|
592
|
+
/** 添加列 */
|
|
593
|
+
addColumn(tableName: string, columnName: string, column: Column): Promise<void>;
|
|
594
|
+
/** 删除列 */
|
|
595
|
+
dropColumn(tableName: string, columnName: string): Promise<void>;
|
|
596
|
+
/** 修改列 */
|
|
597
|
+
modifyColumn(tableName: string, columnName: string, column: Column): Promise<void>;
|
|
598
|
+
/** 重命名列 */
|
|
599
|
+
renameColumn(tableName: string, oldName: string, newName: string): Promise<void>;
|
|
600
|
+
/** 添加索引 */
|
|
601
|
+
addIndex(tableName: string, indexName: string, columns: string[], unique?: boolean): Promise<void>;
|
|
602
|
+
/** 删除索引 */
|
|
603
|
+
dropIndex(tableName: string, indexName: string): Promise<void>;
|
|
604
|
+
/** 执行原生 SQL */
|
|
605
|
+
query<T = any>(sql: string, params?: any[]): Promise<T>;
|
|
606
|
+
}
|
|
607
|
+
/**
|
|
608
|
+
* 迁移定义
|
|
609
|
+
*/
|
|
610
|
+
/**
|
|
611
|
+
* 迁移操作记录(用于自动生成 down)
|
|
612
|
+
*/
|
|
613
|
+
export type MigrationOperation = {
|
|
614
|
+
type: 'createTable';
|
|
615
|
+
tableName: string;
|
|
616
|
+
columns: Record<string, Column>;
|
|
617
|
+
} | {
|
|
618
|
+
type: 'dropTable';
|
|
619
|
+
tableName: string;
|
|
620
|
+
} | {
|
|
621
|
+
type: 'addColumn';
|
|
622
|
+
tableName: string;
|
|
623
|
+
columnName: string;
|
|
624
|
+
column: Column;
|
|
625
|
+
} | {
|
|
626
|
+
type: 'dropColumn';
|
|
627
|
+
tableName: string;
|
|
628
|
+
columnName: string;
|
|
629
|
+
} | {
|
|
630
|
+
type: 'addIndex';
|
|
631
|
+
tableName: string;
|
|
632
|
+
indexName: string;
|
|
633
|
+
columns: string[];
|
|
634
|
+
unique?: boolean;
|
|
635
|
+
} | {
|
|
636
|
+
type: 'dropIndex';
|
|
637
|
+
tableName: string;
|
|
638
|
+
indexName: string;
|
|
639
|
+
} | {
|
|
640
|
+
type: 'renameColumn';
|
|
641
|
+
tableName: string;
|
|
642
|
+
oldName: string;
|
|
643
|
+
newName: string;
|
|
644
|
+
} | {
|
|
645
|
+
type: 'query';
|
|
646
|
+
sql: string;
|
|
647
|
+
params?: any[];
|
|
648
|
+
};
|
|
649
|
+
export interface Migration {
|
|
650
|
+
/** 迁移名称(唯一标识) */
|
|
651
|
+
name: string;
|
|
652
|
+
/** 迁移版本(时间戳或序号) */
|
|
653
|
+
version?: string | number;
|
|
654
|
+
/** 升级操作 */
|
|
655
|
+
up(context: MigrationContext): Promise<void>;
|
|
656
|
+
/**
|
|
657
|
+
* 降级操作(可选)
|
|
658
|
+
* 如果不提供,将自动根据 up 操作生成反向操作
|
|
659
|
+
*/
|
|
660
|
+
down?(context: MigrationContext): Promise<void>;
|
|
661
|
+
}
|
|
662
|
+
/**
|
|
663
|
+
* 迁移记录(存储在数据库中)
|
|
664
|
+
*/
|
|
665
|
+
export interface MigrationRecord {
|
|
666
|
+
id: number;
|
|
667
|
+
name: string;
|
|
668
|
+
batch: number;
|
|
669
|
+
executedAt: Date;
|
|
670
|
+
}
|
|
671
|
+
/**
|
|
672
|
+
* 迁移状态
|
|
673
|
+
*/
|
|
674
|
+
export interface MigrationStatus {
|
|
675
|
+
name: string;
|
|
676
|
+
status: 'pending' | 'executed';
|
|
677
|
+
batch?: number;
|
|
678
|
+
executedAt?: Date;
|
|
679
|
+
}
|
|
680
|
+
/**
|
|
681
|
+
* 迁移运行器配置
|
|
682
|
+
*/
|
|
683
|
+
export interface MigrationRunnerConfig {
|
|
684
|
+
/** 迁移记录表名 */
|
|
685
|
+
tableName?: string;
|
|
686
|
+
/** 迁移文件目录 */
|
|
687
|
+
migrationsPath?: string;
|
|
688
|
+
}
|
|
251
689
|
//# sourceMappingURL=types.d.ts.map
|