@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.
Files changed (115) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +1360 -34
  3. package/lib/base/database.d.ts +71 -13
  4. package/lib/base/database.d.ts.map +1 -1
  5. package/lib/base/database.js +128 -4
  6. package/lib/base/database.js.map +1 -1
  7. package/lib/base/dialect.d.ts +27 -10
  8. package/lib/base/dialect.d.ts.map +1 -1
  9. package/lib/base/dialect.js +32 -0
  10. package/lib/base/dialect.js.map +1 -1
  11. package/lib/base/index.d.ts +1 -0
  12. package/lib/base/index.d.ts.map +1 -1
  13. package/lib/base/index.js +1 -0
  14. package/lib/base/index.js.map +1 -1
  15. package/lib/base/model.d.ts +105 -12
  16. package/lib/base/model.d.ts.map +1 -1
  17. package/lib/base/model.js +224 -3
  18. package/lib/base/model.js.map +1 -1
  19. package/lib/base/query-classes.d.ts +204 -33
  20. package/lib/base/query-classes.d.ts.map +1 -1
  21. package/lib/base/query-classes.js +276 -0
  22. package/lib/base/query-classes.js.map +1 -1
  23. package/lib/base/thenable.d.ts +7 -7
  24. package/lib/base/thenable.d.ts.map +1 -1
  25. package/lib/base/thenable.js +5 -4
  26. package/lib/base/thenable.js.map +1 -1
  27. package/lib/base/transaction.d.ts +46 -0
  28. package/lib/base/transaction.d.ts.map +1 -0
  29. package/lib/base/transaction.js +186 -0
  30. package/lib/base/transaction.js.map +1 -0
  31. package/lib/dialects/memory.d.ts +12 -7
  32. package/lib/dialects/memory.d.ts.map +1 -1
  33. package/lib/dialects/memory.js +7 -4
  34. package/lib/dialects/memory.js.map +1 -1
  35. package/lib/dialects/mongodb.d.ts +11 -7
  36. package/lib/dialects/mongodb.d.ts.map +1 -1
  37. package/lib/dialects/mongodb.js +18 -15
  38. package/lib/dialects/mongodb.js.map +1 -1
  39. package/lib/dialects/mysql.d.ts +35 -6
  40. package/lib/dialects/mysql.d.ts.map +1 -1
  41. package/lib/dialects/mysql.js +137 -18
  42. package/lib/dialects/mysql.js.map +1 -1
  43. package/lib/dialects/pg.d.ts +35 -6
  44. package/lib/dialects/pg.d.ts.map +1 -1
  45. package/lib/dialects/pg.js +137 -18
  46. package/lib/dialects/pg.js.map +1 -1
  47. package/lib/dialects/redis.d.ts +11 -6
  48. package/lib/dialects/redis.d.ts.map +1 -1
  49. package/lib/dialects/redis.js +11 -8
  50. package/lib/dialects/redis.js.map +1 -1
  51. package/lib/dialects/sqlite.d.ts +19 -6
  52. package/lib/dialects/sqlite.d.ts.map +1 -1
  53. package/lib/dialects/sqlite.js +63 -10
  54. package/lib/dialects/sqlite.js.map +1 -1
  55. package/lib/index.d.ts +1 -0
  56. package/lib/index.d.ts.map +1 -1
  57. package/lib/index.js +1 -0
  58. package/lib/index.js.map +1 -1
  59. package/lib/migration.d.ts +132 -0
  60. package/lib/migration.d.ts.map +1 -0
  61. package/lib/migration.js +475 -0
  62. package/lib/migration.js.map +1 -0
  63. package/lib/registry.d.ts +26 -23
  64. package/lib/registry.d.ts.map +1 -1
  65. package/lib/registry.js +1 -5
  66. package/lib/registry.js.map +1 -1
  67. package/lib/type/document/database.d.ts +11 -11
  68. package/lib/type/document/database.d.ts.map +1 -1
  69. package/lib/type/document/database.js.map +1 -1
  70. package/lib/type/document/model.d.ts +7 -7
  71. package/lib/type/document/model.d.ts.map +1 -1
  72. package/lib/type/document/model.js.map +1 -1
  73. package/lib/type/keyvalue/database.d.ts +11 -11
  74. package/lib/type/keyvalue/database.d.ts.map +1 -1
  75. package/lib/type/keyvalue/database.js.map +1 -1
  76. package/lib/type/keyvalue/model.d.ts +2 -2
  77. package/lib/type/keyvalue/model.d.ts.map +1 -1
  78. package/lib/type/keyvalue/model.js.map +1 -1
  79. package/lib/type/related/database.d.ts +48 -13
  80. package/lib/type/related/database.d.ts.map +1 -1
  81. package/lib/type/related/database.js +258 -27
  82. package/lib/type/related/database.js.map +1 -1
  83. package/lib/type/related/model.d.ts +251 -15
  84. package/lib/type/related/model.d.ts.map +1 -1
  85. package/lib/type/related/model.js +647 -22
  86. package/lib/type/related/model.js.map +1 -1
  87. package/lib/types.d.ts +475 -37
  88. package/lib/types.d.ts.map +1 -1
  89. package/lib/types.js +6 -0
  90. package/lib/types.js.map +1 -1
  91. package/package.json +14 -5
  92. package/src/base/database.ts +168 -24
  93. package/src/base/dialect.ts +49 -10
  94. package/src/base/index.ts +2 -1
  95. package/src/base/model.ts +258 -18
  96. package/src/base/query-classes.ts +471 -63
  97. package/src/base/thenable.ts +12 -11
  98. package/src/base/transaction.ts +213 -0
  99. package/src/dialects/memory.ts +14 -13
  100. package/src/dialects/mongodb.ts +40 -38
  101. package/src/dialects/mysql.ts +151 -22
  102. package/src/dialects/pg.ts +148 -21
  103. package/src/dialects/redis.ts +40 -38
  104. package/src/dialects/sqlite.ts +73 -15
  105. package/src/index.ts +1 -2
  106. package/src/migration.ts +544 -0
  107. package/src/registry.ts +33 -33
  108. package/src/type/document/database.ts +32 -32
  109. package/src/type/document/model.ts +14 -14
  110. package/src/type/keyvalue/database.ts +32 -32
  111. package/src/type/keyvalue/model.ts +18 -18
  112. package/src/type/related/database.ts +309 -34
  113. package/src/type/related/model.ts +800 -33
  114. package/src/types.ts +559 -44
  115. 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
- constructor(dialect, definitions) {
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 => this.dialect.quoteIdentifier(String(f))).join(', ')
62
- : '*';
63
- let query = `SELECT ${fields} FROM ${this.dialect.quoteIdentifier(params.tableName)}`;
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 => this.dialect.quoteIdentifier(String(f))).join(', ');
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 => `${this.dialect.quoteIdentifier(String(o.field))} ${o.direction}`)
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
- const values = Object.values(params.data).map(v => this.dialect.formatDefaultValue(v));
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
- parseCondition(condition) {
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 = this.dialect.quoteIdentifier(key);
400
+ const quotedKey = formatField(key);
252
401
  const placeholder = this.dialect.getParameterPlaceholder(params.length);
253
402
  switch (op) {
254
403
  case '$eq':
255
- clauses.push(`${quotedKey} = ${placeholder}`);
256
- params.push(value[op]);
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
- clauses.push(`${quotedKey} <> ${placeholder}`);
260
- params.push(value[op]);
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 (Array.isArray(value[op]) && value[op].length) {
280
- const placeholders = value[op].map(() => this.dialect.getParameterPlaceholder(params.length + value[op].indexOf(value[op])));
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 (Array.isArray(value[op]) && value[op].length) {
290
- const placeholders = value[op].map(() => this.dialect.getParameterPlaceholder(params.length + value[op].indexOf(value[op])));
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 = this.dialect.quoteIdentifier(key);
308
- const placeholder = this.dialect.getParameterPlaceholder(params.length);
309
- clauses.push(`${quotedKey} = ${placeholder}`);
310
- params.push(value);
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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"}