@arikajs/database 0.0.1

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 (91) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +333 -0
  3. package/dist/Connections/MySQLConnection.d.ts +39 -0
  4. package/dist/Connections/MySQLConnection.d.ts.map +1 -0
  5. package/dist/Connections/MySQLConnection.js +91 -0
  6. package/dist/Connections/MySQLConnection.js.map +1 -0
  7. package/dist/Connections/PostgreSQLConnection.d.ts +39 -0
  8. package/dist/Connections/PostgreSQLConnection.d.ts.map +1 -0
  9. package/dist/Connections/PostgreSQLConnection.js +85 -0
  10. package/dist/Connections/PostgreSQLConnection.js.map +1 -0
  11. package/dist/Connections/SQLiteConnection.d.ts +51 -0
  12. package/dist/Connections/SQLiteConnection.d.ts.map +1 -0
  13. package/dist/Connections/SQLiteConnection.js +111 -0
  14. package/dist/Connections/SQLiteConnection.js.map +1 -0
  15. package/dist/Contracts/Database.d.ts +131 -0
  16. package/dist/Contracts/Database.d.ts.map +1 -0
  17. package/dist/Contracts/Database.js +3 -0
  18. package/dist/Contracts/Database.js.map +1 -0
  19. package/dist/Contracts/Schema.d.ts +124 -0
  20. package/dist/Contracts/Schema.d.ts.map +1 -0
  21. package/dist/Contracts/Schema.js +3 -0
  22. package/dist/Contracts/Schema.js.map +1 -0
  23. package/dist/Database.d.ts +38 -0
  24. package/dist/Database.d.ts.map +1 -0
  25. package/dist/Database.js +55 -0
  26. package/dist/Database.js.map +1 -0
  27. package/dist/DatabaseManager.d.ts +36 -0
  28. package/dist/DatabaseManager.d.ts.map +1 -0
  29. package/dist/DatabaseManager.js +126 -0
  30. package/dist/DatabaseManager.js.map +1 -0
  31. package/dist/Migrations/Migration.d.ts +17 -0
  32. package/dist/Migrations/Migration.d.ts.map +1 -0
  33. package/dist/Migrations/Migration.js +10 -0
  34. package/dist/Migrations/Migration.js.map +1 -0
  35. package/dist/Migrations/Migrator.d.ts +51 -0
  36. package/dist/Migrations/Migrator.d.ts.map +1 -0
  37. package/dist/Migrations/Migrator.js +166 -0
  38. package/dist/Migrations/Migrator.js.map +1 -0
  39. package/dist/Model/Model.d.ts +309 -0
  40. package/dist/Model/Model.d.ts.map +1 -0
  41. package/dist/Model/Model.js +607 -0
  42. package/dist/Model/Model.js.map +1 -0
  43. package/dist/Model/Relations.d.ts +53 -0
  44. package/dist/Model/Relations.d.ts.map +1 -0
  45. package/dist/Model/Relations.js +124 -0
  46. package/dist/Model/Relations.js.map +1 -0
  47. package/dist/Model/SoftDeletes.d.ts +24 -0
  48. package/dist/Model/SoftDeletes.d.ts.map +1 -0
  49. package/dist/Model/SoftDeletes.js +95 -0
  50. package/dist/Model/SoftDeletes.js.map +1 -0
  51. package/dist/Query/QueryBuilder.d.ts +94 -0
  52. package/dist/Query/QueryBuilder.d.ts.map +1 -0
  53. package/dist/Query/QueryBuilder.js +276 -0
  54. package/dist/Query/QueryBuilder.js.map +1 -0
  55. package/dist/Schema/Grammars/Grammar.d.ts +27 -0
  56. package/dist/Schema/Grammars/Grammar.d.ts.map +1 -0
  57. package/dist/Schema/Grammars/Grammar.js +25 -0
  58. package/dist/Schema/Grammars/Grammar.js.map +1 -0
  59. package/dist/Schema/Grammars/MySQLGrammar.d.ts +13 -0
  60. package/dist/Schema/Grammars/MySQLGrammar.d.ts.map +1 -0
  61. package/dist/Schema/Grammars/MySQLGrammar.js +78 -0
  62. package/dist/Schema/Grammars/MySQLGrammar.js.map +1 -0
  63. package/dist/Schema/Grammars/PostgreSQLGrammar.d.ts +13 -0
  64. package/dist/Schema/Grammars/PostgreSQLGrammar.d.ts.map +1 -0
  65. package/dist/Schema/Grammars/PostgreSQLGrammar.js +57 -0
  66. package/dist/Schema/Grammars/PostgreSQLGrammar.js.map +1 -0
  67. package/dist/Schema/Grammars/SQLiteGrammar.d.ts +13 -0
  68. package/dist/Schema/Grammars/SQLiteGrammar.d.ts.map +1 -0
  69. package/dist/Schema/Grammars/SQLiteGrammar.js +53 -0
  70. package/dist/Schema/Grammars/SQLiteGrammar.js.map +1 -0
  71. package/dist/Schema/Schema.d.ts +120 -0
  72. package/dist/Schema/Schema.d.ts.map +1 -0
  73. package/dist/Schema/Schema.js +226 -0
  74. package/dist/Schema/Schema.js.map +1 -0
  75. package/dist/Schema/SchemaBuilder.d.ts +24 -0
  76. package/dist/Schema/SchemaBuilder.d.ts.map +1 -0
  77. package/dist/Schema/SchemaBuilder.js +49 -0
  78. package/dist/Schema/SchemaBuilder.js.map +1 -0
  79. package/dist/Seeders/SeedRunner.d.ts +22 -0
  80. package/dist/Seeders/SeedRunner.d.ts.map +1 -0
  81. package/dist/Seeders/SeedRunner.js +72 -0
  82. package/dist/Seeders/SeedRunner.js.map +1 -0
  83. package/dist/Seeders/Seeder.d.ts +11 -0
  84. package/dist/Seeders/Seeder.d.ts.map +1 -0
  85. package/dist/Seeders/Seeder.js +10 -0
  86. package/dist/Seeders/Seeder.js.map +1 -0
  87. package/dist/index.d.ts +19 -0
  88. package/dist/index.d.ts.map +1 -0
  89. package/dist/index.js +52 -0
  90. package/dist/index.js.map +1 -0
  91. package/package.json +53 -0
@@ -0,0 +1,607 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ModelQueryBuilder = exports.Model = void 0;
4
+ const Database_1 = require("../Database");
5
+ const Relations_1 = require("./Relations");
6
+ /**
7
+ * Base Model class for Active Record pattern
8
+ */
9
+ class Model {
10
+ constructor() {
11
+ /**
12
+ * Instance table name (for backward compatibility)
13
+ */
14
+ this.table = '';
15
+ /**
16
+ * Instance primary key (for backward compatibility)
17
+ */
18
+ this.primaryKey = 'id';
19
+ /**
20
+ * Indicates if the model exists in the database
21
+ */
22
+ this.exists = false;
23
+ /**
24
+ * The model's original attributes (for dirty checking)
25
+ */
26
+ this.original = {};
27
+ /**
28
+ * The model's attributes
29
+ */
30
+ this.attributes = {};
31
+ /**
32
+ * Loaded relationships
33
+ */
34
+ this.relations = {};
35
+ }
36
+ /**
37
+ * Create a new query builder for the model
38
+ */
39
+ static query() {
40
+ const queryBuilder = Database_1.Database.table(this.getTableName(), this.getConnectionName());
41
+ return new ModelQueryBuilder(queryBuilder, this);
42
+ }
43
+ /**
44
+ * Find a record by ID
45
+ */
46
+ static async find(id) {
47
+ return this.query().find(id);
48
+ }
49
+ /**
50
+ * Find a record by ID or throw an error
51
+ */
52
+ static async findOrFail(id) {
53
+ const result = await this.find(id);
54
+ if (!result) {
55
+ throw new Error(`${this.name} not found with ID ${id}`);
56
+ }
57
+ return result;
58
+ }
59
+ /**
60
+ * Get all records
61
+ */
62
+ static async all() {
63
+ return this.query().all();
64
+ }
65
+ /**
66
+ * Add a where clause
67
+ */
68
+ static where(column, operator, value) {
69
+ return this.query().where(column, operator, value);
70
+ }
71
+ /**
72
+ * Add an OR where clause
73
+ */
74
+ static orWhere(column, operator, value) {
75
+ return this.query().orWhere(column, operator, value);
76
+ }
77
+ /**
78
+ * Add a where in clause
79
+ */
80
+ static whereIn(column, values) {
81
+ return this.query().whereIn(column, values);
82
+ }
83
+ /**
84
+ * Add a where not in clause
85
+ */
86
+ static whereNotIn(column, values) {
87
+ return this.query().whereNotIn(column, values);
88
+ }
89
+ /**
90
+ * Add a where null clause
91
+ */
92
+ static whereNull(column) {
93
+ return this.query().whereNull(column);
94
+ }
95
+ /**
96
+ * Add a where not null clause
97
+ */
98
+ static whereNotNull(column) {
99
+ return this.query().whereNotNull(column);
100
+ }
101
+ /**
102
+ * Add an order by clause
103
+ */
104
+ static orderBy(column, direction) {
105
+ return this.query().orderBy(column, direction);
106
+ }
107
+ /**
108
+ * Add a limit clause
109
+ */
110
+ static limit(limit) {
111
+ return this.query().limit(limit);
112
+ }
113
+ /**
114
+ * Add an offset clause
115
+ */
116
+ static offset(offset) {
117
+ return this.query().offset(offset);
118
+ }
119
+ /**
120
+ * Create a new record
121
+ */
122
+ static async create(data) {
123
+ return this.query().create(data);
124
+ }
125
+ /**
126
+ * Get the first record
127
+ */
128
+ static async first() {
129
+ return this.query().first();
130
+ }
131
+ /**
132
+ * Get records
133
+ */
134
+ static async get() {
135
+ return this.query().get();
136
+ }
137
+ /**
138
+ * Get the count of records
139
+ */
140
+ static async count(column) {
141
+ return this.query().count(column);
142
+ }
143
+ /**
144
+ * Eager load relationships
145
+ */
146
+ static with(relations) {
147
+ return this.query().with(relations);
148
+ }
149
+ /**
150
+ * Delete a record by ID
151
+ */
152
+ static async delete(id) {
153
+ return this.query().delete(id);
154
+ }
155
+ /**
156
+ * Get the table name
157
+ */
158
+ static getTableName() {
159
+ if (!this.table) {
160
+ throw new Error('Table name not defined for model');
161
+ }
162
+ return this.table;
163
+ }
164
+ /**
165
+ * Get the connection name
166
+ */
167
+ static getConnectionName() {
168
+ return this.connection;
169
+ }
170
+ /**
171
+ * Get the primary key
172
+ */
173
+ static getPrimaryKeyName() {
174
+ return this.primaryKey;
175
+ }
176
+ /**
177
+ * Get the table name (instance method)
178
+ */
179
+ getTable() {
180
+ const constructor = this.constructor;
181
+ return constructor.getTableName();
182
+ }
183
+ /**
184
+ * Get the connection name (instance method)
185
+ */
186
+ getConnection() {
187
+ const constructor = this.constructor;
188
+ return constructor.getConnectionName();
189
+ }
190
+ /**
191
+ * Get the primary key (instance method)
192
+ */
193
+ getPrimaryKey() {
194
+ const constructor = this.constructor;
195
+ return constructor.getPrimaryKeyName();
196
+ }
197
+ // ==================== Instance Methods ====================
198
+ /**
199
+ * Get an attribute value
200
+ */
201
+ getAttribute(key) {
202
+ return this.attributes[key];
203
+ }
204
+ /**
205
+ * Set an attribute value
206
+ */
207
+ setAttribute(key, value) {
208
+ this.attributes[key] = value;
209
+ }
210
+ /**
211
+ * Fill the model with an array of attributes
212
+ */
213
+ fill(attributes) {
214
+ for (const [key, value] of Object.entries(attributes)) {
215
+ this.setAttribute(key, value);
216
+ }
217
+ return this;
218
+ }
219
+ /**
220
+ * Save the model to the database
221
+ */
222
+ async save() {
223
+ const query = Database_1.Database.table(this.getTable(), this.getConnection());
224
+ if (this.exists) {
225
+ // Update existing record
226
+ const primaryKey = this.getPrimaryKey();
227
+ const id = this.attributes[primaryKey];
228
+ if (!id) {
229
+ throw new Error('Cannot update model without primary key value');
230
+ }
231
+ const dirty = this.getDirty();
232
+ if (Object.keys(dirty).length === 0) {
233
+ return true; // No changes to save
234
+ }
235
+ await query.where(primaryKey, id).update(dirty);
236
+ this.syncOriginal();
237
+ return true;
238
+ }
239
+ else {
240
+ // Insert new record
241
+ const result = await query.insert(this.attributes);
242
+ // Set the primary key if it was auto-generated
243
+ const primaryKey = this.getPrimaryKey();
244
+ if (result && result.insertId && !this.attributes[primaryKey]) {
245
+ this.attributes[primaryKey] = result.insertId;
246
+ }
247
+ this.exists = true;
248
+ this.syncOriginal();
249
+ return true;
250
+ }
251
+ }
252
+ /**
253
+ * Delete the model from the database
254
+ */
255
+ async deleteInstance() {
256
+ if (!this.exists) {
257
+ return false;
258
+ }
259
+ const primaryKey = this.getPrimaryKey();
260
+ const id = this.attributes[primaryKey];
261
+ if (!id) {
262
+ throw new Error('Cannot delete model without primary key value');
263
+ }
264
+ const query = Database_1.Database.table(this.getTable(), this.getConnection());
265
+ await query.where(primaryKey, id).delete();
266
+ this.exists = false;
267
+ return true;
268
+ }
269
+ /**
270
+ * Refresh the model from the database
271
+ */
272
+ async refresh() {
273
+ if (!this.exists) {
274
+ throw new Error('Cannot refresh a model that does not exist');
275
+ }
276
+ const primaryKey = this.getPrimaryKey();
277
+ const id = this.attributes[primaryKey];
278
+ const fresh = await Database_1.Database.table(this.getTable(), this.getConnection())
279
+ .where(primaryKey, id)
280
+ .first();
281
+ if (!fresh) {
282
+ throw new Error('Model not found in database');
283
+ }
284
+ this.attributes = fresh;
285
+ this.syncOriginal();
286
+ return this;
287
+ }
288
+ /**
289
+ * Get the attributes that have been changed since last sync
290
+ */
291
+ getDirty() {
292
+ const dirty = {};
293
+ for (const [key, value] of Object.entries(this.attributes)) {
294
+ if (this.original[key] !== value) {
295
+ dirty[key] = value;
296
+ }
297
+ }
298
+ return dirty;
299
+ }
300
+ /**
301
+ * Check if the model or specific attribute is dirty
302
+ */
303
+ isDirty(attribute) {
304
+ if (attribute) {
305
+ return this.original[attribute] !== this.attributes[attribute];
306
+ }
307
+ return Object.keys(this.getDirty()).length > 0;
308
+ }
309
+ /**
310
+ * Sync the original attributes with the current attributes
311
+ */
312
+ syncOriginal() {
313
+ this.original = { ...this.attributes };
314
+ }
315
+ /**
316
+ * Mark the model as existing
317
+ */
318
+ setExists(exists) {
319
+ this.exists = exists;
320
+ return this;
321
+ }
322
+ /**
323
+ * Convert the model to a plain object
324
+ */
325
+ toJSON() {
326
+ return {
327
+ ...this.attributes,
328
+ ...this.relations,
329
+ };
330
+ }
331
+ // ==================== Relationship Methods ====================
332
+ /**
333
+ * Define a has-one relationship
334
+ */
335
+ hasOne(related, foreignKey, localKey) {
336
+ const fk = foreignKey || `${this.getTable()}_id`;
337
+ const lk = localKey || this.getPrimaryKey();
338
+ return new Relations_1.HasOne(related, this, fk, lk);
339
+ }
340
+ /**
341
+ * Define a has-many relationship
342
+ */
343
+ hasMany(related, foreignKey, localKey) {
344
+ const fk = foreignKey || `${this.getTable()}_id`;
345
+ const lk = localKey || this.getPrimaryKey();
346
+ return new Relations_1.HasMany(related, this, fk, lk);
347
+ }
348
+ /**
349
+ * Define a belongs-to relationship
350
+ */
351
+ belongsTo(related, foreignKey, ownerKey) {
352
+ const relatedTable = related.table;
353
+ const fk = foreignKey || `${relatedTable}_id`;
354
+ const ok = ownerKey || 'id';
355
+ return new Relations_1.BelongsTo(related, this, fk, ok);
356
+ }
357
+ /**
358
+ * Define a belongs-to-many relationship
359
+ */
360
+ belongsToMany(related, pivotTable, foreignPivotKey, relatedPivotKey, parentKey, relatedKey) {
361
+ const relatedTable = related.table;
362
+ const thisTable = this.getTable();
363
+ const pivot = pivotTable || [thisTable, relatedTable].sort().join('_');
364
+ const fpk = foreignPivotKey || `${thisTable}_id`;
365
+ const rpk = relatedPivotKey || `${relatedTable}_id`;
366
+ const pk = parentKey || this.getPrimaryKey();
367
+ const rk = relatedKey || 'id';
368
+ return new Relations_1.BelongsToMany(related, this, pivot, fpk, rpk, pk, rk);
369
+ }
370
+ /**
371
+ * Get a relationship value
372
+ */
373
+ getRelation(name) {
374
+ return this.relations[name];
375
+ }
376
+ /**
377
+ * Set a relationship value
378
+ */
379
+ setRelation(name, value) {
380
+ this.relations[name] = value;
381
+ return this;
382
+ }
383
+ /**
384
+ * Load a relationship
385
+ */
386
+ async load(relation) {
387
+ if (typeof this[relation] === 'function') {
388
+ const relationInstance = this[relation]();
389
+ const result = await relationInstance.get();
390
+ this.setRelation(relation, result);
391
+ }
392
+ return this;
393
+ }
394
+ }
395
+ exports.Model = Model;
396
+ /**
397
+ * The table associated with the model
398
+ */
399
+ Model.table = '';
400
+ /**
401
+ * The primary key for the model
402
+ */
403
+ Model.primaryKey = 'id';
404
+ /**
405
+ * Model query builder wrapper
406
+ */
407
+ class ModelQueryBuilder {
408
+ constructor(queryBuilder, modelClass) {
409
+ this.queryBuilder = queryBuilder;
410
+ this.modelClass = modelClass;
411
+ this.eagerLoad = new Map();
412
+ }
413
+ /**
414
+ * Get all records
415
+ */
416
+ async all() {
417
+ const results = await this.queryBuilder.get();
418
+ const models = results.map(data => this.hydrate(data));
419
+ return await this.loadRelations(models);
420
+ }
421
+ /**
422
+ * Find a record by ID
423
+ */
424
+ async find(id) {
425
+ const instance = new this.modelClass();
426
+ const result = await this.queryBuilder
427
+ .where(instance['getPrimaryKey'](), id)
428
+ .first();
429
+ if (!result) {
430
+ return null;
431
+ }
432
+ const model = this.hydrate(result);
433
+ await this.loadRelations([model]);
434
+ return model;
435
+ }
436
+ /**
437
+ * Create a new record
438
+ */
439
+ async create(data) {
440
+ const result = await this.queryBuilder.insert(data);
441
+ const instance = this.hydrate(data);
442
+ // Set the primary key if it was auto-generated
443
+ const primaryKey = instance['getPrimaryKey']();
444
+ if (result && result.insertId && !data[primaryKey]) {
445
+ instance.setAttribute(primaryKey, result.insertId);
446
+ }
447
+ instance.setExists(true);
448
+ instance['syncOriginal']();
449
+ return instance;
450
+ }
451
+ /**
452
+ * Add a where clause
453
+ */
454
+ where(column, operator, value) {
455
+ this.queryBuilder.where(column, operator, value);
456
+ return this;
457
+ }
458
+ /**
459
+ * Add an OR where clause
460
+ */
461
+ orWhere(column, operator, value) {
462
+ this.queryBuilder.orWhere(column, operator, value);
463
+ return this;
464
+ }
465
+ /**
466
+ * Add a where in clause
467
+ */
468
+ whereIn(column, values) {
469
+ this.queryBuilder.whereIn(column, values);
470
+ return this;
471
+ }
472
+ /**
473
+ * Add a where not in clause
474
+ */
475
+ whereNotIn(column, values) {
476
+ this.queryBuilder.whereNotIn(column, values);
477
+ return this;
478
+ }
479
+ /**
480
+ * Add a where null clause
481
+ */
482
+ whereNull(column) {
483
+ this.queryBuilder.whereNull(column);
484
+ return this;
485
+ }
486
+ /**
487
+ * Add a where not null clause
488
+ */
489
+ whereNotNull(column) {
490
+ this.queryBuilder.whereNotNull(column);
491
+ return this;
492
+ }
493
+ /**
494
+ * Add an order by clause
495
+ */
496
+ orderBy(column, direction) {
497
+ this.queryBuilder.orderBy(column, direction);
498
+ return this;
499
+ }
500
+ /**
501
+ * Add a limit clause
502
+ */
503
+ limit(limit) {
504
+ this.queryBuilder.limit(limit);
505
+ return this;
506
+ }
507
+ /**
508
+ * Add an offset clause
509
+ */
510
+ offset(offset) {
511
+ this.queryBuilder.offset(offset);
512
+ return this;
513
+ }
514
+ /**
515
+ * Update records
516
+ */
517
+ async update(data) {
518
+ return await this.queryBuilder.update(data);
519
+ }
520
+ /**
521
+ * Delete a record by ID
522
+ */
523
+ async delete(id) {
524
+ if (id !== undefined) {
525
+ const instance = new this.modelClass();
526
+ this.queryBuilder.where(instance['getPrimaryKey'](), id);
527
+ }
528
+ return await this.queryBuilder.delete();
529
+ }
530
+ /**
531
+ * Get the first record
532
+ */
533
+ async first() {
534
+ const result = await this.queryBuilder.first();
535
+ if (!result) {
536
+ return null;
537
+ }
538
+ const model = this.hydrate(result);
539
+ await this.loadRelations([model]);
540
+ return model;
541
+ }
542
+ /**
543
+ * Get records
544
+ */
545
+ async get() {
546
+ const results = await this.queryBuilder.get();
547
+ const models = results.map(data => this.hydrate(data));
548
+ return await this.loadRelations(models);
549
+ }
550
+ /**
551
+ * Get the count of records
552
+ */
553
+ async count(column) {
554
+ return await this.queryBuilder.count(column);
555
+ }
556
+ /**
557
+ * Eager load relationships
558
+ */
559
+ with(relations) {
560
+ if (typeof relations === 'string') {
561
+ this.eagerLoad.set(relations, null);
562
+ }
563
+ else if (Array.isArray(relations)) {
564
+ relations.forEach(rel => this.eagerLoad.set(rel, null));
565
+ }
566
+ else {
567
+ Object.entries(relations).forEach(([rel, callback]) => {
568
+ this.eagerLoad.set(rel, callback);
569
+ });
570
+ }
571
+ return this;
572
+ }
573
+ /**
574
+ * Hydrate a model instance from data
575
+ */
576
+ hydrate(data) {
577
+ const instance = new this.modelClass();
578
+ instance['attributes'] = { ...data };
579
+ instance['original'] = { ...data };
580
+ instance['exists'] = true;
581
+ return instance;
582
+ }
583
+ /**
584
+ * Load eager loaded relationships
585
+ */
586
+ async loadRelations(models) {
587
+ if (models.length === 0 || this.eagerLoad.size === 0) {
588
+ return models;
589
+ }
590
+ for (const [relation, callback] of this.eagerLoad.entries()) {
591
+ for (const model of models) {
592
+ if (typeof model[relation] === 'function') {
593
+ const relationInstance = model[relation]();
594
+ // Apply callback if provided
595
+ if (callback && relationInstance.query) {
596
+ callback(relationInstance.query());
597
+ }
598
+ const result = await relationInstance.get();
599
+ model.setRelation(relation, result);
600
+ }
601
+ }
602
+ }
603
+ return models;
604
+ }
605
+ }
606
+ exports.ModelQueryBuilder = ModelQueryBuilder;
607
+ //# sourceMappingURL=Model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Model.js","sourceRoot":"","sources":["../../src/Model/Model.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ import { Model, ModelQueryBuilder } from './Model';
2
+ /**
3
+ * Base class for all relationship types
4
+ */
5
+ export declare abstract class Relation<T extends Model = Model> {
6
+ protected related: typeof Model;
7
+ protected parent: Model;
8
+ constructor(related: typeof Model, parent: Model);
9
+ abstract get(): Promise<T | T[] | null>;
10
+ }
11
+ /**
12
+ * Has One relationship
13
+ */
14
+ export declare class HasOne<T extends Model = Model> extends Relation<T> {
15
+ protected foreignKey: string;
16
+ protected localKey: string;
17
+ constructor(related: typeof Model, parent: Model, foreignKey: string, localKey?: string);
18
+ get(): Promise<T | null>;
19
+ query(): ModelQueryBuilder<T>;
20
+ }
21
+ /**
22
+ * Has Many relationship
23
+ */
24
+ export declare class HasMany<T extends Model = Model> extends Relation<T> {
25
+ protected foreignKey: string;
26
+ protected localKey: string;
27
+ constructor(related: typeof Model, parent: Model, foreignKey: string, localKey?: string);
28
+ get(): Promise<T[]>;
29
+ query(): ModelQueryBuilder<T>;
30
+ }
31
+ /**
32
+ * Belongs To relationship
33
+ */
34
+ export declare class BelongsTo<T extends Model = Model> extends Relation<T> {
35
+ protected foreignKey: string;
36
+ protected ownerKey: string;
37
+ constructor(related: typeof Model, parent: Model, foreignKey: string, ownerKey?: string);
38
+ get(): Promise<T | null>;
39
+ query(): ModelQueryBuilder<T>;
40
+ }
41
+ /**
42
+ * Belongs To Many relationship (many-to-many)
43
+ */
44
+ export declare class BelongsToMany<T extends Model = Model> extends Relation<T> {
45
+ protected pivotTable: string;
46
+ protected foreignPivotKey: string;
47
+ protected relatedPivotKey: string;
48
+ protected parentKey: string;
49
+ protected relatedKey: string;
50
+ constructor(related: typeof Model, parent: Model, pivotTable: string, foreignPivotKey: string, relatedPivotKey: string, parentKey?: string, relatedKey?: string);
51
+ get(): Promise<T[]>;
52
+ }
53
+ //# sourceMappingURL=Relations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Relations.d.ts","sourceRoot":"","sources":["../../src/Model/Relations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAGnD;;GAEG;AACH,8BAAsB,QAAQ,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK;IAE9C,SAAS,CAAC,OAAO,EAAE,OAAO,KAAK;IAC/B,SAAS,CAAC,MAAM,EAAE,KAAK;gBADb,OAAO,EAAE,OAAO,KAAK,EACrB,MAAM,EAAE,KAAK;IAG3B,QAAQ,CAAC,GAAG,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC;CAC1C;AAED;;GAEG;AACH,qBAAa,MAAM,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,CAAE,SAAQ,QAAQ,CAAC,CAAC,CAAC;IAIxD,SAAS,CAAC,UAAU,EAAE,MAAM;IAC5B,SAAS,CAAC,QAAQ,EAAE,MAAM;gBAH1B,OAAO,EAAE,OAAO,KAAK,EACrB,MAAM,EAAE,KAAK,EACH,UAAU,EAAE,MAAM,EAClB,QAAQ,GAAE,MAAa;IAK/B,GAAG,IAAI,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAY9B,KAAK,IAAI,iBAAiB,CAAC,CAAC,CAAC;CAIhC;AAED;;GAEG;AACH,qBAAa,OAAO,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,CAAE,SAAQ,QAAQ,CAAC,CAAC,CAAC;IAIzD,SAAS,CAAC,UAAU,EAAE,MAAM;IAC5B,SAAS,CAAC,QAAQ,EAAE,MAAM;gBAH1B,OAAO,EAAE,OAAO,KAAK,EACrB,MAAM,EAAE,KAAK,EACH,UAAU,EAAE,MAAM,EAClB,QAAQ,GAAE,MAAa;IAK/B,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC;IAYzB,KAAK,IAAI,iBAAiB,CAAC,CAAC,CAAC;CAIhC;AAED;;GAEG;AACH,qBAAa,SAAS,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,CAAE,SAAQ,QAAQ,CAAC,CAAC,CAAC;IAI3D,SAAS,CAAC,UAAU,EAAE,MAAM;IAC5B,SAAS,CAAC,QAAQ,EAAE,MAAM;gBAH1B,OAAO,EAAE,OAAO,KAAK,EACrB,MAAM,EAAE,KAAK,EACH,UAAU,EAAE,MAAM,EAClB,QAAQ,GAAE,MAAa;IAK/B,GAAG,IAAI,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAY9B,KAAK,IAAI,iBAAiB,CAAC,CAAC,CAAC;CAIhC;AAED;;GAEG;AACH,qBAAa,aAAa,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,CAAE,SAAQ,QAAQ,CAAC,CAAC,CAAC;IAI/D,SAAS,CAAC,UAAU,EAAE,MAAM;IAC5B,SAAS,CAAC,eAAe,EAAE,MAAM;IACjC,SAAS,CAAC,eAAe,EAAE,MAAM;IACjC,SAAS,CAAC,SAAS,EAAE,MAAM;IAC3B,SAAS,CAAC,UAAU,EAAE,MAAM;gBAN5B,OAAO,EAAE,OAAO,KAAK,EACrB,MAAM,EAAE,KAAK,EACH,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,MAAM,EACvB,eAAe,EAAE,MAAM,EACvB,SAAS,GAAE,MAAa,EACxB,UAAU,GAAE,MAAa;IAKjC,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC;CA4B5B"}