@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
+ * Eloquent Builder
4
+ *
5
+ * Extends the query builder to work with Eloquent models
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.Builder = void 0;
9
+ const Builder_1 = require("../Query/Builder");
10
+ class Builder 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 Builder(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.Builder = Builder;
154
+ //# sourceMappingURL=Builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Builder.js","sourceRoot":"","sources":["../../../src/Database/Eloquent/Builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,137 @@
1
+ /**
2
+ * Collection Class
3
+ *
4
+ * A collection of Eloquent models
5
+ */
6
+ import { Model } from './Model';
7
+ export declare class Collection<T extends Model> 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): Collection<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): Collection<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)): Collection<T>;
80
+ /**
81
+ * Sort the collection in descending order
82
+ */
83
+ sortByDesc(key: keyof T): Collection<T>;
84
+ /**
85
+ * Group the collection by a given key
86
+ */
87
+ groupBy(key: keyof T): Record<string, Collection<T>>;
88
+ /**
89
+ * Chunk the collection into smaller collections
90
+ */
91
+ chunkModels(size: number): Collection<T>[];
92
+ /**
93
+ * Take the first n items
94
+ */
95
+ take(limit: number): Collection<T>;
96
+ /**
97
+ * Skip the first n items
98
+ */
99
+ skip(count: number): Collection<T>;
100
+ /**
101
+ * Merge the collection with the given items
102
+ */
103
+ merge(items: T[]): Collection<T>;
104
+ /**
105
+ * Get the collection without the specified items
106
+ */
107
+ except(keys: any[]): Collection<T>;
108
+ /**
109
+ * Get only the specified items from the collection
110
+ */
111
+ only(keys: any[]): Collection<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[]): Collection<T>;
128
+ /**
129
+ * Get the items where a key is not in the given values
130
+ */
131
+ whereNotIn(key: keyof T, values: any[]): Collection<T>;
132
+ /**
133
+ * Count the number of items in the collection
134
+ */
135
+ count(): number;
136
+ }
137
+ //# sourceMappingURL=Collection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Collection.d.ts","sourceRoot":"","sources":["../../../src/Database/Eloquent/Collection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,284 @@
1
+ "use strict";
2
+ /**
3
+ * Collection Class
4
+ *
5
+ * A collection of Eloquent models
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.Collection = void 0;
9
+ class Collection extends Array {
10
+ /**
11
+ * Create a new collection
12
+ */
13
+ constructor(items = []) {
14
+ super(...items);
15
+ Object.setPrototypeOf(this, Collection.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 Collection(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 Collection([...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 Collection(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 Collection(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 Collection(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 Collection(this.slice(i, i + size)));
204
+ }
205
+ return chunks;
206
+ }
207
+ /**
208
+ * Take the first n items
209
+ */
210
+ take(limit) {
211
+ return new Collection(this.slice(0, limit));
212
+ }
213
+ /**
214
+ * Skip the first n items
215
+ */
216
+ skip(count) {
217
+ return new Collection(this.slice(count));
218
+ }
219
+ /**
220
+ * Merge the collection with the given items
221
+ */
222
+ merge(items) {
223
+ return new Collection([...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 Collection(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 Collection(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 Collection(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 Collection(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.Collection = Collection;
284
+ //# sourceMappingURL=Collection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Collection.js","sourceRoot":"","sources":["../../../src/Database/Eloquent/Collection.ts"],"names":[],"mappings":"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"}
@@ -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/Eloquent/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/Eloquent/Concerns/HasAttributes.ts"],"names":[],"mappings":";AAAA;;;;GAIG"}