tspace-mysql 1.9.1 → 1.9.2

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 (84) hide show
  1. package/README.md +246 -23
  2. package/dist/lib/core/Abstracts/AbstractBuilder.d.ts +16 -16
  3. package/dist/lib/core/Abstracts/AbstractBuilder.js.map +1 -1
  4. package/dist/lib/core/Abstracts/AbstractDB.d.ts +1 -1
  5. package/dist/lib/core/Abstracts/AbstractModel.d.ts +7 -2
  6. package/dist/lib/core/Abstracts/AbstractModel.js.map +1 -1
  7. package/dist/lib/core/Blueprint.d.ts +14 -14
  8. package/dist/lib/core/Blueprint.js +2 -4
  9. package/dist/lib/core/Blueprint.js.map +1 -1
  10. package/dist/lib/core/Builder.d.ts +52 -34
  11. package/dist/lib/core/Builder.js +76 -44
  12. package/dist/lib/core/Builder.js.map +1 -1
  13. package/dist/lib/core/Cache/index.js +32 -13
  14. package/dist/lib/core/Cache/index.js.map +1 -1
  15. package/dist/lib/core/Contracts/Audit.d.ts +4 -4
  16. package/dist/lib/core/Contracts/Audit.js.map +1 -1
  17. package/dist/lib/core/Contracts/Logger.d.ts +3 -3
  18. package/dist/lib/core/Contracts/Logger.js.map +1 -1
  19. package/dist/lib/core/DB.d.ts +2 -2
  20. package/dist/lib/core/DB.js +6 -19
  21. package/dist/lib/core/DB.js.map +1 -1
  22. package/dist/lib/core/Driver/index.d.ts +7 -5
  23. package/dist/lib/core/Driver/index.js +4 -2
  24. package/dist/lib/core/Driver/index.js.map +1 -1
  25. package/dist/lib/core/Driver/mariadb/MariadbDriver.js +14 -6
  26. package/dist/lib/core/Driver/mariadb/MariadbDriver.js.map +1 -1
  27. package/dist/lib/core/Driver/mariadb/MariadbQueryBuilder.d.ts +3 -3
  28. package/dist/lib/core/Driver/mariadb/MariadbQueryBuilder.js +24 -7
  29. package/dist/lib/core/Driver/mariadb/MariadbQueryBuilder.js.map +1 -1
  30. package/dist/lib/core/Driver/mongodb/MongodbDriver.js +18 -12
  31. package/dist/lib/core/Driver/mongodb/MongodbDriver.js.map +1 -1
  32. package/dist/lib/core/Driver/mongodb/MongodbQueryBuilder.d.ts +3 -3
  33. package/dist/lib/core/Driver/mongodb/MongodbQueryBuilder.js +9 -1
  34. package/dist/lib/core/Driver/mongodb/MongodbQueryBuilder.js.map +1 -1
  35. package/dist/lib/core/Driver/mysql/MysqlDriver.js +15 -7
  36. package/dist/lib/core/Driver/mysql/MysqlDriver.js.map +1 -1
  37. package/dist/lib/core/Driver/mysql/MysqlQueryBuilder.d.ts +3 -3
  38. package/dist/lib/core/Driver/mysql/MysqlQueryBuilder.js +24 -7
  39. package/dist/lib/core/Driver/mysql/MysqlQueryBuilder.js.map +1 -1
  40. package/dist/lib/core/Driver/postgres/PostgresDriver.js +14 -6
  41. package/dist/lib/core/Driver/postgres/PostgresDriver.js.map +1 -1
  42. package/dist/lib/core/Driver/postgres/PostgresQueryBuilder.d.ts +3 -3
  43. package/dist/lib/core/Driver/postgres/PostgresQueryBuilder.js +22 -7
  44. package/dist/lib/core/Driver/postgres/PostgresQueryBuilder.js.map +1 -1
  45. package/dist/lib/core/Driver/sqlite/SqliteDriver.d.ts +1 -0
  46. package/dist/lib/core/Driver/sqlite/SqliteDriver.js +25 -4
  47. package/dist/lib/core/Driver/sqlite/SqliteDriver.js.map +1 -1
  48. package/dist/lib/core/Driver/sqlite/SqliteQueryBuilder.d.ts +2 -0
  49. package/dist/lib/core/Driver/sqlite/SqliteQueryBuilder.js +27 -21
  50. package/dist/lib/core/Driver/sqlite/SqliteQueryBuilder.js.map +1 -1
  51. package/dist/lib/core/Join.d.ts +63 -5
  52. package/dist/lib/core/Join.js +92 -15
  53. package/dist/lib/core/Join.js.map +1 -1
  54. package/dist/lib/core/JoinModel.d.ts +65 -9
  55. package/dist/lib/core/JoinModel.js +79 -50
  56. package/dist/lib/core/JoinModel.js.map +1 -1
  57. package/dist/lib/core/Meta.d.ts +7 -7
  58. package/dist/lib/core/Meta.js +10 -9
  59. package/dist/lib/core/Meta.js.map +1 -1
  60. package/dist/lib/core/Model.d.ts +225 -57
  61. package/dist/lib/core/Model.js +375 -89
  62. package/dist/lib/core/Model.js.map +1 -1
  63. package/dist/lib/core/Queue.d.ts +16 -7
  64. package/dist/lib/core/Queue.js +69 -29
  65. package/dist/lib/core/Queue.js.map +1 -1
  66. package/dist/lib/core/RelationManager.d.ts +4 -4
  67. package/dist/lib/core/RelationManager.js +141 -16
  68. package/dist/lib/core/RelationManager.js.map +1 -1
  69. package/dist/lib/core/Repository.d.ts +1 -1
  70. package/dist/lib/core/Repository.js +5 -1
  71. package/dist/lib/core/Repository.js.map +1 -1
  72. package/dist/lib/core/Schema.d.ts +13 -13
  73. package/dist/lib/core/Schema.js +12 -0
  74. package/dist/lib/core/Schema.js.map +1 -1
  75. package/dist/lib/core/StateManager.d.ts +6 -0
  76. package/dist/lib/core/StateManager.js +1 -0
  77. package/dist/lib/core/StateManager.js.map +1 -1
  78. package/dist/lib/core/UtilityTypes.d.ts +69 -74
  79. package/dist/lib/core/UtilityTypes.js.map +1 -1
  80. package/dist/lib/types/index.d.ts +52 -9
  81. package/dist/lib/utils/index.d.ts +2 -1
  82. package/dist/lib/utils/index.js +26 -3
  83. package/dist/lib/utils/index.js.map +1 -1
  84. package/package.json +1 -1
@@ -22,17 +22,18 @@ declare const schema: {
22
22
  id: Blueprint<number>;
23
23
  uuid: Blueprint<string | null>;
24
24
  name: Blueprint<string>;
25
- status: Blueprint<"pending" | "active" | "completed" | "failed">;
26
- priority: Blueprint<number>;
25
+ status: Blueprint<"pending" | "active" | "completed" | "failed" | null>;
26
+ priority: Blueprint<T.Default<number>>;
27
27
  payload: Blueprint<string | null>;
28
28
  result: Blueprint<string | null>;
29
29
  error: Blueprint<string | null>;
30
30
  metadata: Blueprint<string | null>;
31
- attempts: Blueprint<number>;
32
- max_attempts: Blueprint<number>;
31
+ attempts: Blueprint<T.Default<number>>;
32
+ max_attempts: Blueprint<T.Default<number>>;
33
+ delay_ms: Blueprint<T.Default<number>>;
33
34
  locked_by: Blueprint<string | null>;
34
35
  locked_at: Blueprint<string | Date | null>;
35
- available_at: Blueprint<string | Date>;
36
+ available_at: Blueprint<NonNullable<string | Date>>;
36
37
  completed_at: Blueprint<string | Date | null>;
37
38
  created_at: Blueprint<string | Date | null>;
38
39
  updated_at: Blueprint<string | Date | null>;
@@ -74,11 +75,11 @@ declare class Worker extends Model<TS> {
74
75
  pending: number;
75
76
  failed: number;
76
77
  }[]>;
78
+ getJobs(name?: string): Promise<T.Result<Worker, unknown>[]>;
77
79
  getNames(): Promise<any[]>;
78
80
  add(name: string, payload: any, opts?: QueueAddOptions): Promise<void>;
79
81
  process(name: string, handler: Handler, opts?: QueueProcessOptions): Promise<void>;
80
82
  private _runJob;
81
- private _waitForSafeConnections;
82
83
  private _dequeueMany;
83
84
  private _flushBuffer;
84
85
  private _wakeWorker;
@@ -163,7 +164,7 @@ declare class Queue {
163
164
  *
164
165
  * @param {string} [name] - Optional queue name filter.
165
166
  * @throws {Error} If Queue is not initialized.
166
- * @returns {Promise<Record<string,any>>}
167
+ * @returns {Promise<any>}
167
168
  */
168
169
  static getJobStats(name?: string): Promise<{
169
170
  completed: number;
@@ -171,6 +172,14 @@ declare class Queue {
171
172
  pending: number;
172
173
  failed: number;
173
174
  }[]>;
175
+ /**
176
+ * The 'getJobs' method is used to Get jobs.
177
+ *
178
+ * @param {string} [name] - Optional queue name filter.
179
+ * @throws {Error} If Queue is not initialized.
180
+ * @returns {Promise<T.Result<Worker>[]>}
181
+ */
182
+ static getJobs(name?: string): Promise<T.Result<Worker>[]>;
174
183
  /**
175
184
  * Get all unique queue names.
176
185
  *
@@ -3,7 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Queue = void 0;
4
4
  const Blueprint_1 = require("./Blueprint");
5
5
  const DB_1 = require("./DB");
6
+ ;
6
7
  const Model_1 = require("./Model");
8
+ const Meta_1 = require("./Meta");
7
9
  const QUEUE_STATUS = {
8
10
  dispatch: 'Dispatch',
9
11
  receive: 'Receive',
@@ -19,6 +21,12 @@ const QUEUE_STATUS = {
19
21
  completed: 'Retry Completed',
20
22
  }
21
23
  };
24
+ const STATUS = {
25
+ 'pending': 'pending',
26
+ 'active': 'active',
27
+ 'completed': 'completed',
28
+ 'failed': 'failed'
29
+ };
22
30
  const schema = {
23
31
  id: Blueprint_1.Blueprint.int().primary().autoIncrement(),
24
32
  uuid: Blueprint_1.Blueprint.varchar(36).null(),
@@ -27,14 +35,19 @@ const schema = {
27
35
  .compositeIndex([
28
36
  "status", "available_at", "priority", "id"
29
37
  ]),
30
- status: Blueprint_1.Blueprint.enum('pending', 'active', 'completed', 'failed').notNull().default('pending').index(),
31
- priority: Blueprint_1.Blueprint.int().notNull().default(0),
38
+ status: Blueprint_1.Blueprint
39
+ .enum(...Object.values(STATUS))
40
+ .notNull()
41
+ .default(STATUS.pending)
42
+ .index(),
43
+ priority: Blueprint_1.Blueprint.int().default(0),
32
44
  payload: Blueprint_1.Blueprint.mediumtext().null(),
33
45
  result: Blueprint_1.Blueprint.text().null(),
34
46
  error: Blueprint_1.Blueprint.text().null(),
35
47
  metadata: Blueprint_1.Blueprint.text().null(),
36
- attempts: Blueprint_1.Blueprint.int().notNull().default(0),
37
- max_attempts: Blueprint_1.Blueprint.int().notNull().default(3),
48
+ attempts: Blueprint_1.Blueprint.int().default(0),
49
+ max_attempts: Blueprint_1.Blueprint.int().default(3),
50
+ delay_ms: Blueprint_1.Blueprint.int().default(0),
38
51
  locked_by: Blueprint_1.Blueprint.text().null(),
39
52
  locked_at: Blueprint_1.Blueprint.timestamp().null(),
40
53
  available_at: Blueprint_1.Blueprint.timestamp().notNull(),
@@ -64,7 +77,7 @@ class Worker extends Model_1.Model {
64
77
  this.useTable(this.$state.get("TABLE_JOB"));
65
78
  }
66
79
  async initialize(opts = {}) {
67
- const driver = this.driver();
80
+ const driver = DB_1.DB.driver();
68
81
  if (driver === 'mongodb') {
69
82
  throw new Error('Queue is not supported for MongoDB. Use a different driver or disable queue features.');
70
83
  }
@@ -97,7 +110,7 @@ class Worker extends Model_1.Model {
97
110
  this.STOPPING = true;
98
111
  while (this.ACTIVE_JOBS > 0) {
99
112
  if (this.INSPECT_EXEC) {
100
- console.log(`\x1b[34mQueue:\x1b[0m waiting active jobs total '${this.ACTIVE_JOBS}'`);
113
+ console.log(`\x1b[34mQueue:\x1b[0m Currently processing ${this.ACTIVE_JOBS} job(s)`);
101
114
  }
102
115
  await new Promise(r => setTimeout(r, 200));
103
116
  }
@@ -112,7 +125,7 @@ class Worker extends Model_1.Model {
112
125
  async getJobOverallStats(name) {
113
126
  const where = (q) => {
114
127
  if (name)
115
- q.where('name', 'LIKE', `%${name}%`);
128
+ q.where('name', 'LIKE', `%${DB_1.DB.escape(name)}%`);
116
129
  return q;
117
130
  };
118
131
  const completed = await where(new Worker()).where('status', 'completed').count();
@@ -132,7 +145,7 @@ class Worker extends Model_1.Model {
132
145
  const rows = await new Worker()
133
146
  .select('name', 'status')
134
147
  .selectRaw('COUNT(1) AS total')
135
- .when(name, (q) => q.where('name', 'LIKE', `%${name}%`))
148
+ .when(name, (q) => q.where('name', 'LIKE', `%${DB_1.DB.escape(name)}%`))
136
149
  .groupBy('name', 'status')
137
150
  .orderBy('name')
138
151
  .get();
@@ -162,6 +175,12 @@ class Worker extends Model_1.Model {
162
175
  }
163
176
  return Array.from(map.values());
164
177
  }
178
+ async getJobs(name) {
179
+ const jobs = await new Worker()
180
+ .when(name != null, (q) => q.where('name', 'LIKE', `%${DB_1.DB.escape(name)}%`))
181
+ .get();
182
+ return jobs;
183
+ }
165
184
  async getNames() {
166
185
  return await new Worker().select('name').toArray('name');
167
186
  }
@@ -171,6 +190,7 @@ class Worker extends Model_1.Model {
171
190
  name,
172
191
  payload: payload == null ? null : this.safeJsonStringify(payload),
173
192
  status: 'pending',
193
+ delay_ms: opts.delayMs ?? 0,
174
194
  available_at: opts.delayMs ? new Date(Date.now() + opts.delayMs) : new Date(),
175
195
  priority: opts.priority ?? 0,
176
196
  attempts: 0,
@@ -247,6 +267,9 @@ class Worker extends Model_1.Model {
247
267
  console.log(`\x1b[34mQueue:\x1b[0m \x1b[35m'${name}'\x1b[0m \x1b[38;2;77;215;240m${QUEUE_STATUS.processing}\x1b[0m job \x1b[38;5;208m${job.id}\x1b[0m`);
248
268
  }
249
269
  const startTime = +new Date();
270
+ if (job.__job.delay_ms) {
271
+ await new Promise(r => setTimeout(r, job.__job.delay_ms));
272
+ }
250
273
  const result = await handler(job);
251
274
  await new Worker()
252
275
  .where('id', job.id)
@@ -336,37 +359,41 @@ class Worker extends Model_1.Model {
336
359
  this.ACTIVE_JOBS--;
337
360
  }
338
361
  }
339
- async _waitForSafeConnections(name) {
340
- let activeConnections = 0;
341
- // while (true) {
342
- // activeConnections = await DB.getActiveConnections();
343
- // if (activeConnections <= this.LIMIT_CONNECTIONS) {
344
- // break;
345
- // }
346
- // if (this.INSPECT_EXEC) {
347
- // console.log(`\x1b[34mQueue:\x1b[0m \x1b[35m'${name}'\x1b[0m \x1b[31m${QUEUE_STATUS.waiting}\x1b[0m DB connections high \x1b[33m (${activeConnections}/${this.LIMIT_CONNECTIONS})\x1b[0m`);
348
- // }
349
- // await new Promise(resolve => setTimeout(resolve, 1000 * 5));
350
- // }
351
- return;
352
- }
353
362
  async _dequeueMany(name, limit) {
354
363
  if (this.STOPPING)
355
364
  return [];
356
- await this._waitForSafeConnections(name);
357
365
  const findJobs = await new Worker()
358
366
  .select('id')
359
367
  .where('name', name)
360
- .whereQuery(q => {
361
- return q
362
- .where('status', 'pending')
363
- .where('available_at', '<=', this.$utils.timestamp())
368
+ .whereQuery(query => {
369
+ return query
370
+ .where('status', '=', 'pending')
371
+ .when(DB_1.DB.driver() === 'mysql' || DB_1.DB.driver() === 'mariadb', (q) => {
372
+ return q.whereRaw(`DATE_SUB(
373
+ ${(0, Meta_1.Meta)(Worker).columnRef('available_at')},
374
+ INTERVAL (${(0, Meta_1.Meta)(Worker).columnRef('delay_ms')} * 1000) MICROSECOND
375
+ ) <= ?`, [`'${this.$utils.timestamp()}'`]);
376
+ })
377
+ .when(DB_1.DB.driver() === 'postgres', (q) => {
378
+ return q.whereRaw(`${(0, Meta_1.Meta)(Worker).columnRef('available_at')}
379
+ -
380
+ (${(0, Meta_1.Meta)(Worker).columnRef('delay_ms')} * INTERVAL '1 millisecond')
381
+ <= ?`, [`'${this.$utils.timestamp()}'`]);
382
+ })
383
+ .when(DB_1.DB.driver() === 'sqlite', (q) => {
384
+ return q.whereRaw(`datetime(
385
+ ${(0, Meta_1.Meta)(Worker).columnRef('available_at')},
386
+ '-' || (${(0, Meta_1.Meta)(Worker).columnRef('delay_ms')} / 1000.0) || ' seconds'
387
+ ) <= ?`, [`'${this.$utils.timestamp()}'`]);
388
+ })
364
389
  .orWhereQuery((q) => {
365
390
  return q
366
- .where('status', 'active')
391
+ .where('status', '=', 'active')
367
392
  .where('locked_at', '<', this.$utils.timestamp(new Date(Date.now() - 60 * 1000)));
368
393
  });
369
394
  })
395
+ .latest('priority')
396
+ .oldest('id')
370
397
  .limit(limit)
371
398
  .get();
372
399
  if (!findJobs.length) {
@@ -586,7 +613,7 @@ class Queue {
586
613
  *
587
614
  * @param {string} [name] - Optional queue name filter.
588
615
  * @throws {Error} If Queue is not initialized.
589
- * @returns {Promise<Record<string,any>>}
616
+ * @returns {Promise<any>}
590
617
  */
591
618
  static async getJobStats(name) {
592
619
  if (this.WORKER == null) {
@@ -594,6 +621,19 @@ class Queue {
594
621
  }
595
622
  return await this.WORKER.getJobStats(name);
596
623
  }
624
+ /**
625
+ * The 'getJobs' method is used to Get jobs.
626
+ *
627
+ * @param {string} [name] - Optional queue name filter.
628
+ * @throws {Error} If Queue is not initialized.
629
+ * @returns {Promise<T.Result<Worker>[]>}
630
+ */
631
+ static async getJobs(name) {
632
+ if (this.WORKER == null) {
633
+ throw new Error(this.MESSAGE.INIT_ERROR);
634
+ }
635
+ return await this.WORKER.getJobs(name);
636
+ }
597
637
  /**
598
638
  * Get all unique queue names.
599
639
  *
@@ -1 +1 @@
1
- {"version":3,"file":"Queue.js","sourceRoot":"","sources":["../../../src/lib/core/Queue.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Queue.js","sourceRoot":"","sources":["../../../src/lib/core/Queue.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import { Model } from "./Model";
2
2
  import type { TRelationOptions, TRelationQueryOptions } from "../types";
3
3
  declare class RelationManager {
4
4
  private $model;
5
- constructor(model: Model);
5
+ constructor(model: Model<any, any, any>);
6
6
  load(parents: Record<string, any>[], relation: TRelationOptions): Promise<any[]>;
7
7
  loadExists(): string;
8
8
  getSqlExists(name: string, cb: Function): string | null;
@@ -10,9 +10,9 @@ declare class RelationManager {
10
10
  callback(nameRelation: string, cb: Function): void;
11
11
  callbackPivot(nameRelation: string, cb: Function): void;
12
12
  returnCallback(nameRelation: string): any;
13
- hasOne({ name, as, model, localKey, foreignKey, freezeTable }: TRelationOptions): void;
14
- hasMany({ name, as, model, localKey, foreignKey, freezeTable }: TRelationOptions): void;
15
- belongsTo({ name, as, model, localKey, foreignKey, freezeTable }: TRelationOptions): void;
13
+ hasOne({ name, as, model, localKey, foreignKey, freezeTable, }: TRelationOptions): void;
14
+ hasMany({ name, as, model, localKey, foreignKey, freezeTable, }: TRelationOptions): void;
15
+ belongsTo({ name, as, model, localKey, foreignKey, freezeTable, }: TRelationOptions): void;
16
16
  belongsToMany({ name, as, model, localKey, foreignKey, freezeTable, pivot, oldVersion, modelPivot }: TRelationOptions): void;
17
17
  belongsToManySingle({ name, as, model, localKey, foreignKey, freezeTable, pivot, oldVersion, modelPivot }: TRelationOptions): void;
18
18
  hasOneBuilder({ name, as, model, localKey, foreignKey, freezeTable, }: TRelationQueryOptions, callback?: Function): this | undefined;
@@ -39,7 +39,7 @@ class RelationManager {
39
39
  }
40
40
  if (relation.count) {
41
41
  const childs = await query
42
- .meta('SUBORDINATE')
42
+ .metaTag('SUBORDINATE')
43
43
  .select(foreignKey)
44
44
  .selectRaw(`${this.$model["$constants"]('COUNT')}(\`${foreignKey}\`) ${this.$model["$constants"]('AS')} \`aggregate\``)
45
45
  .whereIn(foreignKey, parentIds)
@@ -55,13 +55,47 @@ class RelationManager {
55
55
  relation
56
56
  });
57
57
  }
58
+ const ofMany = query['$state'].get('OF_MANY');
59
+ const clone = ofMany == null
60
+ ? null
61
+ : new Model_1.Model()
62
+ .copyModel(query, {
63
+ where: true
64
+ });
58
65
  const childs = await query
59
- .meta('SUBORDINATE')
66
+ .metaTag('SUBORDINATE')
60
67
  .addSelect(foreignKey)
61
68
  .whereIn(foreignKey, parentIds)
62
69
  .debug(this.$model['$state'].get('DEBUG'))
63
- .when(relation.trashed, (query) => query.onlyTrashed())
64
- .when(relation.all, (query) => query.disableSoftDelete())
70
+ .when(relation.trashed, (q) => q.onlyTrashed())
71
+ .when(relation.all, (q) => q.disableSoftDelete())
72
+ .when(ofMany != null && clone != null, (q) => {
73
+ const column = ofMany?.column;
74
+ const aggregate = ofMany?.aggregate;
75
+ const queryOfMany = ofMany?.query;
76
+ if (queryOfMany != null) {
77
+ const repository = new Model_1.Model()
78
+ .copyModel(queryOfMany, {
79
+ where: true,
80
+ join: true,
81
+ });
82
+ clone['$state'].set("WHERE", [
83
+ ...clone['$state'].get("WHERE"),
84
+ ...repository['$utils']
85
+ .nestConditions(repository['$state'].get("WHERE"))
86
+ ]);
87
+ clone['$state'].set("JOIN", [
88
+ ...clone['$state'].get("JOIN"),
89
+ ...repository['$state'].get("JOIN")
90
+ ]);
91
+ }
92
+ const self = clone
93
+ .selectRaw(`${aggregate}(${String(column)})`)
94
+ .whereIn(foreignKey, parentIds)
95
+ .groupBy(foreignKey);
96
+ return q
97
+ .whereSubQuery(column, self);
98
+ })
65
99
  .bind(this.$model['$pool'].get())
66
100
  .get();
67
101
  if (this.$model['$state'].get('DEBUG')) {
@@ -107,7 +141,9 @@ class RelationManager {
107
141
  clone.whereExists(sql);
108
142
  }
109
143
  }
110
- if (relation.relation === this.$model["$constants"]('RELATIONSHIP').belongsToMany) {
144
+ const isBeglongsToMany = relation.relation ===
145
+ this.$model["$constants"]('RELATIONSHIP').belongsToMany;
146
+ if (isBeglongsToMany) {
111
147
  const thisPivot = modelPivot
112
148
  ? new modelPivot
113
149
  : new Model_1.Model().table(String(pivot));
@@ -137,10 +173,42 @@ class RelationManager {
137
173
  this.$model['whereExists'](sqlPivot);
138
174
  continue;
139
175
  }
176
+ const ofMany = clone['$state'].get('OF_MANY');
140
177
  const sql = clone
141
178
  .bind(this.$model['$pool'].get())
142
179
  .select1()
143
180
  .whereReference(this.$model.bindColumn(localKey), query.bindColumn(foreignKey))
181
+ .when(ofMany != null, (q) => {
182
+ const copy = new Model_1.Model()
183
+ .copyModel(query, {
184
+ where: true
185
+ });
186
+ const column = ofMany?.column;
187
+ const aggregate = ofMany?.aggregate;
188
+ const queryOfMany = ofMany?.query;
189
+ if (queryOfMany != null) {
190
+ const repository = new Model_1.Model()
191
+ .copyModel(queryOfMany, {
192
+ where: true,
193
+ join: true,
194
+ });
195
+ copy['$state'].set("WHERE", [
196
+ ...copy['$state'].get("WHERE"),
197
+ ...repository['$utils']
198
+ .nestConditions(repository['$state'].get("WHERE"))
199
+ ]);
200
+ copy['$state'].set("JOIN", [
201
+ ...copy['$state'].get("JOIN"),
202
+ ...repository['$state'].get("JOIN")
203
+ ]);
204
+ }
205
+ const self = copy
206
+ .selectRaw(`${aggregate}(${String(column)})`)
207
+ .whereReference(this.$model.bindColumn(localKey), query.bindColumn(foreignKey))
208
+ .groupBy(foreignKey);
209
+ return q
210
+ .whereSubQuery(column, self);
211
+ })
144
212
  .unset({
145
213
  orderBy: true,
146
214
  limit: true
@@ -168,12 +236,36 @@ class RelationManager {
168
236
  throw this._assertError(`Model for the relationship is unknown.`);
169
237
  }
170
238
  relation.query = cb(relation.query == null ? new relation.model() : relation.query);
171
- const { localKey, foreignKey } = this._valueInRelation(relation);
239
+ const { localKey, foreignKey, modelPivot, pivot } = this._valueInRelation(relation);
172
240
  const query = relation.query;
173
241
  if (query == null) {
174
242
  throw this._assertError(`The callback query '${relation.name}' is unknown.`);
175
243
  }
176
244
  const clone = new Model_1.Model().clone(query);
245
+ if (relation.relation === this.$model["$constants"]('RELATIONSHIP').belongsToMany) {
246
+ const thisPivot = modelPivot
247
+ ? new modelPivot
248
+ : new Model_1.Model().table(String(pivot));
249
+ const sql = clone
250
+ .bind(this.$model['$pool'].get())
251
+ .select1()
252
+ .whereReference(query.bindColumn(foreignKey), thisPivot.bindColumn(localKey))
253
+ .toString();
254
+ const sqlPivot = thisPivot
255
+ .bind(this.$model['$pool'].get())
256
+ .select1()
257
+ .whereExists(sql)
258
+ .whereReference(this.$model.bindColumn(foreignKey), thisPivot.bindColumn([
259
+ pluralize_1.default.singular(this.$model.getTableName()),
260
+ foreignKey
261
+ ].join("_")))
262
+ .unset({
263
+ orderBy: true,
264
+ limit: true
265
+ })
266
+ .toString();
267
+ return sqlPivot;
268
+ }
177
269
  const sql = clone
178
270
  .bind(this.$model['$pool'].get())
179
271
  .select1()
@@ -259,7 +351,7 @@ class RelationManager {
259
351
  }
260
352
  return relation.query == null ? new relation.model() : relation.query;
261
353
  }
262
- hasOne({ name, as, model, localKey, foreignKey, freezeTable }) {
354
+ hasOne({ name, as, model, localKey, foreignKey, freezeTable, }) {
263
355
  const relation = {
264
356
  name,
265
357
  model,
@@ -272,7 +364,7 @@ class RelationManager {
272
364
  };
273
365
  return this.$model['$state'].set('APPLY_RELATIONS', [...this.$model['$state'].get('APPLY_RELATIONS'), relation]);
274
366
  }
275
- hasMany({ name, as, model, localKey, foreignKey, freezeTable }) {
367
+ hasMany({ name, as, model, localKey, foreignKey, freezeTable, }) {
276
368
  const relation = {
277
369
  name,
278
370
  model,
@@ -285,7 +377,7 @@ class RelationManager {
285
377
  };
286
378
  return this.$model['$state'].set('APPLY_RELATIONS', [...this.$model['$state'].get('APPLY_RELATIONS'), relation]);
287
379
  }
288
- belongsTo({ name, as, model, localKey, foreignKey, freezeTable }) {
380
+ belongsTo({ name, as, model, localKey, foreignKey, freezeTable, }) {
289
381
  const relation = {
290
382
  name,
291
383
  model,
@@ -539,10 +631,42 @@ class RelationManager {
539
631
  }
540
632
  if (relation.exists == null && relation.notExists == null)
541
633
  return '';
634
+ const ofMany = clone['$state'].get('OF_MANY');
542
635
  const sql = clone
543
636
  .bind(this.$model['$pool'].get())
544
637
  .select1()
545
638
  .whereReference(this.$model.bindColumn(localKey), clone.bindColumn(foreignKey))
639
+ .when(ofMany != null, (q) => {
640
+ const copy = new Model_1.Model()
641
+ .copyModel(query, {
642
+ where: true
643
+ });
644
+ const column = ofMany?.column;
645
+ const aggregate = ofMany?.aggregate;
646
+ const queryOfMany = ofMany?.query;
647
+ if (queryOfMany != null) {
648
+ const repository = new Model_1.Model()
649
+ .copyModel(queryOfMany, {
650
+ where: true,
651
+ join: true,
652
+ });
653
+ copy['$state'].set("WHERE", [
654
+ ...copy['$state'].get("WHERE"),
655
+ ...repository['$utils']
656
+ .nestConditions(repository['$state'].get("WHERE"))
657
+ ]);
658
+ copy['$state'].set("JOIN", [
659
+ ...copy['$state'].get("JOIN"),
660
+ ...repository['$state'].get("JOIN")
661
+ ]);
662
+ }
663
+ const self = copy
664
+ .selectRaw(`${aggregate}(${String(column)})`)
665
+ .whereReference(this.$model.bindColumn(localKey), query.bindColumn(foreignKey))
666
+ .groupBy(foreignKey);
667
+ return q
668
+ .whereSubQuery(column, self);
669
+ })
546
670
  .unset({
547
671
  orderBy: true,
548
672
  limit: true
@@ -613,14 +737,14 @@ class RelationManager {
613
737
  let { name, foreignKey, localKey, pivot, oldVersion, modelPivot, queryPivot, as } = this._valueInRelation(relation);
614
738
  const isBelongsToManySingle = relation.relation === this.$model["$constants"]('RELATIONSHIP').belongsToManySingle;
615
739
  const localKeyId = parents.map((parent) => {
616
- const data = parent[foreignKey];
617
- if (data === undefined) {
740
+ const key = parent[foreignKey];
741
+ if (key === undefined) {
618
742
  throw this._assertError([
619
743
  `This relationship lacks a foreign key in the '${relation?.name}' relation.`,
620
744
  `Please review the query to identify whether the key '${foreignKey}' is missing.`
621
745
  ].join(' '));
622
746
  }
623
- return data;
747
+ return key;
624
748
  }).filter((d) => d != null);
625
749
  const mainResultIds = Array.from(new Set(localKeyId));
626
750
  const modelRelation = relation.query == null ? new relation.model() : relation.query;
@@ -641,7 +765,7 @@ class RelationManager {
641
765
  : queryPivot;
642
766
  if (relation.count) {
643
767
  const pivotResults = await queryPivot
644
- .meta('SUBORDINATE')
768
+ .metaTag('SUBORDINATE')
645
769
  .select(localKeyPivotTable)
646
770
  .selectRaw(`${this.$model["$constants"]('COUNT')}(\`${localKeyPivotTable}\`) ${this.$model["$constants"]('AS')} \`aggregate\``)
647
771
  .whereIn(localKeyPivotTable, mainResultIds)
@@ -664,7 +788,7 @@ class RelationManager {
664
788
  return parents;
665
789
  }
666
790
  const pivotResults = await queryPivot
667
- .meta('SUBORDINATE')
791
+ .metaTag('SUBORDINATE')
668
792
  .addSelect(localKeyPivotTable)
669
793
  .whereIn(localKeyPivotTable, mainResultIds)
670
794
  .when(relation.query != null, (query) => query.select(localKeyPivotTable, localKey))
@@ -678,7 +802,7 @@ class RelationManager {
678
802
  .map((pivotResult) => pivotResult[relationForeignKey])
679
803
  .filter((d) => d != null)));
680
804
  const relationResults = await modelRelation
681
- .meta('SUBORDINATE')
805
+ .metaTag('SUBORDINATE')
682
806
  .addSelect(mainlocalKey)
683
807
  .whereIn(mainlocalKey, relationIds)
684
808
  .when(relation.trashed, (query) => query.disableSoftDelete())
@@ -712,7 +836,7 @@ class RelationManager {
712
836
  const children = [...pivotResults]
713
837
  .reduce((prev, curr) => {
714
838
  const key = curr[localKeyPivotTable];
715
- if (Number.isNaN(key)) {
839
+ if (key === undefined) {
716
840
  throw this._assertError([
717
841
  `This relationship lacks a prisma key in pivot table the '${relation?.name}' relation.`,
718
842
  `Please review the query to identify whether the key '${localKeyPivotTable}' is missing.`
@@ -721,6 +845,7 @@ class RelationManager {
721
845
  if (!prev[key]) {
722
846
  prev[key] = { [localKeyPivotTable]: key, values: [] };
723
847
  }
848
+ ;
724
849
  prev[key].values.push({ ...curr });
725
850
  return prev;
726
851
  }, {});