@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,154 @@
1
+ "use strict";
2
+ /**
3
+ * EnsembleBuilder
4
+ *
5
+ * Extends the query builder to work with Ensemble models
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.EnsembleBuilder = void 0;
9
+ const Builder_1 = require("../Query/Builder");
10
+ class EnsembleBuilder extends Builder_1.Builder {
11
+ /**
12
+ * The model being queried
13
+ */
14
+ model;
15
+ /**
16
+ * The relationships that should be eager loaded
17
+ */
18
+ eagerLoad = {};
19
+ constructor(adapter, model) {
20
+ super(adapter);
21
+ this.model = model;
22
+ this.from(model.getTable());
23
+ }
24
+ /**
25
+ * Find a model by its primary key
26
+ */
27
+ async find(id) {
28
+ return this.where(this.model.getKeyName(), '=', id).first();
29
+ }
30
+ /**
31
+ * Execute the query and get all results
32
+ */
33
+ async get() {
34
+ const results = await super.get();
35
+ return this.hydrate(results);
36
+ }
37
+ /**
38
+ * Get the first record
39
+ */
40
+ async first() {
41
+ const result = await super.first();
42
+ if (!result) {
43
+ return null;
44
+ }
45
+ return this.newModelInstance(result, true);
46
+ }
47
+ /**
48
+ * Create a collection of models from plain arrays
49
+ */
50
+ hydrate(items) {
51
+ return items.map((item) => this.newModelInstance(item, true));
52
+ }
53
+ /**
54
+ * Create a new instance of the model
55
+ */
56
+ newModelInstance(attributes = {}, exists = false) {
57
+ const ModelClass = this.model.constructor;
58
+ const instance = new ModelClass(attributes);
59
+ instance.exists = exists;
60
+ instance.syncOriginal();
61
+ return instance;
62
+ }
63
+ /**
64
+ * Set the relationships that should be eager loaded
65
+ */
66
+ with(relations) {
67
+ const relationArray = Array.isArray(relations) ? relations : [relations];
68
+ for (const relation of relationArray) {
69
+ this.eagerLoad[relation] = () => { };
70
+ }
71
+ return this;
72
+ }
73
+ /**
74
+ * Create a new model and store it in the database
75
+ */
76
+ async create(attributes) {
77
+ const instance = this.newModelInstance(attributes);
78
+ await instance.save();
79
+ return instance;
80
+ }
81
+ /**
82
+ * Update records in the database
83
+ */
84
+ async update(values) {
85
+ return await super.update(values);
86
+ }
87
+ /**
88
+ * Delete records from the database
89
+ */
90
+ async delete() {
91
+ return await super.delete();
92
+ }
93
+ /**
94
+ * Get a paginated result
95
+ */
96
+ async paginate(perPage = 15, page = 1) {
97
+ const total = await this.clone().count();
98
+ const offset = (page - 1) * perPage;
99
+ const data = await this.clone().offset(offset).limit(perPage).get();
100
+ const lastPage = Math.ceil(total / perPage);
101
+ const from = total > 0 ? offset + 1 : 0;
102
+ const to = Math.min(offset + perPage, total);
103
+ return {
104
+ data,
105
+ total,
106
+ perPage,
107
+ currentPage: page,
108
+ lastPage,
109
+ from,
110
+ to,
111
+ };
112
+ }
113
+ /**
114
+ * Chunk the results of the query
115
+ */
116
+ async chunk(count, callback) {
117
+ let page = 1;
118
+ do {
119
+ const results = await this.clone()
120
+ .offset((page - 1) * count)
121
+ .limit(count)
122
+ .get();
123
+ if (results.length === 0) {
124
+ break;
125
+ }
126
+ const shouldContinue = await callback(results);
127
+ if (shouldContinue === false) {
128
+ break;
129
+ }
130
+ page++;
131
+ } while (true);
132
+ }
133
+ /**
134
+ * Clone the query builder
135
+ */
136
+ clone() {
137
+ const cloned = new EnsembleBuilder(this.adapter, this.model);
138
+ cloned._columns = [...this._columns];
139
+ cloned._distinct = this._distinct;
140
+ cloned._table = this._table;
141
+ cloned._wheres = [...this._wheres];
142
+ cloned._joins = [...this._joins];
143
+ cloned._orders = [...this._orders];
144
+ cloned._groups = [...this._groups];
145
+ cloned._havings = [...this._havings];
146
+ cloned._limit = this._limit;
147
+ cloned._offset = this._offset;
148
+ cloned._bindings = [...this._bindings];
149
+ cloned.eagerLoad = { ...this.eagerLoad };
150
+ return cloned;
151
+ }
152
+ }
153
+ exports.EnsembleBuilder = EnsembleBuilder;
154
+ //# sourceMappingURL=EnsembleBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EnsembleBuilder.js","sourceRoot":"","sources":["../../../src/Database/Ensemble/EnsembleBuilder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,137 @@
1
+ /**
2
+ * EnsembleCollection Class
3
+ *
4
+ * A collection of Ensemble models
5
+ */
6
+ import { Ensemble } from './Ensemble';
7
+ export declare class EnsembleCollection<T extends Ensemble> extends Array<T> {
8
+ /**
9
+ * Create a new collection
10
+ */
11
+ constructor(items?: T[]);
12
+ /**
13
+ * Get all items in the collection
14
+ */
15
+ all(): T[];
16
+ /**
17
+ * Get the first item from the collection
18
+ */
19
+ first(callback?: (item: T) => boolean): T | undefined;
20
+ /**
21
+ * Get the last item from the collection
22
+ */
23
+ last(callback?: (item: T) => boolean): T | undefined;
24
+ /**
25
+ * Reject items from the collection using a callback
26
+ */
27
+ reject(callback: (item: T, index: number) => boolean): EnsembleCollection<T>;
28
+ /**
29
+ * Map the collection and return a new collection
30
+ */
31
+ mapIntoCollection<U>(callback: (item: T, index: number) => U): U[];
32
+ /**
33
+ * Get a collection with only unique items
34
+ */
35
+ unique(key?: keyof T): EnsembleCollection<T>;
36
+ /**
37
+ * Get the collection of items as a plain array
38
+ */
39
+ toArray(): Record<string, any>[];
40
+ /**
41
+ * Get the collection of items as JSON
42
+ */
43
+ toJSON(): Record<string, any>[];
44
+ /**
45
+ * Determine if the collection is empty
46
+ */
47
+ isEmpty(): boolean;
48
+ /**
49
+ * Determine if the collection is not empty
50
+ */
51
+ isNotEmpty(): boolean;
52
+ /**
53
+ * Get the sum of the given values
54
+ */
55
+ sum(key?: keyof T): number;
56
+ /**
57
+ * Get the average value of a given key
58
+ */
59
+ avg(key?: keyof T): number;
60
+ /**
61
+ * Get the min value of a given key
62
+ */
63
+ min(key?: keyof T): number | undefined;
64
+ /**
65
+ * Get the max value of a given key
66
+ */
67
+ max(key?: keyof T): number | undefined;
68
+ /**
69
+ * Pluck an attribute from each model
70
+ */
71
+ pluck(key: keyof T): any[];
72
+ /**
73
+ * Get the keys of the collection items
74
+ */
75
+ modelKeys(): any[];
76
+ /**
77
+ * Sort the collection by a callback or key
78
+ */
79
+ sortBy(keyOrCallback: keyof T | ((a: T, b: T) => number)): EnsembleCollection<T>;
80
+ /**
81
+ * Sort the collection in descending order
82
+ */
83
+ sortByDesc(key: keyof T): EnsembleCollection<T>;
84
+ /**
85
+ * Group the collection by a given key
86
+ */
87
+ groupBy(key: keyof T): Record<string, EnsembleCollection<T>>;
88
+ /**
89
+ * Chunk the collection into smaller collections
90
+ */
91
+ chunkModels(size: number): EnsembleCollection<T>[];
92
+ /**
93
+ * Take the first n items
94
+ */
95
+ take(limit: number): EnsembleCollection<T>;
96
+ /**
97
+ * Skip the first n items
98
+ */
99
+ skip(count: number): EnsembleCollection<T>;
100
+ /**
101
+ * Merge the collection with the given items
102
+ */
103
+ merge(items: T[]): EnsembleCollection<T>;
104
+ /**
105
+ * Get the collection without the specified items
106
+ */
107
+ except(keys: any[]): EnsembleCollection<T>;
108
+ /**
109
+ * Get only the specified items from the collection
110
+ */
111
+ only(keys: any[]): EnsembleCollection<T>;
112
+ /**
113
+ * Load a set of relationships onto the collection
114
+ */
115
+ load(relations: string | string[]): Promise<this>;
116
+ /**
117
+ * Find a model in the collection by key
118
+ */
119
+ find(keyOrCallback: any | ((item: T) => boolean)): T | undefined;
120
+ /**
121
+ * Determine if a key exists in the collection
122
+ */
123
+ contains(keyOrCallback: any | ((item: T) => boolean)): boolean;
124
+ /**
125
+ * Get the items with the specified keys
126
+ */
127
+ whereIn(key: keyof T, values: any[]): EnsembleCollection<T>;
128
+ /**
129
+ * Get the items where a key is not in the given values
130
+ */
131
+ whereNotIn(key: keyof T, values: any[]): EnsembleCollection<T>;
132
+ /**
133
+ * Count the number of items in the collection
134
+ */
135
+ count(): number;
136
+ }
137
+ //# sourceMappingURL=EnsembleCollection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EnsembleCollection.d.ts","sourceRoot":"","sources":["../../../src/Database/Ensemble/EnsembleCollection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,284 @@
1
+ "use strict";
2
+ /**
3
+ * EnsembleCollection Class
4
+ *
5
+ * A collection of Ensemble models
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.EnsembleCollection = void 0;
9
+ class EnsembleCollection extends Array {
10
+ /**
11
+ * Create a new collection
12
+ */
13
+ constructor(items = []) {
14
+ super(...items);
15
+ Object.setPrototypeOf(this, EnsembleCollection.prototype);
16
+ }
17
+ /**
18
+ * Get all items in the collection
19
+ */
20
+ all() {
21
+ return [...this];
22
+ }
23
+ /**
24
+ * Get the first item from the collection
25
+ */
26
+ first(callback) {
27
+ if (callback) {
28
+ return this.find(callback);
29
+ }
30
+ return this[0];
31
+ }
32
+ /**
33
+ * Get the last item from the collection
34
+ */
35
+ last(callback) {
36
+ if (callback) {
37
+ const filtered = this.filter(callback);
38
+ return filtered[filtered.length - 1];
39
+ }
40
+ return this[this.length - 1];
41
+ }
42
+ /**
43
+ * Reject items from the collection using a callback
44
+ */
45
+ reject(callback) {
46
+ return new EnsembleCollection(this.filter((item, index) => !callback(item, index)));
47
+ }
48
+ /**
49
+ * Map the collection and return a new collection
50
+ */
51
+ mapIntoCollection(callback) {
52
+ return this.map((item, index) => callback(item, index));
53
+ }
54
+ /**
55
+ * Get a collection with only unique items
56
+ */
57
+ unique(key) {
58
+ if (!key) {
59
+ return new EnsembleCollection([...new Set(this)]);
60
+ }
61
+ const seen = new Set();
62
+ const unique = [];
63
+ for (const item of this) {
64
+ const value = item[key];
65
+ if (!seen.has(value)) {
66
+ seen.add(value);
67
+ unique.push(item);
68
+ }
69
+ }
70
+ return new EnsembleCollection(unique);
71
+ }
72
+ /**
73
+ * Get the collection of items as a plain array
74
+ */
75
+ toArray() {
76
+ return this.map((item) => item.toObject());
77
+ }
78
+ /**
79
+ * Get the collection of items as JSON
80
+ */
81
+ toJSON() {
82
+ return this.toArray();
83
+ }
84
+ /**
85
+ * Determine if the collection is empty
86
+ */
87
+ isEmpty() {
88
+ return this.length === 0;
89
+ }
90
+ /**
91
+ * Determine if the collection is not empty
92
+ */
93
+ isNotEmpty() {
94
+ return this.length > 0;
95
+ }
96
+ /**
97
+ * Get the sum of the given values
98
+ */
99
+ sum(key) {
100
+ if (!key) {
101
+ return 0;
102
+ }
103
+ return this.reduce((sum, item) => sum + Number(item[key] || 0), 0);
104
+ }
105
+ /**
106
+ * Get the average value of a given key
107
+ */
108
+ avg(key) {
109
+ if (this.isEmpty()) {
110
+ return 0;
111
+ }
112
+ return this.sum(key) / this.length;
113
+ }
114
+ /**
115
+ * Get the min value of a given key
116
+ */
117
+ min(key) {
118
+ if (this.isEmpty() || !key) {
119
+ return undefined;
120
+ }
121
+ return Math.min(...this.map((item) => Number(item[key] || 0)));
122
+ }
123
+ /**
124
+ * Get the max value of a given key
125
+ */
126
+ max(key) {
127
+ if (this.isEmpty() || !key) {
128
+ return undefined;
129
+ }
130
+ return Math.max(...this.map((item) => Number(item[key] || 0)));
131
+ }
132
+ /**
133
+ * Pluck an attribute from each model
134
+ */
135
+ pluck(key) {
136
+ return this.map((item) => item[key]);
137
+ }
138
+ /**
139
+ * Get the keys of the collection items
140
+ */
141
+ modelKeys() {
142
+ return this.map((item) => item.getKey());
143
+ }
144
+ /**
145
+ * Sort the collection by a callback or key
146
+ */
147
+ sortBy(keyOrCallback) {
148
+ const sorted = [...this];
149
+ if (typeof keyOrCallback === 'function') {
150
+ sorted.sort(keyOrCallback);
151
+ }
152
+ else {
153
+ sorted.sort((a, b) => {
154
+ const aVal = a[keyOrCallback];
155
+ const bVal = b[keyOrCallback];
156
+ if (aVal < bVal)
157
+ return -1;
158
+ if (aVal > bVal)
159
+ return 1;
160
+ return 0;
161
+ });
162
+ }
163
+ return new EnsembleCollection(sorted);
164
+ }
165
+ /**
166
+ * Sort the collection in descending order
167
+ */
168
+ sortByDesc(key) {
169
+ return this.sortBy((a, b) => {
170
+ const aVal = a[key];
171
+ const bVal = b[key];
172
+ if (aVal < bVal)
173
+ return 1;
174
+ if (aVal > bVal)
175
+ return -1;
176
+ return 0;
177
+ });
178
+ }
179
+ /**
180
+ * Group the collection by a given key
181
+ */
182
+ groupBy(key) {
183
+ const groups = {};
184
+ for (const item of this) {
185
+ const groupKey = String(item[key]);
186
+ if (!groups[groupKey]) {
187
+ groups[groupKey] = [];
188
+ }
189
+ groups[groupKey].push(item);
190
+ }
191
+ const result = {};
192
+ for (const [key, items] of Object.entries(groups)) {
193
+ result[key] = new EnsembleCollection(items);
194
+ }
195
+ return result;
196
+ }
197
+ /**
198
+ * Chunk the collection into smaller collections
199
+ */
200
+ chunkModels(size) {
201
+ const chunks = [];
202
+ for (let i = 0; i < this.length; i += size) {
203
+ chunks.push(new EnsembleCollection(this.slice(i, i + size)));
204
+ }
205
+ return chunks;
206
+ }
207
+ /**
208
+ * Take the first n items
209
+ */
210
+ take(limit) {
211
+ return new EnsembleCollection(this.slice(0, limit));
212
+ }
213
+ /**
214
+ * Skip the first n items
215
+ */
216
+ skip(count) {
217
+ return new EnsembleCollection(this.slice(count));
218
+ }
219
+ /**
220
+ * Merge the collection with the given items
221
+ */
222
+ merge(items) {
223
+ return new EnsembleCollection([...this, ...items]);
224
+ }
225
+ /**
226
+ * Get the collection without the specified items
227
+ */
228
+ except(keys) {
229
+ const keySet = new Set(keys);
230
+ return new EnsembleCollection(this.filter((item) => !keySet.has(item.getKey())));
231
+ }
232
+ /**
233
+ * Get only the specified items from the collection
234
+ */
235
+ only(keys) {
236
+ const keySet = new Set(keys);
237
+ return new EnsembleCollection(this.filter((item) => keySet.has(item.getKey())));
238
+ }
239
+ /**
240
+ * Load a set of relationships onto the collection
241
+ */
242
+ async load(relations) {
243
+ // TODO: Implement eager loading
244
+ // This will be implemented when we add relationship support
245
+ return this;
246
+ }
247
+ /**
248
+ * Find a model in the collection by key
249
+ */
250
+ find(keyOrCallback) {
251
+ if (typeof keyOrCallback === 'function') {
252
+ return super.find(keyOrCallback);
253
+ }
254
+ return super.find((item) => item.getKey() === keyOrCallback);
255
+ }
256
+ /**
257
+ * Determine if a key exists in the collection
258
+ */
259
+ contains(keyOrCallback) {
260
+ return this.find(keyOrCallback) !== undefined;
261
+ }
262
+ /**
263
+ * Get the items with the specified keys
264
+ */
265
+ whereIn(key, values) {
266
+ const valueSet = new Set(values);
267
+ return new EnsembleCollection(super.filter((item) => valueSet.has(item[key])));
268
+ }
269
+ /**
270
+ * Get the items where a key is not in the given values
271
+ */
272
+ whereNotIn(key, values) {
273
+ const valueSet = new Set(values);
274
+ return new EnsembleCollection(super.filter((item) => !valueSet.has(item[key])));
275
+ }
276
+ /**
277
+ * Count the number of items in the collection
278
+ */
279
+ count() {
280
+ return this.length;
281
+ }
282
+ }
283
+ exports.EnsembleCollection = EnsembleCollection;
284
+ //# sourceMappingURL=EnsembleCollection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EnsembleCollection.js","sourceRoot":"","sources":["../../../src/Database/Ensemble/EnsembleCollection.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/Ensemble/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/Ensemble/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"}