@arikajs/database 0.0.4 → 0.0.5

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 (92) hide show
  1. package/README.md +392 -25
  2. package/dist/Connections/MongoDBConnection.d.ts +81 -0
  3. package/dist/Connections/MongoDBConnection.d.ts.map +1 -0
  4. package/dist/Connections/MongoDBConnection.js +203 -0
  5. package/dist/Connections/MongoDBConnection.js.map +1 -0
  6. package/dist/Connections/MySQLConnection.d.ts +1 -0
  7. package/dist/Connections/MySQLConnection.d.ts.map +1 -1
  8. package/dist/Connections/MySQLConnection.js +47 -10
  9. package/dist/Connections/MySQLConnection.js.map +1 -1
  10. package/dist/Connections/PostgreSQLConnection.d.ts +1 -0
  11. package/dist/Connections/PostgreSQLConnection.d.ts.map +1 -1
  12. package/dist/Connections/PostgreSQLConnection.js +43 -9
  13. package/dist/Connections/PostgreSQLConnection.js.map +1 -1
  14. package/dist/Connections/SQLiteConnection.d.ts +1 -0
  15. package/dist/Connections/SQLiteConnection.d.ts.map +1 -1
  16. package/dist/Connections/SQLiteConnection.js +38 -7
  17. package/dist/Connections/SQLiteConnection.js.map +1 -1
  18. package/dist/Contracts/Database.d.ts +71 -4
  19. package/dist/Contracts/Database.d.ts.map +1 -1
  20. package/dist/Contracts/Schema.d.ts +4 -0
  21. package/dist/Contracts/Schema.d.ts.map +1 -1
  22. package/dist/Database.d.ts +30 -3
  23. package/dist/Database.d.ts.map +1 -1
  24. package/dist/Database.js +39 -1
  25. package/dist/Database.js.map +1 -1
  26. package/dist/DatabaseManager.d.ts +17 -3
  27. package/dist/DatabaseManager.d.ts.map +1 -1
  28. package/dist/DatabaseManager.js +27 -11
  29. package/dist/DatabaseManager.js.map +1 -1
  30. package/dist/Migrations/Migrator.d.ts.map +1 -1
  31. package/dist/Migrations/Migrator.js +35 -3
  32. package/dist/Migrations/Migrator.js.map +1 -1
  33. package/dist/Model/GlobalScope.d.ts +44 -0
  34. package/dist/Model/GlobalScope.d.ts.map +1 -0
  35. package/dist/Model/GlobalScope.js +64 -0
  36. package/dist/Model/GlobalScope.js.map +1 -0
  37. package/dist/Model/Model.d.ts +168 -4
  38. package/dist/Model/Model.d.ts.map +1 -1
  39. package/dist/Model/Model.js +476 -16
  40. package/dist/Model/Model.js.map +1 -1
  41. package/dist/Model/Observer.d.ts +39 -0
  42. package/dist/Model/Observer.d.ts.map +1 -0
  43. package/dist/Model/Observer.js +48 -0
  44. package/dist/Model/Observer.js.map +1 -0
  45. package/dist/Model/Relations.d.ts +201 -10
  46. package/dist/Model/Relations.d.ts.map +1 -1
  47. package/dist/Model/Relations.js +472 -27
  48. package/dist/Model/Relations.js.map +1 -1
  49. package/dist/Query/Expression.d.ts +16 -0
  50. package/dist/Query/Expression.d.ts.map +1 -0
  51. package/dist/Query/Expression.js +25 -0
  52. package/dist/Query/Expression.js.map +1 -0
  53. package/dist/Query/QueryBuilder.d.ts +64 -6
  54. package/dist/Query/QueryBuilder.d.ts.map +1 -1
  55. package/dist/Query/QueryBuilder.js +234 -15
  56. package/dist/Query/QueryBuilder.js.map +1 -1
  57. package/dist/Query/QueryLogger.d.ts +55 -0
  58. package/dist/Query/QueryLogger.d.ts.map +1 -0
  59. package/dist/Query/QueryLogger.js +82 -0
  60. package/dist/Query/QueryLogger.js.map +1 -0
  61. package/dist/Schema/Grammars/Grammar.d.ts +5 -0
  62. package/dist/Schema/Grammars/Grammar.d.ts.map +1 -1
  63. package/dist/Schema/Grammars/Grammar.js.map +1 -1
  64. package/dist/Schema/Grammars/MySQLGrammar.d.ts +1 -0
  65. package/dist/Schema/Grammars/MySQLGrammar.d.ts.map +1 -1
  66. package/dist/Schema/Grammars/MySQLGrammar.js +42 -0
  67. package/dist/Schema/Grammars/MySQLGrammar.js.map +1 -1
  68. package/dist/Schema/Grammars/PostgreSQLGrammar.d.ts +1 -0
  69. package/dist/Schema/Grammars/PostgreSQLGrammar.d.ts.map +1 -1
  70. package/dist/Schema/Grammars/PostgreSQLGrammar.js +46 -0
  71. package/dist/Schema/Grammars/PostgreSQLGrammar.js.map +1 -1
  72. package/dist/Schema/Grammars/SQLiteGrammar.d.ts +1 -0
  73. package/dist/Schema/Grammars/SQLiteGrammar.d.ts.map +1 -1
  74. package/dist/Schema/Grammars/SQLiteGrammar.js +31 -0
  75. package/dist/Schema/Grammars/SQLiteGrammar.js.map +1 -1
  76. package/dist/Schema/Schema.d.ts +6 -0
  77. package/dist/Schema/Schema.d.ts.map +1 -1
  78. package/dist/Schema/Schema.js +10 -0
  79. package/dist/Schema/Schema.js.map +1 -1
  80. package/dist/Schema/SchemaBuilder.d.ts +4 -0
  81. package/dist/Schema/SchemaBuilder.d.ts.map +1 -1
  82. package/dist/Schema/SchemaBuilder.js +15 -0
  83. package/dist/Schema/SchemaBuilder.js.map +1 -1
  84. package/dist/Transactions/TransactionManager.d.ts +28 -0
  85. package/dist/Transactions/TransactionManager.d.ts.map +1 -0
  86. package/dist/Transactions/TransactionManager.js +68 -0
  87. package/dist/Transactions/TransactionManager.js.map +1 -0
  88. package/dist/index.d.ts +11 -1
  89. package/dist/index.d.ts.map +1 -1
  90. package/dist/index.js +21 -1
  91. package/dist/index.js.map +1 -1
  92. package/package.json +10 -6
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BelongsToMany = exports.BelongsTo = exports.HasMany = exports.HasOne = exports.Relation = void 0;
3
+ exports.MorphTo = exports.MorphMany = exports.MorphOne = exports.HasManyThrough = exports.HasOneThrough = exports.BelongsToMany = exports.BelongsTo = exports.HasMany = exports.HasOne = exports.Relation = void 0;
4
4
  const Database_1 = require("../Database");
5
+ // ─── Base ──────────────────────────────────────────────────────────────────
5
6
  /**
6
7
  * Base class for all relationship types
7
8
  */
@@ -10,11 +11,22 @@ class Relation {
10
11
  this.related = related;
11
12
  this.parent = parent;
12
13
  }
14
+ /**
15
+ * Compare if a related model instance is the same as another
16
+ */
17
+ is(model) {
18
+ if (!model)
19
+ return false;
20
+ const instance = new this.related();
21
+ const pk = instance['getPrimaryKey']();
22
+ return this.parent[pk] === model[pk];
23
+ }
24
+ isNot(model) {
25
+ return !this.is(model);
26
+ }
13
27
  }
14
28
  exports.Relation = Relation;
15
- /**
16
- * Has One relationship
17
- */
29
+ // ─── Has One ───────────────────────────────────────────────────────────────
18
30
  class HasOne extends Relation {
19
31
  constructor(related, parent, foreignKey, localKey = 'id') {
20
32
  super(related, parent);
@@ -23,9 +35,8 @@ class HasOne extends Relation {
23
35
  }
24
36
  async get() {
25
37
  const parentKeyValue = this.parent[this.localKey];
26
- if (!parentKeyValue) {
38
+ if (!parentKeyValue)
27
39
  return null;
28
- }
29
40
  return await this.related
30
41
  .where(this.foreignKey, parentKeyValue)
31
42
  .first();
@@ -34,11 +45,35 @@ class HasOne extends Relation {
34
45
  const parentKeyValue = this.parent[this.localKey];
35
46
  return this.related.query().where(this.foreignKey, parentKeyValue);
36
47
  }
48
+ getRelationCountQuery(outerTable, outerKey = this.localKey) {
49
+ const relatedTable = this.related.table;
50
+ return {
51
+ sql: `(SELECT COUNT(*) FROM ${relatedTable} WHERE ${relatedTable}.${this.foreignKey} = ${outerTable}.${outerKey})`,
52
+ bindings: []
53
+ };
54
+ }
55
+ /**
56
+ * Create a related record and associate it with the parent
57
+ */
58
+ async create(data) {
59
+ const parentKeyValue = this.parent[this.localKey];
60
+ return this.related.query().create({
61
+ ...data,
62
+ [this.foreignKey]: parentKeyValue,
63
+ });
64
+ }
65
+ /**
66
+ * Save a related model and associate it with the parent
67
+ */
68
+ async save(model) {
69
+ const parentKeyValue = this.parent[this.localKey];
70
+ model.setAttribute(this.foreignKey, parentKeyValue);
71
+ await model.save();
72
+ return model;
73
+ }
37
74
  }
38
75
  exports.HasOne = HasOne;
39
- /**
40
- * Has Many relationship
41
- */
76
+ // ─── Has Many ──────────────────────────────────────────────────────────────
42
77
  class HasMany extends Relation {
43
78
  constructor(related, parent, foreignKey, localKey = 'id') {
44
79
  super(related, parent);
@@ -47,9 +82,8 @@ class HasMany extends Relation {
47
82
  }
48
83
  async get() {
49
84
  const parentKeyValue = this.parent[this.localKey];
50
- if (!parentKeyValue) {
85
+ if (!parentKeyValue)
51
86
  return [];
52
- }
53
87
  return await this.related
54
88
  .where(this.foreignKey, parentKeyValue)
55
89
  .get();
@@ -58,11 +92,47 @@ class HasMany extends Relation {
58
92
  const parentKeyValue = this.parent[this.localKey];
59
93
  return this.related.query().where(this.foreignKey, parentKeyValue);
60
94
  }
95
+ getRelationCountQuery(outerTable, outerKey = this.localKey) {
96
+ const relatedTable = this.related.table;
97
+ return {
98
+ sql: `(SELECT COUNT(*) FROM ${relatedTable} WHERE ${relatedTable}.${this.foreignKey} = ${outerTable}.${outerKey})`,
99
+ bindings: []
100
+ };
101
+ }
102
+ /**
103
+ * Create a related record
104
+ */
105
+ async create(data) {
106
+ const parentKeyValue = this.parent[this.localKey];
107
+ return this.related.query().create({
108
+ ...data,
109
+ [this.foreignKey]: parentKeyValue,
110
+ });
111
+ }
112
+ /**
113
+ * Bulk-create multiple related records
114
+ */
115
+ async createMany(records) {
116
+ return Promise.all(records.map(data => this.create(data)));
117
+ }
118
+ /**
119
+ * Save a related model and associate it with the parent
120
+ */
121
+ async save(model) {
122
+ const parentKeyValue = this.parent[this.localKey];
123
+ model.setAttribute(this.foreignKey, parentKeyValue);
124
+ await model.save();
125
+ return model;
126
+ }
127
+ /**
128
+ * Save multiple related models
129
+ */
130
+ async saveMany(models) {
131
+ return Promise.all(models.map(m => this.save(m)));
132
+ }
61
133
  }
62
134
  exports.HasMany = HasMany;
63
- /**
64
- * Belongs To relationship
65
- */
135
+ // ─── Belongs To ────────────────────────────────────────────────────────────
66
136
  class BelongsTo extends Relation {
67
137
  constructor(related, parent, foreignKey, ownerKey = 'id') {
68
138
  super(related, parent);
@@ -71,9 +141,8 @@ class BelongsTo extends Relation {
71
141
  }
72
142
  async get() {
73
143
  const foreignKeyValue = this.parent[this.foreignKey];
74
- if (!foreignKeyValue) {
144
+ if (!foreignKeyValue)
75
145
  return null;
76
- }
77
146
  return await this.related
78
147
  .where(this.ownerKey, foreignKeyValue)
79
148
  .first();
@@ -82,11 +151,29 @@ class BelongsTo extends Relation {
82
151
  const foreignKeyValue = this.parent[this.foreignKey];
83
152
  return this.related.query().where(this.ownerKey, foreignKeyValue);
84
153
  }
154
+ getRelationCountQuery(outerTable, outerKey = this.foreignKey) {
155
+ const relatedTable = this.related.table;
156
+ return {
157
+ sql: `(SELECT COUNT(*) FROM ${relatedTable} WHERE ${relatedTable}.${this.ownerKey} = ${outerTable}.${outerKey})`,
158
+ bindings: []
159
+ };
160
+ }
161
+ /**
162
+ * Associate this model with the given related model (sets the FK on parent)
163
+ */
164
+ associate(model) {
165
+ this.parent.setAttribute(this.foreignKey, model[this.ownerKey]);
166
+ return this;
167
+ }
168
+ /**
169
+ * Dissociate — nullify the foreign key on the parent
170
+ */
171
+ dissociate() {
172
+ this.parent.setAttribute(this.foreignKey, null);
173
+ return this;
174
+ }
85
175
  }
86
176
  exports.BelongsTo = BelongsTo;
87
- /**
88
- * Belongs To Many relationship (many-to-many)
89
- */
90
177
  class BelongsToMany extends Relation {
91
178
  constructor(related, parent, pivotTable, foreignPivotKey, relatedPivotKey, parentKey = 'id', relatedKey = 'id') {
92
179
  super(related, parent);
@@ -95,30 +182,388 @@ class BelongsToMany extends Relation {
95
182
  this.relatedPivotKey = relatedPivotKey;
96
183
  this.parentKey = parentKey;
97
184
  this.relatedKey = relatedKey;
185
+ this.pivotColumns = [];
186
+ this.pivotWheres = [];
187
+ }
188
+ /**
189
+ * Include extra pivot columns in the result
190
+ */
191
+ withPivot(...columns) {
192
+ this.pivotColumns.push(...columns);
193
+ return this;
194
+ }
195
+ /**
196
+ * Filter results by a pivot column value
197
+ */
198
+ wherePivot(column, value) {
199
+ this.pivotWheres.push({ column, value });
200
+ return this;
98
201
  }
99
202
  async get() {
100
203
  const parentKeyValue = this.parent[this.parentKey];
101
- if (!parentKeyValue) {
204
+ if (!parentKeyValue)
102
205
  return [];
103
- }
104
206
  const relatedTable = this.related.table;
105
207
  const connection = await Database_1.Database.connection(this.related.connection);
106
- // Build the query with a join
208
+ // Build the pivot extra columns selector
209
+ const pivotCols = this.pivotColumns
210
+ .map(c => `${this.pivotTable}.${c} AS __pivot_${c}`)
211
+ .join(', ');
212
+ const selectExtra = pivotCols ? `, ${pivotCols}` : '';
213
+ // Build pivot where clauses
214
+ const pivotWhereSQL = this.pivotWheres
215
+ .map(w => `AND ${this.pivotTable}.${w.column} = ?`)
216
+ .join(' ');
217
+ const pivotWhereBindings = this.pivotWheres.map(w => w.value);
107
218
  const sql = `
108
- SELECT ${relatedTable}.*
219
+ SELECT ${relatedTable}.*${selectExtra}
109
220
  FROM ${relatedTable}
110
- INNER JOIN ${this.pivotTable}
221
+ INNER JOIN ${this.pivotTable}
111
222
  ON ${relatedTable}.${this.relatedKey} = ${this.pivotTable}.${this.relatedPivotKey}
112
223
  WHERE ${this.pivotTable}.${this.foreignPivotKey} = ?
224
+ ${pivotWhereSQL}
113
225
  `;
114
- const results = await connection.query(sql, [parentKeyValue]);
115
- // Hydrate the results into model instances
226
+ const results = await connection.query(sql, [parentKeyValue, ...pivotWhereBindings]);
116
227
  return results.map((data) => {
117
228
  const instance = new this.related();
118
- Object.assign(instance, data);
229
+ // Separate pivot columns from model columns
230
+ const pivotData = {};
231
+ const modelData = {};
232
+ for (const [key, val] of Object.entries(data)) {
233
+ if (key.startsWith('__pivot_')) {
234
+ pivotData[key.replace('__pivot_', '')] = val;
235
+ }
236
+ else {
237
+ modelData[key] = val;
238
+ }
239
+ }
240
+ instance.fill(modelData);
241
+ instance.setExists(true);
242
+ // Attach pivot data as a property on the model
243
+ instance.pivot = pivotData;
119
244
  return instance;
120
245
  });
121
246
  }
247
+ getRelationCountQuery(outerTable, outerKey = this.parentKey) {
248
+ const relatedTable = this.related.table;
249
+ const pivotWhereSQL = this.pivotWheres
250
+ .map(w => `AND ${this.pivotTable}.${w.column} = ?`)
251
+ .join(' ');
252
+ const pivotWhereBindings = this.pivotWheres.map(w => w.value);
253
+ const sql = `(SELECT COUNT(*) FROM ${relatedTable} INNER JOIN ${this.pivotTable} ON ${relatedTable}.${this.relatedKey} = ${this.pivotTable}.${this.relatedPivotKey} WHERE ${this.pivotTable}.${this.foreignPivotKey} = ${outerTable}.${outerKey} ${pivotWhereSQL})`;
254
+ return { sql, bindings: pivotWhereBindings };
255
+ }
256
+ /**
257
+ * Attach one or many related models to the pivot table
258
+ */
259
+ async attach(ids, pivotData = {}) {
260
+ const parentKeyValue = this.parent[this.parentKey];
261
+ const connection = await Database_1.Database.connection(this.related.connection);
262
+ const idList = Array.isArray(ids) ? ids : [ids];
263
+ const extraCols = Object.keys(pivotData);
264
+ const extraVals = Object.values(pivotData);
265
+ for (const relatedId of idList) {
266
+ const cols = [this.foreignPivotKey, this.relatedPivotKey, ...extraCols].join(', ');
267
+ const placeholders = [parentKeyValue, relatedId, ...extraVals].map(() => '?').join(', ');
268
+ const sql = `INSERT INTO ${this.pivotTable} (${cols}) VALUES (${placeholders})`;
269
+ await connection.query(sql, [parentKeyValue, relatedId, ...extraVals]);
270
+ }
271
+ }
272
+ /**
273
+ * Detach one, many, or all related models from the pivot table
274
+ */
275
+ async detach(ids) {
276
+ const parentKeyValue = this.parent[this.parentKey];
277
+ const connection = await Database_1.Database.connection(this.related.connection);
278
+ if (ids === undefined) {
279
+ // Detach all
280
+ await connection.query(`DELETE FROM ${this.pivotTable} WHERE ${this.foreignPivotKey} = ?`, [parentKeyValue]);
281
+ }
282
+ else {
283
+ const idList = Array.isArray(ids) ? ids : [ids];
284
+ const placeholders = idList.map(() => '?').join(', ');
285
+ await connection.query(`DELETE FROM ${this.pivotTable} WHERE ${this.foreignPivotKey} = ? AND ${this.relatedPivotKey} IN (${placeholders})`, [parentKeyValue, ...idList]);
286
+ }
287
+ }
288
+ /**
289
+ * Sync the pivot table — attach missing, detach extras
290
+ */
291
+ async sync(ids, pivotData = {}) {
292
+ const parentKeyValue = this.parent[this.parentKey];
293
+ const connection = await Database_1.Database.connection(this.related.connection);
294
+ // Get current pivot IDs
295
+ const existing = await connection.query(`SELECT ${this.relatedPivotKey} FROM ${this.pivotTable} WHERE ${this.foreignPivotKey} = ?`, [parentKeyValue]);
296
+ const existingIds = existing.map((row) => row[this.relatedPivotKey]);
297
+ const toAttach = ids.filter(id => !existingIds.includes(id));
298
+ const toDetach = existingIds.filter((id) => !ids.includes(id));
299
+ if (toAttach.length > 0)
300
+ await this.attach(toAttach, pivotData);
301
+ if (toDetach.length > 0)
302
+ await this.detach(toDetach);
303
+ }
304
+ /**
305
+ * Toggle — attach if not present, detach if already present
306
+ */
307
+ async toggle(ids) {
308
+ const parentKeyValue = this.parent[this.parentKey];
309
+ const connection = await Database_1.Database.connection(this.related.connection);
310
+ const idList = Array.isArray(ids) ? ids : [ids];
311
+ const existing = await connection.query(`SELECT ${this.relatedPivotKey} FROM ${this.pivotTable} WHERE ${this.foreignPivotKey} = ?`, [parentKeyValue]);
312
+ const existingIds = existing.map((row) => row[this.relatedPivotKey]);
313
+ const toAttach = idList.filter((id) => !existingIds.includes(id));
314
+ const toDetach = idList.filter((id) => existingIds.includes(id));
315
+ if (toAttach.length > 0)
316
+ await this.attach(toAttach);
317
+ if (toDetach.length > 0)
318
+ await this.detach(toDetach);
319
+ }
122
320
  }
123
321
  exports.BelongsToMany = BelongsToMany;
322
+ // ─── Has One Through ───────────────────────────────────────────────────────
323
+ /**
324
+ * HasOneThrough — relate models through an intermediate table.
325
+ *
326
+ * Example: Country → hasOneThrough(Capital, User)
327
+ * countries → through users → capitals
328
+ */
329
+ class HasOneThrough extends Relation {
330
+ constructor(related, parent, through, firstKey, // FK on through table pointing to parent
331
+ secondKey, // FK on related table pointing to through
332
+ localKey = 'id', // PK of parent
333
+ secondLocalKey = 'id' // PK of through model
334
+ ) {
335
+ super(related, parent);
336
+ this.through = through;
337
+ this.firstKey = firstKey;
338
+ this.secondKey = secondKey;
339
+ this.localKey = localKey;
340
+ this.secondLocalKey = secondLocalKey;
341
+ }
342
+ async get() {
343
+ const parentKeyValue = this.parent[this.localKey];
344
+ if (!parentKeyValue)
345
+ return null;
346
+ const throughTable = this.through.table;
347
+ const relatedTable = this.related.table;
348
+ const connection = await Database_1.Database.connection(this.related.connection);
349
+ const sql = `
350
+ SELECT ${relatedTable}.*
351
+ FROM ${relatedTable}
352
+ INNER JOIN ${throughTable}
353
+ ON ${relatedTable}.${this.secondKey} = ${throughTable}.${this.secondLocalKey}
354
+ WHERE ${throughTable}.${this.firstKey} = ?
355
+ LIMIT 1
356
+ `;
357
+ const results = await connection.query(sql, [parentKeyValue]);
358
+ if (!results.length)
359
+ return null;
360
+ const instance = new this.related();
361
+ instance.fill(results[0]);
362
+ instance.setExists(true);
363
+ return instance;
364
+ }
365
+ getRelationCountQuery(outerTable, outerKey = this.localKey) {
366
+ const throughTable = this.through.table;
367
+ const relatedTable = this.related.table;
368
+ const sql = `(SELECT COUNT(*) FROM ${relatedTable} INNER JOIN ${throughTable} ON ${relatedTable}.${this.secondKey} = ${throughTable}.${this.secondLocalKey} WHERE ${throughTable}.${this.firstKey} = ${outerTable}.${outerKey})`;
369
+ return { sql, bindings: [] };
370
+ }
371
+ }
372
+ exports.HasOneThrough = HasOneThrough;
373
+ // ─── Has Many Through ──────────────────────────────────────────────────────
374
+ /**
375
+ * HasManyThrough — relate models through an intermediate table.
376
+ *
377
+ * Example: Country → hasManyThrough(Post, User)
378
+ * countries → through users → posts
379
+ */
380
+ class HasManyThrough extends Relation {
381
+ constructor(related, parent, through, firstKey, secondKey, localKey = 'id', secondLocalKey = 'id') {
382
+ super(related, parent);
383
+ this.through = through;
384
+ this.firstKey = firstKey;
385
+ this.secondKey = secondKey;
386
+ this.localKey = localKey;
387
+ this.secondLocalKey = secondLocalKey;
388
+ }
389
+ async get() {
390
+ const parentKeyValue = this.parent[this.localKey];
391
+ if (!parentKeyValue)
392
+ return [];
393
+ const throughTable = this.through.table;
394
+ const relatedTable = this.related.table;
395
+ const connection = await Database_1.Database.connection(this.related.connection);
396
+ const sql = `
397
+ SELECT ${relatedTable}.*
398
+ FROM ${relatedTable}
399
+ INNER JOIN ${throughTable}
400
+ ON ${relatedTable}.${this.secondKey} = ${throughTable}.${this.secondLocalKey}
401
+ WHERE ${throughTable}.${this.firstKey} = ?
402
+ `;
403
+ const results = await connection.query(sql, [parentKeyValue]);
404
+ return results.map((data) => {
405
+ const instance = new this.related();
406
+ instance.fill(data);
407
+ instance.setExists(true);
408
+ return instance;
409
+ });
410
+ }
411
+ query() {
412
+ const parentKeyValue = this.parent[this.localKey];
413
+ const throughTable = this.through.table;
414
+ const relatedTable = this.related.table;
415
+ return Database_1.Database.table(relatedTable)
416
+ .whereRaw(`${relatedTable}.${this.secondKey} IN (SELECT ${this.secondLocalKey} FROM ${throughTable} WHERE ${this.firstKey} = ?)`, [parentKeyValue]);
417
+ }
418
+ getRelationCountQuery(outerTable, outerKey = this.localKey) {
419
+ const throughTable = this.through.table;
420
+ const relatedTable = this.related.table;
421
+ const sql = `(SELECT COUNT(*) FROM ${relatedTable} INNER JOIN ${throughTable} ON ${relatedTable}.${this.secondKey} = ${throughTable}.${this.secondLocalKey} WHERE ${throughTable}.${this.firstKey} = ${outerTable}.${outerKey})`;
422
+ return { sql, bindings: [] };
423
+ }
424
+ }
425
+ exports.HasManyThrough = HasManyThrough;
426
+ // ─── Polymorphic Relationships ─────────────────────────────────────────────
427
+ /**
428
+ * MorphOne — polymorphic has-one
429
+ *
430
+ * Example: Post → morphOne(Image, 'imageable')
431
+ * images table has: imageable_id, imageable_type
432
+ */
433
+ class MorphOne extends Relation {
434
+ constructor(related, parent, morphName, // e.g. 'imageable'
435
+ morphType, // column: imageable_type
436
+ morphId, // column: imageable_id
437
+ localKey = 'id') {
438
+ super(related, parent);
439
+ this.morphName = morphName;
440
+ this.morphType = morphType;
441
+ this.morphId = morphId;
442
+ this.localKey = localKey;
443
+ }
444
+ getMorphType() {
445
+ return this.parent.constructor.name;
446
+ }
447
+ async get() {
448
+ const parentKeyValue = this.parent[this.localKey];
449
+ if (!parentKeyValue)
450
+ return null;
451
+ return await this.related
452
+ .where(this.morphType, this.getMorphType())
453
+ .where(this.morphId, parentKeyValue)
454
+ .first();
455
+ }
456
+ query() {
457
+ const parentKeyValue = this.parent[this.localKey];
458
+ return this.related.query()
459
+ .where(this.morphType, this.getMorphType())
460
+ .where(this.morphId, parentKeyValue);
461
+ }
462
+ async create(data) {
463
+ const parentKeyValue = this.parent[this.localKey];
464
+ return this.related.query().create({
465
+ ...data,
466
+ [this.morphType]: this.getMorphType(),
467
+ [this.morphId]: parentKeyValue,
468
+ });
469
+ }
470
+ getRelationCountQuery(outerTable, outerKey = this.localKey) {
471
+ const relatedTable = this.related.table;
472
+ const sql = `(SELECT COUNT(*) FROM ${relatedTable} WHERE ${relatedTable}.${this.morphId} = ${outerTable}.${outerKey} AND ${relatedTable}.${this.morphType} = ?)`;
473
+ return { sql, bindings: [this.getMorphType()] };
474
+ }
475
+ }
476
+ exports.MorphOne = MorphOne;
477
+ /**
478
+ * MorphMany — polymorphic has-many
479
+ *
480
+ * Example: Post → morphMany(Comment, 'commentable')
481
+ */
482
+ class MorphMany extends Relation {
483
+ constructor(related, parent, morphName, morphType, morphId, localKey = 'id') {
484
+ super(related, parent);
485
+ this.morphName = morphName;
486
+ this.morphType = morphType;
487
+ this.morphId = morphId;
488
+ this.localKey = localKey;
489
+ }
490
+ getMorphType() {
491
+ return this.parent.constructor.name;
492
+ }
493
+ async get() {
494
+ const parentKeyValue = this.parent[this.localKey];
495
+ if (!parentKeyValue)
496
+ return [];
497
+ return await this.related
498
+ .where(this.morphType, this.getMorphType())
499
+ .where(this.morphId, parentKeyValue)
500
+ .get();
501
+ }
502
+ query() {
503
+ const parentKeyValue = this.parent[this.localKey];
504
+ return this.related.query()
505
+ .where(this.morphType, this.getMorphType())
506
+ .where(this.morphId, parentKeyValue);
507
+ }
508
+ async create(data) {
509
+ const parentKeyValue = this.parent[this.localKey];
510
+ return this.related.query().create({
511
+ ...data,
512
+ [this.morphType]: this.getMorphType(),
513
+ [this.morphId]: parentKeyValue,
514
+ });
515
+ }
516
+ async createMany(records) {
517
+ return Promise.all(records.map(d => this.create(d)));
518
+ }
519
+ getRelationCountQuery(outerTable, outerKey = this.localKey) {
520
+ const relatedTable = this.related.table;
521
+ const sql = `(SELECT COUNT(*) FROM ${relatedTable} WHERE ${relatedTable}.${this.morphId} = ${outerTable}.${outerKey} AND ${relatedTable}.${this.morphType} = ?)`;
522
+ return { sql, bindings: [this.getMorphType()] };
523
+ }
524
+ }
525
+ exports.MorphMany = MorphMany;
526
+ /**
527
+ * MorphTo — inverse polymorphic relationship
528
+ *
529
+ * Example: Comment → morphTo('commentable')
530
+ * reads commentable_type + commentable_id to find the owner
531
+ */
532
+ class MorphTo extends Relation {
533
+ constructor(parent, morphName, morphType, // column: commentable_type
534
+ morphId, // column: commentable_id
535
+ morphMap = {}) {
536
+ // Pass parent as related too (placeholder — resolved dynamically)
537
+ super(parent.constructor, parent);
538
+ this.morphName = morphName;
539
+ this.morphType = morphType;
540
+ this.morphId = morphId;
541
+ this.morphMap = new Map(Object.entries(morphMap));
542
+ }
543
+ /**
544
+ * Register a morph type → Model class mapping
545
+ */
546
+ map(morphMap) {
547
+ for (const [key, val] of Object.entries(morphMap)) {
548
+ this.morphMap.set(key, val);
549
+ }
550
+ return this;
551
+ }
552
+ async get() {
553
+ const morphType = this.parent[this.morphType];
554
+ const morphId = this.parent[this.morphId];
555
+ if (!morphType || !morphId)
556
+ return null;
557
+ const relatedClass = this.morphMap.get(morphType);
558
+ if (!relatedClass) {
559
+ throw new Error(`No morph map entry for type "${morphType}". ` +
560
+ `Call .map({ '${morphType}': YourModel }) on this MorphTo instance.`);
561
+ }
562
+ return await relatedClass.find(morphId);
563
+ }
564
+ getRelationCountQuery(outerTable, outerKey = this.morphId) {
565
+ throw new Error('Calling withCount on a MorphTo relationship is not supported yet natively. Please count inside the mapped relations.');
566
+ }
567
+ }
568
+ exports.MorphTo = MorphTo;
124
569
  //# sourceMappingURL=Relations.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Relations.js","sourceRoot":"","sources":["../../src/Model/Relations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Relations.js","sourceRoot":"","sources":["../../src/Model/Relations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Raw query expression
3
+ */
4
+ export declare class Expression {
5
+ protected value: string | number;
6
+ constructor(value: string | number);
7
+ /**
8
+ * Get the value of the expression
9
+ */
10
+ getValue(): string | number;
11
+ /**
12
+ * Convert the expression to a string
13
+ */
14
+ toString(): string;
15
+ }
16
+ //# sourceMappingURL=Expression.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Expression.d.ts","sourceRoot":"","sources":["../../src/Query/Expression.ts"],"names":[],"mappings":"AACA;;GAEG;AACH,qBAAa,UAAU;IACP,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;gBAAtB,KAAK,EAAE,MAAM,GAAG,MAAM;IAE5C;;OAEG;IACH,QAAQ,IAAI,MAAM,GAAG,MAAM;IAI3B;;OAEG;IACH,QAAQ,IAAI,MAAM;CAGrB"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Expression = void 0;
4
+ /**
5
+ * Raw query expression
6
+ */
7
+ class Expression {
8
+ constructor(value) {
9
+ this.value = value;
10
+ }
11
+ /**
12
+ * Get the value of the expression
13
+ */
14
+ getValue() {
15
+ return this.value;
16
+ }
17
+ /**
18
+ * Convert the expression to a string
19
+ */
20
+ toString() {
21
+ return String(this.getValue());
22
+ }
23
+ }
24
+ exports.Expression = Expression;
25
+ //# sourceMappingURL=Expression.js.map