@orchestr-sh/orchestr 1.0.1 → 1.1.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 (96) hide show
  1. package/dist/Database/Adapters/DrizzleAdapter.d.ts +119 -0
  2. package/dist/Database/Adapters/DrizzleAdapter.d.ts.map +1 -0
  3. package/dist/Database/Adapters/DrizzleAdapter.js +384 -0
  4. package/dist/Database/Adapters/DrizzleAdapter.js.map +1 -0
  5. package/dist/Database/Connection.d.ts +103 -0
  6. package/dist/Database/Connection.d.ts.map +1 -0
  7. package/dist/Database/Connection.js +164 -0
  8. package/dist/Database/Connection.js.map +1 -0
  9. package/dist/Database/Contracts/DatabaseAdapter.d.ts +85 -0
  10. package/dist/Database/Contracts/DatabaseAdapter.d.ts.map +1 -0
  11. package/dist/Database/Contracts/DatabaseAdapter.js +9 -0
  12. package/dist/Database/Contracts/DatabaseAdapter.js.map +1 -0
  13. package/dist/Database/Contracts/QueryBuilderInterface.d.ts +196 -0
  14. package/dist/Database/Contracts/QueryBuilderInterface.d.ts.map +1 -0
  15. package/dist/Database/Contracts/QueryBuilderInterface.js +8 -0
  16. package/dist/Database/Contracts/QueryBuilderInterface.js.map +1 -0
  17. package/dist/Database/Contracts/Schema.d.ts +234 -0
  18. package/dist/Database/Contracts/Schema.d.ts.map +1 -0
  19. package/dist/Database/Contracts/Schema.js +8 -0
  20. package/dist/Database/Contracts/Schema.js.map +1 -0
  21. package/dist/Database/DatabaseManager.d.ts +61 -0
  22. package/dist/Database/DatabaseManager.d.ts.map +1 -0
  23. package/dist/Database/DatabaseManager.js +102 -0
  24. package/dist/Database/DatabaseManager.js.map +1 -0
  25. package/dist/Database/DatabaseServiceProvider.d.ts +17 -0
  26. package/dist/Database/DatabaseServiceProvider.d.ts.map +1 -0
  27. package/dist/Database/DatabaseServiceProvider.js +44 -0
  28. package/dist/Database/DatabaseServiceProvider.js.map +1 -0
  29. package/dist/Database/Eloquent/Builder.d.ts +76 -0
  30. package/dist/Database/Eloquent/Builder.d.ts.map +1 -0
  31. package/dist/Database/Eloquent/Builder.js +154 -0
  32. package/dist/Database/Eloquent/Builder.js.map +1 -0
  33. package/dist/Database/Eloquent/Collection.d.ts +137 -0
  34. package/dist/Database/Eloquent/Collection.d.ts.map +1 -0
  35. package/dist/Database/Eloquent/Collection.js +284 -0
  36. package/dist/Database/Eloquent/Collection.js.map +1 -0
  37. package/dist/Database/Eloquent/Concerns/HasAttributes.d.ts +44 -0
  38. package/dist/Database/Eloquent/Concerns/HasAttributes.d.ts.map +1 -0
  39. package/dist/Database/Eloquent/Concerns/HasAttributes.js +8 -0
  40. package/dist/Database/Eloquent/Concerns/HasAttributes.js.map +1 -0
  41. package/dist/Database/Eloquent/Concerns/HasTimestamps.d.ts +41 -0
  42. package/dist/Database/Eloquent/Concerns/HasTimestamps.d.ts.map +1 -0
  43. package/dist/Database/Eloquent/Concerns/HasTimestamps.js +14 -0
  44. package/dist/Database/Eloquent/Concerns/HasTimestamps.js.map +1 -0
  45. package/dist/Database/Eloquent/Model.d.ts +265 -0
  46. package/dist/Database/Eloquent/Model.d.ts.map +1 -0
  47. package/dist/Database/Eloquent/Model.js +523 -0
  48. package/dist/Database/Eloquent/Model.js.map +1 -0
  49. package/dist/Database/Eloquent/SoftDeletes.d.ts +41 -0
  50. package/dist/Database/Eloquent/SoftDeletes.d.ts.map +1 -0
  51. package/dist/Database/Eloquent/SoftDeletes.js +22 -0
  52. package/dist/Database/Eloquent/SoftDeletes.js.map +1 -0
  53. package/dist/Database/Ensemble/Concerns/HasAttributes.d.ts +44 -0
  54. package/dist/Database/Ensemble/Concerns/HasAttributes.d.ts.map +1 -0
  55. package/dist/Database/Ensemble/Concerns/HasAttributes.js +8 -0
  56. package/dist/Database/Ensemble/Concerns/HasAttributes.js.map +1 -0
  57. package/dist/Database/Ensemble/Concerns/HasTimestamps.d.ts +41 -0
  58. package/dist/Database/Ensemble/Concerns/HasTimestamps.d.ts.map +1 -0
  59. package/dist/Database/Ensemble/Concerns/HasTimestamps.js +14 -0
  60. package/dist/Database/Ensemble/Concerns/HasTimestamps.js.map +1 -0
  61. package/dist/Database/Ensemble/Ensemble.d.ts +266 -0
  62. package/dist/Database/Ensemble/Ensemble.d.ts.map +1 -0
  63. package/dist/Database/Ensemble/Ensemble.js +524 -0
  64. package/dist/Database/Ensemble/Ensemble.js.map +1 -0
  65. package/dist/Database/Ensemble/EnsembleBuilder.d.ts +76 -0
  66. package/dist/Database/Ensemble/EnsembleBuilder.d.ts.map +1 -0
  67. package/dist/Database/Ensemble/EnsembleBuilder.js +154 -0
  68. package/dist/Database/Ensemble/EnsembleBuilder.js.map +1 -0
  69. package/dist/Database/Ensemble/EnsembleCollection.d.ts +137 -0
  70. package/dist/Database/Ensemble/EnsembleCollection.d.ts.map +1 -0
  71. package/dist/Database/Ensemble/EnsembleCollection.js +284 -0
  72. package/dist/Database/Ensemble/EnsembleCollection.js.map +1 -0
  73. package/dist/Database/Ensemble/SoftDeletes.d.ts +41 -0
  74. package/dist/Database/Ensemble/SoftDeletes.d.ts.map +1 -0
  75. package/dist/Database/Ensemble/SoftDeletes.js +22 -0
  76. package/dist/Database/Ensemble/SoftDeletes.js.map +1 -0
  77. package/dist/Database/Query/Builder.d.ts +219 -0
  78. package/dist/Database/Query/Builder.d.ts.map +1 -0
  79. package/dist/Database/Query/Builder.js +554 -0
  80. package/dist/Database/Query/Builder.js.map +1 -0
  81. package/dist/Database/Query/Expression.d.ts +22 -0
  82. package/dist/Database/Query/Expression.d.ts.map +1 -0
  83. package/dist/Database/Query/Expression.js +35 -0
  84. package/dist/Database/Query/Expression.js.map +1 -0
  85. package/dist/Facades/DB.d.ts +7 -0
  86. package/dist/Facades/DB.d.ts.map +1 -0
  87. package/dist/Facades/DB.js +42 -0
  88. package/dist/Facades/DB.js.map +1 -0
  89. package/dist/Facades/Route.d.ts +1 -1
  90. package/dist/Facades/Route.d.ts.map +1 -1
  91. package/dist/Facades/Route.js.map +1 -1
  92. package/dist/index.d.ts +18 -0
  93. package/dist/index.d.ts.map +1 -1
  94. package/dist/index.js +27 -1
  95. package/dist/index.js.map +1 -1
  96. package/package.json +13 -5
@@ -0,0 +1,524 @@
1
+ "use strict";
2
+ /**
3
+ * Ensemble Class
4
+ *
5
+ * Base class for Ensemble models with ActiveRecord pattern
6
+ * In Orchestr, your data models are called Ensembles - groups that work in harmony
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.Ensemble = void 0;
10
+ const EnsembleBuilder_1 = require("./EnsembleBuilder");
11
+ class Ensemble {
12
+ /**
13
+ * The connection resolver instance
14
+ */
15
+ static connectionResolver;
16
+ /**
17
+ * The table associated with the model
18
+ */
19
+ table;
20
+ /**
21
+ * The primary key for the model
22
+ */
23
+ primaryKey = 'id';
24
+ /**
25
+ * Indicates if the IDs are auto-incrementing
26
+ */
27
+ incrementing = true;
28
+ /**
29
+ * The data type of the primary key
30
+ */
31
+ keyType = 'int';
32
+ /**
33
+ * The attributes that are mass assignable
34
+ */
35
+ fillable = [];
36
+ /**
37
+ * The attributes that aren't mass assignable
38
+ */
39
+ guarded = ['*'];
40
+ /**
41
+ * The attributes that should be hidden for serialization
42
+ */
43
+ hidden = [];
44
+ /**
45
+ * The attributes that should be visible for serialization
46
+ */
47
+ visible = [];
48
+ /**
49
+ * The accessors to append to the model's array form
50
+ */
51
+ appends = [];
52
+ /**
53
+ * The attributes that should be cast
54
+ */
55
+ casts = {};
56
+ /**
57
+ * Indicates if the model should be timestamped
58
+ */
59
+ timestamps = true;
60
+ /**
61
+ * The name of the "created at" column
62
+ */
63
+ static CREATED_AT = 'created_at';
64
+ /**
65
+ * The name of the "updated at" column
66
+ */
67
+ static UPDATED_AT = 'updated_at';
68
+ /**
69
+ * The name of the "deleted at" column (for soft deletes)
70
+ */
71
+ static DELETED_AT = 'deleted_at';
72
+ /**
73
+ * The model's attributes
74
+ */
75
+ attributes = {};
76
+ /**
77
+ * The model's original attributes
78
+ */
79
+ original = {};
80
+ /**
81
+ * Indicates if the model exists in the database
82
+ */
83
+ exists = false;
84
+ /**
85
+ * Indicates if the model was inserted during this request
86
+ */
87
+ wasRecentlyCreated = false;
88
+ /**
89
+ * The connection name for the model
90
+ */
91
+ connection;
92
+ /**
93
+ * Create a new Eloquent model instance
94
+ */
95
+ constructor(attributes = {}) {
96
+ this.fill(attributes);
97
+ }
98
+ /**
99
+ * Fill the model with an array of attributes
100
+ */
101
+ fill(attributes) {
102
+ for (const [key, value] of Object.entries(attributes)) {
103
+ if (this.isFillable(key)) {
104
+ this.setAttribute(key, value);
105
+ }
106
+ }
107
+ return this;
108
+ }
109
+ /**
110
+ * Set a given attribute on the model
111
+ */
112
+ setAttribute(key, value) {
113
+ // Check for mutator
114
+ const mutator = `set${this.studly(key)}Attribute`;
115
+ if (typeof this[mutator] === 'function') {
116
+ this[mutator](value);
117
+ return this;
118
+ }
119
+ this.attributes[key] = value;
120
+ return this;
121
+ }
122
+ /**
123
+ * Get an attribute from the model
124
+ */
125
+ getAttribute(key) {
126
+ if (!key) {
127
+ return undefined;
128
+ }
129
+ // Check if we have an accessor
130
+ const accessor = `get${this.studly(key)}Attribute`;
131
+ if (typeof this[accessor] === 'function') {
132
+ return this[accessor]();
133
+ }
134
+ // Get the attribute value
135
+ const value = this.attributes[key];
136
+ // Cast the attribute if needed
137
+ if (this.hasCast(key)) {
138
+ return this.castAttribute(key, value);
139
+ }
140
+ return value;
141
+ }
142
+ /**
143
+ * Determine if the given attribute may be mass assigned
144
+ */
145
+ isFillable(key) {
146
+ if (this.fillable.length > 0) {
147
+ return this.fillable.includes(key);
148
+ }
149
+ if (this.guarded.length > 0 && !this.guarded.includes('*')) {
150
+ return !this.guarded.includes(key);
151
+ }
152
+ return this.guarded[0] !== '*';
153
+ }
154
+ /**
155
+ * Determine if a get mutator exists for an attribute
156
+ */
157
+ hasGetMutator(key) {
158
+ return typeof this[`get${this.studly(key)}Attribute`] === 'function';
159
+ }
160
+ /**
161
+ * Determine if a set mutator exists for an attribute
162
+ */
163
+ hasSetMutator(key) {
164
+ return typeof this[`set${this.studly(key)}Attribute`] === 'function';
165
+ }
166
+ /**
167
+ * Determine if a cast is defined for an attribute
168
+ */
169
+ hasCast(key) {
170
+ return key in this.casts;
171
+ }
172
+ /**
173
+ * Cast an attribute to a native PHP type
174
+ */
175
+ castAttribute(key, value) {
176
+ if (value === null) {
177
+ return value;
178
+ }
179
+ const castType = this.casts[key];
180
+ switch (castType) {
181
+ case 'int':
182
+ case 'integer':
183
+ return parseInt(value);
184
+ case 'real':
185
+ case 'float':
186
+ case 'double':
187
+ return parseFloat(value);
188
+ case 'string':
189
+ return String(value);
190
+ case 'bool':
191
+ case 'boolean':
192
+ return Boolean(value);
193
+ case 'object':
194
+ return typeof value === 'string' ? JSON.parse(value) : value;
195
+ case 'array':
196
+ case 'json':
197
+ return typeof value === 'string' ? JSON.parse(value) : value;
198
+ case 'collection':
199
+ return typeof value === 'string' ? JSON.parse(value) : value;
200
+ case 'date':
201
+ case 'datetime':
202
+ case 'timestamp':
203
+ return value instanceof Date ? value : new Date(value);
204
+ default:
205
+ return value;
206
+ }
207
+ }
208
+ /**
209
+ * Convert the model to a plain object
210
+ */
211
+ toObject() {
212
+ const attributes = {};
213
+ for (const key of Object.keys(this.attributes)) {
214
+ if (this.isVisible(key)) {
215
+ attributes[key] = this.getAttribute(key);
216
+ }
217
+ }
218
+ // Add appended accessors
219
+ for (const key of this.appends) {
220
+ attributes[key] = this.getAttribute(key);
221
+ }
222
+ return attributes;
223
+ }
224
+ /**
225
+ * Convert the model to JSON
226
+ */
227
+ toJSON() {
228
+ return this.toObject();
229
+ }
230
+ /**
231
+ * Determine if an attribute is visible
232
+ */
233
+ isVisible(key) {
234
+ if (this.visible.length > 0) {
235
+ return this.visible.includes(key);
236
+ }
237
+ return !this.hidden.includes(key);
238
+ }
239
+ /**
240
+ * Get the table associated with the model
241
+ */
242
+ getTable() {
243
+ if (this.table) {
244
+ return this.table;
245
+ }
246
+ // Convert class name to snake_case plural
247
+ // e.g., User -> users, BlogPost -> blog_posts
248
+ const className = this.constructor.name;
249
+ return this.pluralize(this.snake(className));
250
+ }
251
+ /**
252
+ * Get the primary key for the model
253
+ */
254
+ getKeyName() {
255
+ return this.primaryKey;
256
+ }
257
+ /**
258
+ * Get the value of the model's primary key
259
+ */
260
+ getKey() {
261
+ return this.getAttribute(this.getKeyName());
262
+ }
263
+ /**
264
+ * Set the connection resolver instance
265
+ */
266
+ static setConnectionResolver(resolver) {
267
+ Ensemble.connectionResolver = resolver;
268
+ }
269
+ /**
270
+ * Get the database connection for the model
271
+ */
272
+ getConnection() {
273
+ return this.constructor.connectionResolver.connection(this.connection);
274
+ }
275
+ /**
276
+ * Begin querying the model
277
+ */
278
+ static query() {
279
+ const instance = new this();
280
+ return new EnsembleBuilder_1.EnsembleBuilder(instance.getConnection().getAdapter(), instance);
281
+ }
282
+ /**
283
+ * Get all of the models from the database
284
+ */
285
+ static async all(columns = ['*']) {
286
+ return this.query().select(...columns).get();
287
+ }
288
+ /**
289
+ * Find a model by its primary key
290
+ */
291
+ static async find(id, columns = ['*']) {
292
+ return this.query().select(...columns).find(id);
293
+ }
294
+ /**
295
+ * Find a model by its primary key or throw an exception
296
+ */
297
+ static async findOrFail(id, columns = ['*']) {
298
+ const model = await this.find(id, columns);
299
+ if (!model) {
300
+ throw new Error(`Ensemble not found with id: ${id}`);
301
+ }
302
+ return model;
303
+ }
304
+ /**
305
+ * Find multiple models by their primary keys
306
+ */
307
+ static async findMany(ids, columns = ['*']) {
308
+ const instance = new this();
309
+ return this.query().select(...columns).whereIn(instance.getKeyName(), ids).get();
310
+ }
311
+ /**
312
+ * Create a new instance and save it to the database
313
+ */
314
+ static async create(attributes) {
315
+ const instance = new this(attributes);
316
+ await instance.save();
317
+ return instance;
318
+ }
319
+ /**
320
+ * Update or create a model matching the attributes
321
+ */
322
+ static async updateOrCreate(attributes, values = {}) {
323
+ const instance = await this.query().where(attributes).first();
324
+ if (instance) {
325
+ instance.fill(values);
326
+ await instance.save();
327
+ return instance;
328
+ }
329
+ return this.create({ ...attributes, ...values });
330
+ }
331
+ /**
332
+ * Save the model to the database
333
+ */
334
+ async save() {
335
+ if (this.exists) {
336
+ return this.performUpdate();
337
+ }
338
+ return this.performInsert();
339
+ }
340
+ /**
341
+ * Perform a model insert operation
342
+ */
343
+ async performInsert() {
344
+ const attributes = this.getAttributesForInsert();
345
+ if (this.timestamps) {
346
+ this.updateTimestamps();
347
+ }
348
+ const connection = this.getConnection();
349
+ const table = this.getTable();
350
+ const id = await connection.table(table).insertGetId(attributes);
351
+ if (this.incrementing) {
352
+ this.setAttribute(this.getKeyName(), id);
353
+ }
354
+ this.exists = true;
355
+ this.wasRecentlyCreated = true;
356
+ this.syncOriginal();
357
+ return true;
358
+ }
359
+ /**
360
+ * Perform a model update operation
361
+ */
362
+ async performUpdate() {
363
+ const dirty = this.getDirty();
364
+ if (Object.keys(dirty).length === 0) {
365
+ return true;
366
+ }
367
+ if (this.timestamps) {
368
+ this.updateTimestamps();
369
+ }
370
+ const connection = this.getConnection();
371
+ const table = this.getTable();
372
+ await connection
373
+ .table(table)
374
+ .where(this.getKeyName(), '=', this.getKey())
375
+ .update(dirty);
376
+ this.syncOriginal();
377
+ return true;
378
+ }
379
+ /**
380
+ * Update the model's timestamps
381
+ */
382
+ updateTimestamps() {
383
+ const time = new Date();
384
+ const updatedAtColumn = this.constructor.UPDATED_AT;
385
+ if (updatedAtColumn && !this.isDirty(updatedAtColumn)) {
386
+ this.setAttribute(updatedAtColumn, time);
387
+ }
388
+ const createdAtColumn = this.constructor.CREATED_AT;
389
+ if (!this.exists && createdAtColumn && !this.isDirty(createdAtColumn)) {
390
+ this.setAttribute(createdAtColumn, time);
391
+ }
392
+ }
393
+ /**
394
+ * Get the attributes that have been changed
395
+ */
396
+ getDirty() {
397
+ const dirty = {};
398
+ for (const [key, value] of Object.entries(this.attributes)) {
399
+ if (!this.originalIsEquivalent(key, value)) {
400
+ dirty[key] = value;
401
+ }
402
+ }
403
+ return dirty;
404
+ }
405
+ /**
406
+ * Determine if the given attribute has been changed
407
+ */
408
+ isDirty(attribute) {
409
+ if (!attribute) {
410
+ return Object.keys(this.getDirty()).length > 0;
411
+ }
412
+ return attribute in this.getDirty();
413
+ }
414
+ /**
415
+ * Determine if the original value is equivalent to the current value
416
+ */
417
+ originalIsEquivalent(key, current) {
418
+ if (!(key in this.original)) {
419
+ return false;
420
+ }
421
+ const original = this.original[key];
422
+ if (current === original) {
423
+ return true;
424
+ }
425
+ if (current === null) {
426
+ return false;
427
+ }
428
+ if (this.isDateAttribute(key)) {
429
+ return this.compareDates(current, original);
430
+ }
431
+ return String(current) === String(original);
432
+ }
433
+ /**
434
+ * Determine if the given attribute is a date or date castable
435
+ */
436
+ isDateAttribute(key) {
437
+ const cast = this.casts[key];
438
+ return cast === 'date' || cast === 'datetime' || cast === 'timestamp';
439
+ }
440
+ /**
441
+ * Compare two dates
442
+ */
443
+ compareDates(current, original) {
444
+ const currentDate = current instanceof Date ? current : new Date(current);
445
+ const originalDate = original instanceof Date ? original : new Date(original);
446
+ return currentDate.getTime() === originalDate.getTime();
447
+ }
448
+ /**
449
+ * Get the attributes for insert
450
+ */
451
+ getAttributesForInsert() {
452
+ return { ...this.attributes };
453
+ }
454
+ /**
455
+ * Sync the original attributes with the current
456
+ */
457
+ syncOriginal() {
458
+ this.original = { ...this.attributes };
459
+ return this;
460
+ }
461
+ /**
462
+ * Delete the model from the database
463
+ */
464
+ async delete() {
465
+ if (!this.exists) {
466
+ return false;
467
+ }
468
+ const connection = this.getConnection();
469
+ const table = this.getTable();
470
+ await connection
471
+ .table(table)
472
+ .where(this.getKeyName(), '=', this.getKey())
473
+ .delete();
474
+ this.exists = false;
475
+ return true;
476
+ }
477
+ /**
478
+ * Reload the current model instance from the database
479
+ */
480
+ async refresh() {
481
+ if (!this.exists) {
482
+ return this;
483
+ }
484
+ const fresh = await this.constructor.find(this.getKey());
485
+ if (!fresh) {
486
+ throw new Error('Ensemble not found');
487
+ }
488
+ this.attributes = fresh.attributes;
489
+ this.syncOriginal();
490
+ return this;
491
+ }
492
+ /**
493
+ * Convert a string to studly case
494
+ */
495
+ studly(value) {
496
+ return value
497
+ .split('_')
498
+ .map((word) => word.charAt(0).toUpperCase() + word.slice(1))
499
+ .join('');
500
+ }
501
+ /**
502
+ * Convert a string to snake case
503
+ */
504
+ snake(value) {
505
+ return value
506
+ .replace(/([A-Z])/g, '_$1')
507
+ .toLowerCase()
508
+ .replace(/^_/, '');
509
+ }
510
+ /**
511
+ * Pluralize a string (simple implementation)
512
+ */
513
+ pluralize(value) {
514
+ if (value.endsWith('y')) {
515
+ return value.slice(0, -1) + 'ies';
516
+ }
517
+ if (value.endsWith('s')) {
518
+ return value + 'es';
519
+ }
520
+ return value + 's';
521
+ }
522
+ }
523
+ exports.Ensemble = Ensemble;
524
+ //# sourceMappingURL=Ensemble.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Ensemble.js","sourceRoot":"","sources":["../../../src/Database/Ensemble/Ensemble.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * EnsembleBuilder
3
+ *
4
+ * Extends the query builder to work with Ensemble models
5
+ */
6
+ import { Builder as QueryBuilder } from '../Query/Builder';
7
+ import { DatabaseAdapter } from '../Contracts/DatabaseAdapter';
8
+ import { Ensemble } from './Ensemble';
9
+ export declare class EnsembleBuilder<T extends Ensemble> extends QueryBuilder<T> {
10
+ /**
11
+ * The model being queried
12
+ */
13
+ protected model: T;
14
+ /**
15
+ * The relationships that should be eager loaded
16
+ */
17
+ protected eagerLoad: Record<string, any>;
18
+ constructor(adapter: DatabaseAdapter, model: T);
19
+ /**
20
+ * Find a model by its primary key
21
+ */
22
+ find(id: any): Promise<T | null>;
23
+ /**
24
+ * Execute the query and get all results
25
+ */
26
+ get(): Promise<T[]>;
27
+ /**
28
+ * Get the first record
29
+ */
30
+ first(): Promise<T | null>;
31
+ /**
32
+ * Create a collection of models from plain arrays
33
+ */
34
+ protected hydrate(items: any[]): T[];
35
+ /**
36
+ * Create a new instance of the model
37
+ */
38
+ protected newModelInstance(attributes?: Record<string, any>, exists?: boolean): T;
39
+ /**
40
+ * Set the relationships that should be eager loaded
41
+ */
42
+ with(relations: string | string[]): this;
43
+ /**
44
+ * Create a new model and store it in the database
45
+ */
46
+ create(attributes: Record<string, any>): Promise<T>;
47
+ /**
48
+ * Update records in the database
49
+ */
50
+ update(values: Record<string, any>): Promise<number>;
51
+ /**
52
+ * Delete records from the database
53
+ */
54
+ delete(): Promise<number>;
55
+ /**
56
+ * Get a paginated result
57
+ */
58
+ paginate(perPage?: number, page?: number): Promise<{
59
+ data: T[];
60
+ total: number;
61
+ perPage: number;
62
+ currentPage: number;
63
+ lastPage: number;
64
+ from: number;
65
+ to: number;
66
+ }>;
67
+ /**
68
+ * Chunk the results of the query
69
+ */
70
+ chunk(count: number, callback: (models: T[]) => Promise<boolean | void>): Promise<void>;
71
+ /**
72
+ * Clone the query builder
73
+ */
74
+ clone(): EnsembleBuilder<T>;
75
+ }
76
+ //# sourceMappingURL=EnsembleBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EnsembleBuilder.d.ts","sourceRoot":"","sources":["../../../src/Database/Ensemble/EnsembleBuilder.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGtC,qBAAa,eAAe,CAAC,CAAC,SAAS,QAAQ,CAAE,SAAQ,YAAY,CAAC,CAAC,CAAC;IACtE;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC;IAEnB;;OAEG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAM;gBAElC,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC;IAM9C;;OAEG;IACG,IAAI,CAAC,EAAE,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAItC;;OAEG;IACG,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC;IAKzB;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAQhC;;OAEG;IACH,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE;IAIpC;;OAEG;IACH,SAAS,CAAC,gBAAgB,CAAC,UAAU,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,EAAE,MAAM,GAAE,OAAe,GAAG,CAAC;IAQ5F;;OAEG;IACH,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAUxC;;OAEG;IACG,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAMzD;;OAEG;IACG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAI1D;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;IAI/B;;OAEG;IACG,QAAQ,CAAC,OAAO,GAAE,MAAW,EAAE,IAAI,GAAE,MAAU,GAAG,OAAO,CAAC;QAC9D,IAAI,EAAE,CAAC,EAAE,CAAC;QACV,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;KACZ,CAAC;IAqBF;;OAEG;IACG,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAsB7F;;OAEG;IACH,KAAK,IAAI,eAAe,CAAC,CAAC,CAAC;CAgB5B"}