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