@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
|
+
* 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":";AAAA;;;;GAIG;;;AAEH,8CAA2D;AAK3D,MAAa,OAAyB,SAAQ,iBAAe;IAC3D;;OAEG;IACO,KAAK,CAAI;IAEnB;;OAEG;IACO,SAAS,GAAwB,EAAE,CAAC;IAE9C,YAAY,OAAwB,EAAE,KAAQ;QAC5C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,EAAO;QAChB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;IAC9D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG;QACP,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;QACnC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACO,OAAO,CAAC,KAAY;QAC5B,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAChE,CAAC;IAED;;OAEG;IACO,gBAAgB,CAAC,aAAkC,EAAE,EAAE,SAAkB,KAAK;QACtF,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,WAAyD,CAAC;QACxF,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC;QAC3C,QAAgB,CAAC,MAAM,GAAG,MAAM,CAAC;QACjC,QAAgB,CAAC,YAAY,EAAE,CAAC;QACjC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,IAAI,CAAC,SAA4B;QAC/B,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAEzE,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE,CAAC;YACrC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;QACtC,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,UAA+B;QAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QACnD,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACtB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,MAA2B;QACtC,OAAO,MAAM,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM;QACV,OAAO,MAAM,KAAK,CAAC,MAAM,EAAE,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,UAAkB,EAAE,EAAE,OAAe,CAAC;QASnD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC;QAEpC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC;QAEpE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,OAAO,EAAE,KAAK,CAAC,CAAC;QAE7C,OAAO;YACL,IAAI;YACJ,KAAK;YACL,OAAO;YACP,WAAW,EAAE,IAAI;YACjB,QAAQ;YACR,IAAI;YACJ,EAAE;SACH,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK,CAAC,KAAa,EAAE,QAAkD;QAC3E,IAAI,IAAI,GAAG,CAAC,CAAC;QAEb,GAAG,CAAC;YACF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE;iBAC/B,MAAM,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;iBAC1B,KAAK,CAAC,KAAK,CAAC;iBACZ,GAAG,EAAE,CAAC;YAET,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,MAAM;YACR,CAAC;YAED,MAAM,cAAc,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC/C,IAAI,cAAc,KAAK,KAAK,EAAE,CAAC;gBAC7B,MAAM;YACR,CAAC;YAED,IAAI,EAAE,CAAC;QACT,CAAC,QAAQ,IAAI,EAAE;IACjB,CAAC;IAED;;OAEG;IACH,KAAK;QACH,MAAM,MAAM,GAAG,IAAI,OAAO,CAAI,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACxD,MAAM,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAClC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC5B,MAAM,CAAC,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;QACnC,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,CAAC,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;QACnC,MAAM,CAAC,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;QACnC,MAAM,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC5B,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC9B,MAAM,CAAC,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;QACvC,MAAM,CAAC,SAAS,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QACzC,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AA7KD,0BA6KC"}
|
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"file":"HasAttributes.js","sourceRoot":"","sources":["../../../../src/Database/Eloquent/Concerns/HasAttributes.ts"],"names":[],"mappings":";AAAA;;;;GAIG"}
|