@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,13 +1,43 @@
|
|
|
1
1
|
import { Database } from '../../base/index.js';
|
|
2
2
|
import { RelatedModel } from './model.js';
|
|
3
|
-
import { isCreateQuery, isSelectQuery, isInsertQuery, isUpdateQuery, isDeleteQuery, isAlterQuery, isDropTableQuery, isDropIndexQuery, } from '../../types.js';
|
|
3
|
+
import { isCreateQuery, isSelectQuery, isInsertQuery, isInsertManyQuery, isUpdateQuery, isDeleteQuery, isAlterQuery, isDropTableQuery, isDropIndexQuery, isAggregateQuery, } from '../../types.js';
|
|
4
|
+
/**
|
|
5
|
+
* 判断是否为子查询对象
|
|
6
|
+
*/
|
|
7
|
+
function isSubquery(value) {
|
|
8
|
+
return value && typeof value === 'object' && value.__isSubquery === true;
|
|
9
|
+
}
|
|
4
10
|
/**
|
|
5
11
|
* 关系型数据库类
|
|
6
12
|
* 支持表、行、列的关系型数据模型
|
|
7
13
|
*/
|
|
8
14
|
export class RelatedDatabase extends Database {
|
|
9
|
-
|
|
15
|
+
/** 关系配置 */
|
|
16
|
+
relationsConfig;
|
|
17
|
+
constructor(dialect, definitions, relations) {
|
|
10
18
|
super(dialect, definitions);
|
|
19
|
+
this.relationsConfig = relations;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* 设置关系配置
|
|
23
|
+
* @example
|
|
24
|
+
* ```ts
|
|
25
|
+
* db.defineRelations({
|
|
26
|
+
* users: {
|
|
27
|
+
* hasMany: { orders: 'userId' },
|
|
28
|
+
* hasOne: { profile: 'userId' }
|
|
29
|
+
* },
|
|
30
|
+
* orders: {
|
|
31
|
+
* belongsTo: { users: 'userId' }
|
|
32
|
+
* }
|
|
33
|
+
* });
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
defineRelations(config) {
|
|
37
|
+
this.relationsConfig = config;
|
|
38
|
+
// 清除模型缓存,以便重新应用关系
|
|
39
|
+
this.models.clear();
|
|
40
|
+
return this;
|
|
11
41
|
}
|
|
12
42
|
async initialize() {
|
|
13
43
|
// 自动创建表
|
|
@@ -26,6 +56,9 @@ export class RelatedDatabase extends Database {
|
|
|
26
56
|
else if (isInsertQuery(params)) {
|
|
27
57
|
return this.buildInsertQuery(params);
|
|
28
58
|
}
|
|
59
|
+
else if (isInsertManyQuery(params)) {
|
|
60
|
+
return this.buildInsertManyQuery(params);
|
|
61
|
+
}
|
|
29
62
|
else if (isUpdateQuery(params)) {
|
|
30
63
|
return this.buildUpdateQuery(params);
|
|
31
64
|
}
|
|
@@ -41,6 +74,9 @@ export class RelatedDatabase extends Database {
|
|
|
41
74
|
else if (isDropIndexQuery(params)) {
|
|
42
75
|
return this.buildDropIndexQuery(params);
|
|
43
76
|
}
|
|
77
|
+
else if (isAggregateQuery(params)) {
|
|
78
|
+
return this.buildAggregateQuery(params);
|
|
79
|
+
}
|
|
44
80
|
else {
|
|
45
81
|
throw new Error(`Unsupported query type: ${params.type}`);
|
|
46
82
|
}
|
|
@@ -57,14 +93,28 @@ export class RelatedDatabase extends Database {
|
|
|
57
93
|
// SELECT Query
|
|
58
94
|
// ========================================================================
|
|
59
95
|
buildSelectQuery(params) {
|
|
96
|
+
const tableName = String(params.tableName);
|
|
97
|
+
const hasJoins = params.joins && params.joins.length > 0;
|
|
98
|
+
// 构建字段列表(有 JOIN 时需要加表名前缀)
|
|
60
99
|
const fields = params.fields && params.fields.length
|
|
61
|
-
? params.fields.map(f =>
|
|
62
|
-
|
|
63
|
-
|
|
100
|
+
? params.fields.map(f => {
|
|
101
|
+
const fieldName = this.dialect.quoteIdentifier(String(f));
|
|
102
|
+
return hasJoins
|
|
103
|
+
? `${this.dialect.quoteIdentifier(tableName)}.${fieldName}`
|
|
104
|
+
: fieldName;
|
|
105
|
+
}).join(', ')
|
|
106
|
+
: hasJoins ? `${this.dialect.quoteIdentifier(tableName)}.*` : '*';
|
|
107
|
+
let query = `SELECT ${fields} FROM ${this.dialect.quoteIdentifier(tableName)}`;
|
|
64
108
|
const queryParams = [];
|
|
109
|
+
// JOIN clauses
|
|
110
|
+
if (hasJoins) {
|
|
111
|
+
for (const join of params.joins) {
|
|
112
|
+
query += ` ${this.formatJoinClause(tableName, join)}`;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
65
115
|
// WHERE clause
|
|
66
116
|
if (params.conditions) {
|
|
67
|
-
const [condition, conditionParams] = this.parseCondition(params.conditions);
|
|
117
|
+
const [condition, conditionParams] = this.parseCondition(params.conditions, hasJoins ? tableName : undefined);
|
|
68
118
|
if (condition) {
|
|
69
119
|
query += ` WHERE ${condition}`;
|
|
70
120
|
queryParams.push(...conditionParams);
|
|
@@ -72,13 +122,24 @@ export class RelatedDatabase extends Database {
|
|
|
72
122
|
}
|
|
73
123
|
// GROUP BY clause
|
|
74
124
|
if (params.groupings && params.groupings.length) {
|
|
75
|
-
const groupings = params.groupings.map(f =>
|
|
125
|
+
const groupings = params.groupings.map(f => {
|
|
126
|
+
const fieldName = this.dialect.quoteIdentifier(String(f));
|
|
127
|
+
return hasJoins
|
|
128
|
+
? `${this.dialect.quoteIdentifier(tableName)}.${fieldName}`
|
|
129
|
+
: fieldName;
|
|
130
|
+
}).join(', ');
|
|
76
131
|
query += ` GROUP BY ${groupings}`;
|
|
77
132
|
}
|
|
78
133
|
// ORDER BY clause
|
|
79
134
|
if (params.orderings && params.orderings.length) {
|
|
80
135
|
const orderings = params.orderings
|
|
81
|
-
.map(o =>
|
|
136
|
+
.map(o => {
|
|
137
|
+
const fieldName = this.dialect.quoteIdentifier(String(o.field));
|
|
138
|
+
const fullField = hasJoins
|
|
139
|
+
? `${this.dialect.quoteIdentifier(tableName)}.${fieldName}`
|
|
140
|
+
: fieldName;
|
|
141
|
+
return `${fullField} ${o.direction}`;
|
|
142
|
+
})
|
|
82
143
|
.join(', ');
|
|
83
144
|
query += ` ORDER BY ${orderings}`;
|
|
84
145
|
}
|
|
@@ -94,6 +155,15 @@ export class RelatedDatabase extends Database {
|
|
|
94
155
|
}
|
|
95
156
|
return { query, params: queryParams };
|
|
96
157
|
}
|
|
158
|
+
/**
|
|
159
|
+
* 格式化 JOIN 子句
|
|
160
|
+
*/
|
|
161
|
+
formatJoinClause(mainTable, join) {
|
|
162
|
+
const joinTable = this.dialect.quoteIdentifier(String(join.table));
|
|
163
|
+
const leftField = `${this.dialect.quoteIdentifier(mainTable)}.${this.dialect.quoteIdentifier(String(join.leftField))}`;
|
|
164
|
+
const rightField = `${joinTable}.${this.dialect.quoteIdentifier(String(join.rightField))}`;
|
|
165
|
+
return `${join.type} JOIN ${joinTable} ON ${leftField} = ${rightField}`;
|
|
166
|
+
}
|
|
97
167
|
// ========================================================================
|
|
98
168
|
// INSERT Query
|
|
99
169
|
// ========================================================================
|
|
@@ -102,10 +172,33 @@ export class RelatedDatabase extends Database {
|
|
|
102
172
|
const columns = keys.map(k => this.dialect.quoteIdentifier(k)).join(', ');
|
|
103
173
|
const placeholders = keys.map((_, index) => this.dialect.getParameterPlaceholder(index)).join(', ');
|
|
104
174
|
const query = `INSERT INTO ${this.dialect.quoteIdentifier(params.tableName)} (${columns}) VALUES (${placeholders})`;
|
|
105
|
-
|
|
175
|
+
// 直接传值,不要格式化(参数化查询由驱动处理)
|
|
176
|
+
const values = Object.values(params.data);
|
|
106
177
|
return { query, params: values };
|
|
107
178
|
}
|
|
108
179
|
// ========================================================================
|
|
180
|
+
// INSERT MANY Query (Batch Insert)
|
|
181
|
+
// ========================================================================
|
|
182
|
+
buildInsertManyQuery(params) {
|
|
183
|
+
if (!params.data.length) {
|
|
184
|
+
throw new Error('Cannot insert empty array');
|
|
185
|
+
}
|
|
186
|
+
const keys = Object.keys(params.data[0]);
|
|
187
|
+
const columns = keys.map(k => this.dialect.quoteIdentifier(k)).join(', ');
|
|
188
|
+
const allValues = [];
|
|
189
|
+
const valueRows = [];
|
|
190
|
+
params.data.forEach((row, rowIndex) => {
|
|
191
|
+
const placeholders = keys.map((_, colIndex) => this.dialect.getParameterPlaceholder(rowIndex * keys.length + colIndex)).join(', ');
|
|
192
|
+
valueRows.push(`(${placeholders})`);
|
|
193
|
+
keys.forEach(key => {
|
|
194
|
+
// 直接传值,不要格式化(参数化查询由驱动处理)
|
|
195
|
+
allValues.push(row[key]);
|
|
196
|
+
});
|
|
197
|
+
});
|
|
198
|
+
const query = `INSERT INTO ${this.dialect.quoteIdentifier(params.tableName)} (${columns}) VALUES ${valueRows.join(', ')}`;
|
|
199
|
+
return { query, params: allValues };
|
|
200
|
+
}
|
|
201
|
+
// ========================================================================
|
|
109
202
|
// UPDATE Query
|
|
110
203
|
// ========================================================================
|
|
111
204
|
buildUpdateQuery(params) {
|
|
@@ -164,6 +257,50 @@ export class RelatedDatabase extends Database {
|
|
|
164
257
|
return { query, params: [] };
|
|
165
258
|
}
|
|
166
259
|
// ========================================================================
|
|
260
|
+
// AGGREGATE Query
|
|
261
|
+
// ========================================================================
|
|
262
|
+
buildAggregateQuery(params) {
|
|
263
|
+
if (!params.aggregates.length) {
|
|
264
|
+
throw new Error('At least one aggregate function is required');
|
|
265
|
+
}
|
|
266
|
+
// Build SELECT fields with aggregate functions
|
|
267
|
+
const selectFields = [];
|
|
268
|
+
// Add grouping fields to select
|
|
269
|
+
if (params.groupings && params.groupings.length) {
|
|
270
|
+
params.groupings.forEach(field => {
|
|
271
|
+
selectFields.push(this.dialect.quoteIdentifier(String(field)));
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
// Add aggregate functions
|
|
275
|
+
params.aggregates.forEach(agg => {
|
|
276
|
+
selectFields.push(this.dialect.formatAggregate(agg.fn, String(agg.field), agg.alias));
|
|
277
|
+
});
|
|
278
|
+
let query = `SELECT ${selectFields.join(', ')} FROM ${this.dialect.quoteIdentifier(params.tableName)}`;
|
|
279
|
+
const queryParams = [];
|
|
280
|
+
// WHERE clause
|
|
281
|
+
if (params.conditions) {
|
|
282
|
+
const [condition, conditionParams] = this.parseCondition(params.conditions);
|
|
283
|
+
if (condition) {
|
|
284
|
+
query += ` WHERE ${condition}`;
|
|
285
|
+
queryParams.push(...conditionParams);
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
// GROUP BY clause
|
|
289
|
+
if (params.groupings && params.groupings.length) {
|
|
290
|
+
const groupings = params.groupings.map(f => this.dialect.quoteIdentifier(String(f))).join(', ');
|
|
291
|
+
query += ` GROUP BY ${groupings}`;
|
|
292
|
+
}
|
|
293
|
+
// HAVING clause
|
|
294
|
+
if (params.havingConditions && Object.keys(params.havingConditions).length) {
|
|
295
|
+
const [havingCondition, havingParams] = this.parseCondition(params.havingConditions);
|
|
296
|
+
if (havingCondition) {
|
|
297
|
+
query += ` HAVING ${havingCondition}`;
|
|
298
|
+
queryParams.push(...havingParams);
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
return { query, params: queryParams };
|
|
302
|
+
}
|
|
303
|
+
// ========================================================================
|
|
167
304
|
// Helper Methods
|
|
168
305
|
// ========================================================================
|
|
169
306
|
formatColumnDefinition(field, column) {
|
|
@@ -207,14 +344,26 @@ export class RelatedDatabase extends Database {
|
|
|
207
344
|
throw new Error(`Unsupported alteration action`);
|
|
208
345
|
}
|
|
209
346
|
}
|
|
210
|
-
|
|
347
|
+
/**
|
|
348
|
+
* 解析条件对象为 SQL WHERE 子句
|
|
349
|
+
* @param condition 条件对象
|
|
350
|
+
* @param tablePrefix 表名前缀(用于 JOIN 查询)
|
|
351
|
+
*/
|
|
352
|
+
parseCondition(condition, tablePrefix) {
|
|
211
353
|
const clauses = [];
|
|
212
354
|
const params = [];
|
|
355
|
+
// 辅助函数:生成带前缀的字段名
|
|
356
|
+
const formatField = (field) => {
|
|
357
|
+
const quotedField = this.dialect.quoteIdentifier(field);
|
|
358
|
+
return tablePrefix
|
|
359
|
+
? `${this.dialect.quoteIdentifier(tablePrefix)}.${quotedField}`
|
|
360
|
+
: quotedField;
|
|
361
|
+
};
|
|
213
362
|
for (const key in condition) {
|
|
214
363
|
if (key === '$and' && Array.isArray(condition.$and)) {
|
|
215
364
|
const subClauses = [];
|
|
216
365
|
for (const subCondition of condition.$and) {
|
|
217
|
-
const [subClause, subParams] = this.parseCondition(subCondition);
|
|
366
|
+
const [subClause, subParams] = this.parseCondition(subCondition, tablePrefix);
|
|
218
367
|
if (subClause) {
|
|
219
368
|
subClauses.push(`(${subClause})`);
|
|
220
369
|
params.push(...subParams);
|
|
@@ -227,7 +376,7 @@ export class RelatedDatabase extends Database {
|
|
|
227
376
|
else if (key === '$or' && Array.isArray(condition.$or)) {
|
|
228
377
|
const subClauses = [];
|
|
229
378
|
for (const subCondition of condition.$or) {
|
|
230
|
-
const [subClause, subParams] = this.parseCondition(subCondition);
|
|
379
|
+
const [subClause, subParams] = this.parseCondition(subCondition, tablePrefix);
|
|
231
380
|
if (subClause) {
|
|
232
381
|
subClauses.push(`(${subClause})`);
|
|
233
382
|
params.push(...subParams);
|
|
@@ -238,7 +387,7 @@ export class RelatedDatabase extends Database {
|
|
|
238
387
|
}
|
|
239
388
|
}
|
|
240
389
|
else if (key === '$not' && condition.$not) {
|
|
241
|
-
const [subClause, subParams] = this.parseCondition(condition.$not);
|
|
390
|
+
const [subClause, subParams] = this.parseCondition(condition.$not, tablePrefix);
|
|
242
391
|
if (subClause) {
|
|
243
392
|
clauses.push(`NOT (${subClause})`);
|
|
244
393
|
params.push(...subParams);
|
|
@@ -248,16 +397,26 @@ export class RelatedDatabase extends Database {
|
|
|
248
397
|
const value = condition[key];
|
|
249
398
|
if (value && typeof value === 'object' && !Array.isArray(value)) {
|
|
250
399
|
for (const op in value) {
|
|
251
|
-
const quotedKey =
|
|
400
|
+
const quotedKey = formatField(key);
|
|
252
401
|
const placeholder = this.dialect.getParameterPlaceholder(params.length);
|
|
253
402
|
switch (op) {
|
|
254
403
|
case '$eq':
|
|
255
|
-
|
|
256
|
-
|
|
404
|
+
if (value[op] === null) {
|
|
405
|
+
clauses.push(`${quotedKey} IS NULL`);
|
|
406
|
+
}
|
|
407
|
+
else {
|
|
408
|
+
clauses.push(`${quotedKey} = ${placeholder}`);
|
|
409
|
+
params.push(value[op]);
|
|
410
|
+
}
|
|
257
411
|
break;
|
|
258
412
|
case '$ne':
|
|
259
|
-
|
|
260
|
-
|
|
413
|
+
if (value[op] === null) {
|
|
414
|
+
clauses.push(`${quotedKey} IS NOT NULL`);
|
|
415
|
+
}
|
|
416
|
+
else {
|
|
417
|
+
clauses.push(`${quotedKey} <> ${placeholder}`);
|
|
418
|
+
params.push(value[op]);
|
|
419
|
+
}
|
|
261
420
|
break;
|
|
262
421
|
case '$gt':
|
|
263
422
|
clauses.push(`${quotedKey} > ${placeholder}`);
|
|
@@ -276,8 +435,14 @@ export class RelatedDatabase extends Database {
|
|
|
276
435
|
params.push(value[op]);
|
|
277
436
|
break;
|
|
278
437
|
case '$in':
|
|
279
|
-
if (
|
|
280
|
-
|
|
438
|
+
if (isSubquery(value[op])) {
|
|
439
|
+
// 子查询
|
|
440
|
+
const subquery = value[op].toSQL();
|
|
441
|
+
clauses.push(`${quotedKey} IN (${subquery.sql})`);
|
|
442
|
+
params.push(...subquery.params);
|
|
443
|
+
}
|
|
444
|
+
else if (Array.isArray(value[op]) && value[op].length) {
|
|
445
|
+
const placeholders = value[op].map((_, i) => this.dialect.getParameterPlaceholder(params.length + i));
|
|
281
446
|
clauses.push(`${quotedKey} IN (${placeholders.join(', ')})`);
|
|
282
447
|
params.push(...value[op]);
|
|
283
448
|
}
|
|
@@ -286,8 +451,14 @@ export class RelatedDatabase extends Database {
|
|
|
286
451
|
}
|
|
287
452
|
break;
|
|
288
453
|
case '$nin':
|
|
289
|
-
if (
|
|
290
|
-
|
|
454
|
+
if (isSubquery(value[op])) {
|
|
455
|
+
// 子查询
|
|
456
|
+
const subquery = value[op].toSQL();
|
|
457
|
+
clauses.push(`${quotedKey} NOT IN (${subquery.sql})`);
|
|
458
|
+
params.push(...subquery.params);
|
|
459
|
+
}
|
|
460
|
+
else if (Array.isArray(value[op]) && value[op].length) {
|
|
461
|
+
const placeholders = value[op].map((_, i) => this.dialect.getParameterPlaceholder(params.length + i));
|
|
291
462
|
clauses.push(`${quotedKey} NOT IN (${placeholders.join(', ')})`);
|
|
292
463
|
params.push(...value[op]);
|
|
293
464
|
}
|
|
@@ -304,10 +475,16 @@ export class RelatedDatabase extends Database {
|
|
|
304
475
|
}
|
|
305
476
|
}
|
|
306
477
|
else {
|
|
307
|
-
const quotedKey =
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
478
|
+
const quotedKey = formatField(key);
|
|
479
|
+
// null 值使用 IS NULL / IS NOT NULL
|
|
480
|
+
if (value === null) {
|
|
481
|
+
clauses.push(`${quotedKey} IS NULL`);
|
|
482
|
+
}
|
|
483
|
+
else {
|
|
484
|
+
const placeholder = this.dialect.getParameterPlaceholder(params.length);
|
|
485
|
+
clauses.push(`${quotedKey} = ${placeholder}`);
|
|
486
|
+
params.push(value);
|
|
487
|
+
}
|
|
311
488
|
}
|
|
312
489
|
}
|
|
313
490
|
}
|
|
@@ -315,15 +492,69 @@ export class RelatedDatabase extends Database {
|
|
|
315
492
|
}
|
|
316
493
|
/**
|
|
317
494
|
* 获取模型
|
|
495
|
+
* @param name 模型名称
|
|
496
|
+
* @param options 可选的模型选项(如 softDelete, timestamps)
|
|
318
497
|
*/
|
|
319
|
-
model(name) {
|
|
498
|
+
model(name, options) {
|
|
499
|
+
// 如果有 options,每次都创建新的实例(因为选项可能不同)
|
|
500
|
+
if (options) {
|
|
501
|
+
const model = new RelatedModel(this, name, options);
|
|
502
|
+
this.applyRelationsToModel(model, name);
|
|
503
|
+
return model;
|
|
504
|
+
}
|
|
505
|
+
// 无选项时使用缓存
|
|
320
506
|
let model = this.models.get(name);
|
|
321
507
|
if (!model) {
|
|
322
508
|
model = new RelatedModel(this, name);
|
|
509
|
+
this.applyRelationsToModel(model, name);
|
|
323
510
|
this.models.set(name, model);
|
|
324
511
|
}
|
|
325
512
|
return model;
|
|
326
513
|
}
|
|
514
|
+
/**
|
|
515
|
+
* 应用关系配置到模型
|
|
516
|
+
*/
|
|
517
|
+
applyRelationsToModel(model, tableName) {
|
|
518
|
+
const tableConfig = this.relationsConfig?.[String(tableName)];
|
|
519
|
+
if (!tableConfig)
|
|
520
|
+
return;
|
|
521
|
+
// 应用 hasMany 关系
|
|
522
|
+
if (tableConfig.hasMany) {
|
|
523
|
+
for (const [target, foreignKey] of Object.entries(tableConfig.hasMany)) {
|
|
524
|
+
if (foreignKey) {
|
|
525
|
+
const targetModel = new RelatedModel(this, target);
|
|
526
|
+
model.hasMany(targetModel, foreignKey);
|
|
527
|
+
}
|
|
528
|
+
}
|
|
529
|
+
}
|
|
530
|
+
// 应用 hasOne 关系
|
|
531
|
+
if (tableConfig.hasOne) {
|
|
532
|
+
for (const [target, foreignKey] of Object.entries(tableConfig.hasOne)) {
|
|
533
|
+
if (foreignKey) {
|
|
534
|
+
const targetModel = new RelatedModel(this, target);
|
|
535
|
+
model.hasOne(targetModel, foreignKey);
|
|
536
|
+
}
|
|
537
|
+
}
|
|
538
|
+
}
|
|
539
|
+
// 应用 belongsTo 关系
|
|
540
|
+
if (tableConfig.belongsTo) {
|
|
541
|
+
for (const [target, foreignKey] of Object.entries(tableConfig.belongsTo)) {
|
|
542
|
+
if (foreignKey) {
|
|
543
|
+
const targetModel = new RelatedModel(this, target);
|
|
544
|
+
model.belongsTo(targetModel, foreignKey);
|
|
545
|
+
}
|
|
546
|
+
}
|
|
547
|
+
}
|
|
548
|
+
// 应用 belongsToMany 关系
|
|
549
|
+
if (tableConfig.belongsToMany) {
|
|
550
|
+
for (const [target, config] of Object.entries(tableConfig.belongsToMany)) {
|
|
551
|
+
if (config) {
|
|
552
|
+
const targetModel = new RelatedModel(this, target);
|
|
553
|
+
model.belongsToMany(targetModel, config.pivot, config.foreignKey, config.relatedKey, 'id', 'id', config.pivotFields);
|
|
554
|
+
}
|
|
555
|
+
}
|
|
556
|
+
}
|
|
557
|
+
}
|
|
327
558
|
/**
|
|
328
559
|
* 获取所有模型名称
|
|
329
560
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../../src/type/related/database.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../../src/type/related/database.ts"],"names":[],"mappings":"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"}
|