@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.
- package/dist/Database/Adapters/DrizzleAdapter.d.ts +119 -0
- package/dist/Database/Adapters/DrizzleAdapter.d.ts.map +1 -0
- package/dist/Database/Adapters/DrizzleAdapter.js +384 -0
- package/dist/Database/Adapters/DrizzleAdapter.js.map +1 -0
- package/dist/Database/Connection.d.ts +103 -0
- package/dist/Database/Connection.d.ts.map +1 -0
- package/dist/Database/Connection.js +164 -0
- package/dist/Database/Connection.js.map +1 -0
- package/dist/Database/Contracts/DatabaseAdapter.d.ts +85 -0
- package/dist/Database/Contracts/DatabaseAdapter.d.ts.map +1 -0
- package/dist/Database/Contracts/DatabaseAdapter.js +9 -0
- package/dist/Database/Contracts/DatabaseAdapter.js.map +1 -0
- package/dist/Database/Contracts/QueryBuilderInterface.d.ts +196 -0
- package/dist/Database/Contracts/QueryBuilderInterface.d.ts.map +1 -0
- package/dist/Database/Contracts/QueryBuilderInterface.js +8 -0
- package/dist/Database/Contracts/QueryBuilderInterface.js.map +1 -0
- package/dist/Database/Contracts/Schema.d.ts +234 -0
- package/dist/Database/Contracts/Schema.d.ts.map +1 -0
- package/dist/Database/Contracts/Schema.js +8 -0
- package/dist/Database/Contracts/Schema.js.map +1 -0
- package/dist/Database/DatabaseManager.d.ts +61 -0
- package/dist/Database/DatabaseManager.d.ts.map +1 -0
- package/dist/Database/DatabaseManager.js +102 -0
- package/dist/Database/DatabaseManager.js.map +1 -0
- package/dist/Database/DatabaseServiceProvider.d.ts +17 -0
- package/dist/Database/DatabaseServiceProvider.d.ts.map +1 -0
- package/dist/Database/DatabaseServiceProvider.js +44 -0
- package/dist/Database/DatabaseServiceProvider.js.map +1 -0
- package/dist/Database/Eloquent/Builder.d.ts +76 -0
- package/dist/Database/Eloquent/Builder.d.ts.map +1 -0
- package/dist/Database/Eloquent/Builder.js +154 -0
- package/dist/Database/Eloquent/Builder.js.map +1 -0
- package/dist/Database/Eloquent/Collection.d.ts +137 -0
- package/dist/Database/Eloquent/Collection.d.ts.map +1 -0
- package/dist/Database/Eloquent/Collection.js +284 -0
- package/dist/Database/Eloquent/Collection.js.map +1 -0
- package/dist/Database/Eloquent/Concerns/HasAttributes.d.ts +44 -0
- package/dist/Database/Eloquent/Concerns/HasAttributes.d.ts.map +1 -0
- package/dist/Database/Eloquent/Concerns/HasAttributes.js +8 -0
- package/dist/Database/Eloquent/Concerns/HasAttributes.js.map +1 -0
- package/dist/Database/Eloquent/Concerns/HasTimestamps.d.ts +41 -0
- package/dist/Database/Eloquent/Concerns/HasTimestamps.d.ts.map +1 -0
- package/dist/Database/Eloquent/Concerns/HasTimestamps.js +14 -0
- package/dist/Database/Eloquent/Concerns/HasTimestamps.js.map +1 -0
- package/dist/Database/Eloquent/Model.d.ts +265 -0
- package/dist/Database/Eloquent/Model.d.ts.map +1 -0
- package/dist/Database/Eloquent/Model.js +523 -0
- package/dist/Database/Eloquent/Model.js.map +1 -0
- package/dist/Database/Eloquent/SoftDeletes.d.ts +41 -0
- package/dist/Database/Eloquent/SoftDeletes.d.ts.map +1 -0
- package/dist/Database/Eloquent/SoftDeletes.js +22 -0
- package/dist/Database/Eloquent/SoftDeletes.js.map +1 -0
- package/dist/Database/Ensemble/Concerns/HasAttributes.d.ts +44 -0
- package/dist/Database/Ensemble/Concerns/HasAttributes.d.ts.map +1 -0
- package/dist/Database/Ensemble/Concerns/HasAttributes.js +8 -0
- package/dist/Database/Ensemble/Concerns/HasAttributes.js.map +1 -0
- package/dist/Database/Ensemble/Concerns/HasTimestamps.d.ts +41 -0
- package/dist/Database/Ensemble/Concerns/HasTimestamps.d.ts.map +1 -0
- package/dist/Database/Ensemble/Concerns/HasTimestamps.js +14 -0
- package/dist/Database/Ensemble/Concerns/HasTimestamps.js.map +1 -0
- package/dist/Database/Ensemble/Ensemble.d.ts +266 -0
- package/dist/Database/Ensemble/Ensemble.d.ts.map +1 -0
- package/dist/Database/Ensemble/Ensemble.js +524 -0
- package/dist/Database/Ensemble/Ensemble.js.map +1 -0
- package/dist/Database/Ensemble/EnsembleBuilder.d.ts +76 -0
- package/dist/Database/Ensemble/EnsembleBuilder.d.ts.map +1 -0
- package/dist/Database/Ensemble/EnsembleBuilder.js +154 -0
- package/dist/Database/Ensemble/EnsembleBuilder.js.map +1 -0
- package/dist/Database/Ensemble/EnsembleCollection.d.ts +137 -0
- package/dist/Database/Ensemble/EnsembleCollection.d.ts.map +1 -0
- package/dist/Database/Ensemble/EnsembleCollection.js +284 -0
- package/dist/Database/Ensemble/EnsembleCollection.js.map +1 -0
- package/dist/Database/Ensemble/SoftDeletes.d.ts +41 -0
- package/dist/Database/Ensemble/SoftDeletes.d.ts.map +1 -0
- package/dist/Database/Ensemble/SoftDeletes.js +22 -0
- package/dist/Database/Ensemble/SoftDeletes.js.map +1 -0
- package/dist/Database/Query/Builder.d.ts +219 -0
- package/dist/Database/Query/Builder.d.ts.map +1 -0
- package/dist/Database/Query/Builder.js +554 -0
- package/dist/Database/Query/Builder.js.map +1 -0
- package/dist/Database/Query/Expression.d.ts +22 -0
- package/dist/Database/Query/Expression.d.ts.map +1 -0
- package/dist/Database/Query/Expression.js +35 -0
- package/dist/Database/Query/Expression.js.map +1 -0
- package/dist/Facades/DB.d.ts +7 -0
- package/dist/Facades/DB.d.ts.map +1 -0
- package/dist/Facades/DB.js +42 -0
- package/dist/Facades/DB.js.map +1 -0
- package/dist/Facades/Route.d.ts +1 -1
- package/dist/Facades/Route.d.ts.map +1 -1
- package/dist/Facades/Route.js.map +1 -1
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +27 -1
- package/dist/index.js.map +1 -1
- 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"}
|