jcc-express-mvc 1.7.7 → 1.7.8
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/lib/Jcc-eloquent/lib/BaseModel.d.ts +3 -1
- package/lib/Jcc-eloquent/lib/BaseModel.d.ts.map +1 -1
- package/lib/Jcc-eloquent/lib/BaseModel.js +64 -38
- package/lib/Jcc-eloquent/lib/Builder.d.ts +6 -3
- package/lib/Jcc-eloquent/lib/Builder.d.ts.map +1 -1
- package/lib/Jcc-eloquent/lib/Builder.js +64 -6
- package/lib/Jcc-eloquent/lib/Cast/index.d.ts.map +1 -1
- package/lib/Jcc-eloquent/lib/Cast/index.js +13 -1
- package/lib/Jcc-eloquent/lib/Constants.d.ts +2 -0
- package/lib/Jcc-eloquent/lib/Constants.d.ts.map +1 -0
- package/lib/Jcc-eloquent/lib/Constants.js +4 -0
- package/lib/Jcc-eloquent/lib/Decorators/ScopedBy.d.ts +3 -0
- package/lib/Jcc-eloquent/lib/Decorators/ScopedBy.d.ts.map +1 -0
- package/lib/Jcc-eloquent/lib/Decorators/ScopedBy.js +11 -0
- package/lib/Jcc-eloquent/lib/Interfaces/Scope.d.ts +9 -0
- package/lib/Jcc-eloquent/lib/Interfaces/Scope.d.ts.map +1 -0
- package/lib/Jcc-eloquent/lib/Interfaces/Scope.js +2 -0
- package/lib/Jcc-eloquent/lib/Model.d.ts +3 -3
- package/lib/Jcc-eloquent/lib/Model.d.ts.map +1 -1
- package/lib/Jcc-eloquent/lib/Model.js +23 -9
- package/lib/Jcc-eloquent/lib/QueryBuilder.d.ts +12 -12
- package/lib/Jcc-eloquent/lib/QueryBuilder.d.ts.map +1 -1
- package/lib/Jcc-eloquent/lib/QueryBuilder.js +5 -2
- package/lib/Jcc-eloquent/lib/Relations/EagerLoading.d.ts +1 -1
- package/lib/Jcc-eloquent/lib/Relations/EagerLoading.d.ts.map +1 -1
- package/lib/Jcc-eloquent/lib/Relations/EagerLoading.js +41 -27
- package/lib/Jcc-eloquent/lib/Relations/Relation.d.ts +1 -1
- package/lib/Jcc-eloquent/lib/utils/index.d.ts.map +1 -1
- package/lib/Jcc-eloquent/lib/utils/index.js +3 -1
- package/package.json +1 -1
|
@@ -12,6 +12,9 @@ export declare class BaseModel extends QueryBuilder {
|
|
|
12
12
|
protected _attributes: Record<string, any>;
|
|
13
13
|
protected original: Record<string, any>;
|
|
14
14
|
protected exists: boolean;
|
|
15
|
+
protected appends: string[];
|
|
16
|
+
toJSON(): Record<string, any>;
|
|
17
|
+
static getGlobalScopes(): any[];
|
|
15
18
|
protected isFillable(key: string): boolean;
|
|
16
19
|
fill(data: Record<string, any>): void;
|
|
17
20
|
setAttribute(key: string, value: any): void;
|
|
@@ -40,7 +43,6 @@ export declare class BaseModel extends QueryBuilder {
|
|
|
40
43
|
* Hide _attributes that should be hidden
|
|
41
44
|
*/
|
|
42
45
|
makeHidden(): this;
|
|
43
|
-
toJSON(): Record<string, any>;
|
|
44
46
|
protected casts(): Record<string, any>;
|
|
45
47
|
/**
|
|
46
48
|
* Define attribute getters and setters from the attributes() method
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseModel.d.ts","sourceRoot":"","sources":["../../../../Framework/lib/Jcc-eloquent/lib/BaseModel.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"BaseModel.d.ts","sourceRoot":"","sources":["../../../../Framework/lib/Jcc-eloquent/lib/BaseModel.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAG3C,qBAAa,SAAU,SAAQ,YAAY;IACzC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAQ;IACpC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAM;IAClC,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,CAAM;IACjC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,CAAM;IAChC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM;IACpD,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM;IACxD,SAAS,CAAC,UAAU,EAAE,OAAO,CAAQ;IACrC,SAAS,CAAC,WAAW,EAAE,OAAO,CAAS;IAEvC,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAM;IAChD,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAM;IAC7C,SAAS,CAAC,MAAM,EAAE,OAAO,CAAS;IAClC,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,CAAM;IAE1B,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;WAuCtB,eAAe,IAAI,GAAG,EAAE;IAOtC,SAAS,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAKnC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAY9B,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG;IAiBpC,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG;IAY9B,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAI3C,SAAS,CAAC,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAQxD,SAAS,CAAC,YAAY,IAAI,IAAI;IAIvB,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAatC;;OAEG;IACI,eAAe,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAoBtC,OAAO,CAAC,GAAG,EAAE,MAAM;IAInB,OAAO,CAAC,GAAG,EAAE,MAAM;IAInB,KAAK;IAwDZ;;OAEG;IACI,UAAU,IAAI,IAAI;IAKzB;;OAEG;IACI,oBAAoB,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAwB3C,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAKzC;;OAEG;IACI,UAAU,IAAI,IAAI;IAWzB,SAAS,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAItC;;OAEG;IACH,SAAS,CAAC,eAAe;CAyB1B"}
|
|
@@ -5,6 +5,7 @@ const Cast_1 = require("./Cast");
|
|
|
5
5
|
const QueryBuilder_1 = require("./QueryBuilder");
|
|
6
6
|
const Date_1 = require("../../Date");
|
|
7
7
|
const utils_1 = require("./utils");
|
|
8
|
+
const Constants_1 = require("./Constants");
|
|
8
9
|
class BaseModel extends QueryBuilder_1.QueryBuilder {
|
|
9
10
|
constructor() {
|
|
10
11
|
super(...arguments);
|
|
@@ -17,6 +18,46 @@ class BaseModel extends QueryBuilder_1.QueryBuilder {
|
|
|
17
18
|
this._attributes = {};
|
|
18
19
|
this.original = {};
|
|
19
20
|
this.exists = false;
|
|
21
|
+
this.appends = [];
|
|
22
|
+
}
|
|
23
|
+
toJSON() {
|
|
24
|
+
const data = {};
|
|
25
|
+
// Add non-hidden _attributes
|
|
26
|
+
for (const key in this._attributes) {
|
|
27
|
+
if (!this.hidden.includes(key)) {
|
|
28
|
+
data[key] = this.getAttribute(key);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
// Add appends
|
|
32
|
+
for (const key of this.appends) {
|
|
33
|
+
if (!this.hidden.includes(key)) {
|
|
34
|
+
data[key] = this.getAttribute(key);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
// Add loaded relations
|
|
38
|
+
for (const key in this.relations) {
|
|
39
|
+
if (!this.hidden.includes(key)) {
|
|
40
|
+
const relation = this.relations[key];
|
|
41
|
+
if (Array.isArray(relation)) {
|
|
42
|
+
data[key] = relation.map((item) => {
|
|
43
|
+
if (item instanceof BaseModel) {
|
|
44
|
+
return item.applyCasts().makeHidden().toJSON();
|
|
45
|
+
}
|
|
46
|
+
return item;
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
else if (relation && relation instanceof BaseModel) {
|
|
50
|
+
data[key] = relation.applyCasts().makeHidden().toJSON();
|
|
51
|
+
}
|
|
52
|
+
else if (relation) {
|
|
53
|
+
data[key] = relation;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return data;
|
|
58
|
+
}
|
|
59
|
+
static getGlobalScopes() {
|
|
60
|
+
return Reflect.getMetadata(Constants_1.SCOPED_BY_KEY, this) || [];
|
|
20
61
|
}
|
|
21
62
|
// -----------------
|
|
22
63
|
// Mass Assignment
|
|
@@ -51,6 +92,8 @@ class BaseModel extends QueryBuilder_1.QueryBuilder {
|
|
|
51
92
|
}
|
|
52
93
|
}
|
|
53
94
|
getAttribute(key) {
|
|
95
|
+
if (typeof key !== "string")
|
|
96
|
+
return undefined;
|
|
54
97
|
const studlyKey = utils_1.Utils.studlyCase(key);
|
|
55
98
|
const method = `get${studlyKey}Attribute`;
|
|
56
99
|
if (typeof this[method] === "function") {
|
|
@@ -110,6 +153,16 @@ class BaseModel extends QueryBuilder_1.QueryBuilder {
|
|
|
110
153
|
proxy() {
|
|
111
154
|
return new Proxy(this, {
|
|
112
155
|
get(target, prop) {
|
|
156
|
+
if (typeof prop === "symbol") {
|
|
157
|
+
return target[prop];
|
|
158
|
+
}
|
|
159
|
+
// If it's an attribute (has accessor or exists in _attributes), prioritized it
|
|
160
|
+
const studlyKey = utils_1.Utils.studlyCase(prop);
|
|
161
|
+
const method = `get${studlyKey}Attribute`;
|
|
162
|
+
if (typeof target[method] === "function" ||
|
|
163
|
+
prop in target._attributes) {
|
|
164
|
+
return target.getAttribute(prop);
|
|
165
|
+
}
|
|
113
166
|
const descriptor = Object.getOwnPropertyDescriptor(target, prop);
|
|
114
167
|
if (descriptor && descriptor.get) {
|
|
115
168
|
return descriptor.get.call(target);
|
|
@@ -119,6 +172,17 @@ class BaseModel extends QueryBuilder_1.QueryBuilder {
|
|
|
119
172
|
return target.getAttribute(prop);
|
|
120
173
|
},
|
|
121
174
|
set(target, prop, value) {
|
|
175
|
+
if (typeof prop === "symbol") {
|
|
176
|
+
target[prop] = value;
|
|
177
|
+
return true;
|
|
178
|
+
}
|
|
179
|
+
const studlyKey = utils_1.Utils.studlyCase(prop);
|
|
180
|
+
const method = `set${studlyKey}Attribute`;
|
|
181
|
+
if (typeof target[method] === "function" ||
|
|
182
|
+
prop in target._attributes) {
|
|
183
|
+
target.setAttribute(prop, value);
|
|
184
|
+
return true;
|
|
185
|
+
}
|
|
122
186
|
const descriptor = Object.getOwnPropertyDescriptor(target, prop);
|
|
123
187
|
if (descriptor && descriptor.set) {
|
|
124
188
|
descriptor.set.call(target, value);
|
|
@@ -178,44 +242,6 @@ class BaseModel extends QueryBuilder_1.QueryBuilder {
|
|
|
178
242
|
this._attributes = visible;
|
|
179
243
|
return this;
|
|
180
244
|
}
|
|
181
|
-
toJSON() {
|
|
182
|
-
// Apply casts and hide _attributes
|
|
183
|
-
// this.applyCasts();
|
|
184
|
-
const data = {};
|
|
185
|
-
// Add non-hidden _attributes
|
|
186
|
-
for (const key in this._attributes) {
|
|
187
|
-
if (!this.hidden.includes(key)) {
|
|
188
|
-
const descriptor = Object.getOwnPropertyDescriptor(this, key);
|
|
189
|
-
if (descriptor && descriptor.get) {
|
|
190
|
-
data[key] = this[key];
|
|
191
|
-
}
|
|
192
|
-
else {
|
|
193
|
-
data[key] = this._attributes[key];
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
// Add loaded relations
|
|
198
|
-
for (const key in this.relations) {
|
|
199
|
-
if (!this.hidden.includes(key)) {
|
|
200
|
-
const relation = this.relations[key];
|
|
201
|
-
if (Array.isArray(relation)) {
|
|
202
|
-
data[key] = relation.map((item) => {
|
|
203
|
-
if (item instanceof BaseModel) {
|
|
204
|
-
return item.applyCasts().makeHidden().toJSON();
|
|
205
|
-
}
|
|
206
|
-
return item;
|
|
207
|
-
});
|
|
208
|
-
}
|
|
209
|
-
else if (relation && relation instanceof BaseModel) {
|
|
210
|
-
data[key] = relation.applyCasts().makeHidden().toJSON();
|
|
211
|
-
}
|
|
212
|
-
else if (relation) {
|
|
213
|
-
data[key] = relation;
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
return data;
|
|
218
|
-
}
|
|
219
245
|
casts() {
|
|
220
246
|
return {};
|
|
221
247
|
}
|
|
@@ -1,19 +1,22 @@
|
|
|
1
1
|
import { Knex } from "knex";
|
|
2
2
|
import { AggregateInput, JoinCallback, SubJoinCallback, WhereInput } from "./Types";
|
|
3
|
-
import { Model } from "./Model";
|
|
3
|
+
import type { Model } from "./Model";
|
|
4
4
|
import { QueryBuilder } from "./QueryBuilder";
|
|
5
5
|
export declare class Builder {
|
|
6
6
|
private tableName;
|
|
7
7
|
private db;
|
|
8
8
|
private queryBuilder;
|
|
9
9
|
private model;
|
|
10
|
-
eagerLoad: string
|
|
10
|
+
eagerLoad: Record<string, Function | null>;
|
|
11
11
|
softDelete: boolean;
|
|
12
12
|
constructor();
|
|
13
13
|
withTrashed(): this;
|
|
14
14
|
onlyTrashed(): this;
|
|
15
|
-
with(relations: string | string[]): this;
|
|
15
|
+
with(relations: string | string[] | Record<string, Function>): this;
|
|
16
16
|
setModel(model: typeof Model): this;
|
|
17
|
+
private applyGlobalScopes;
|
|
18
|
+
withoutGlobalScopes(scopes?: any[]): this;
|
|
19
|
+
proxy(): this;
|
|
17
20
|
newModelInstance(data: Record<string, any>): Model | undefined;
|
|
18
21
|
has(relation: string, operator?: string, count?: number, boolean?: "and" | "or", callback?: (q: Builder) => void): this;
|
|
19
22
|
whereHas(relation: string, callback?: (q: Builder) => void, operator?: string, count?: number): this;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Builder.d.ts","sourceRoot":"","sources":["../../../../Framework/lib/Jcc-eloquent/lib/Builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,EACL,cAAc,EACd,YAAY,EAGZ,eAAe,EACf,UAAU,EACX,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"Builder.d.ts","sourceRoot":"","sources":["../../../../Framework/lib/Jcc-eloquent/lib/Builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,7 @@ class Builder {
|
|
|
9
9
|
this.tableName = "";
|
|
10
10
|
this.queryBuilder = null;
|
|
11
11
|
this.model = null;
|
|
12
|
-
this.eagerLoad =
|
|
12
|
+
this.eagerLoad = {};
|
|
13
13
|
this.softDelete = true; // Default to true (filtering out deleted), set to false to include deleted
|
|
14
14
|
this.db = Database_1.Database.connect();
|
|
15
15
|
}
|
|
@@ -23,15 +23,73 @@ class Builder {
|
|
|
23
23
|
return this;
|
|
24
24
|
}
|
|
25
25
|
with(relations) {
|
|
26
|
-
if (
|
|
27
|
-
this.
|
|
26
|
+
if (typeof relations === "string") {
|
|
27
|
+
this.eagerLoad[relations] = null;
|
|
28
|
+
}
|
|
29
|
+
else if (Array.isArray(relations)) {
|
|
30
|
+
relations.forEach((rel) => {
|
|
31
|
+
this.eagerLoad[rel] = null;
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
else if (typeof relations === "object") {
|
|
35
|
+
Object.assign(this.eagerLoad, relations);
|
|
28
36
|
}
|
|
29
37
|
return this;
|
|
30
38
|
}
|
|
31
39
|
setModel(model) {
|
|
32
40
|
this.model = model;
|
|
41
|
+
this.applyGlobalScopes();
|
|
42
|
+
return this;
|
|
43
|
+
}
|
|
44
|
+
applyGlobalScopes() {
|
|
45
|
+
if (!this.model)
|
|
46
|
+
return;
|
|
47
|
+
const globalScopes = this.model.getGlobalScopes();
|
|
48
|
+
for (const scope of globalScopes) {
|
|
49
|
+
if (typeof scope === "function") {
|
|
50
|
+
scope(this);
|
|
51
|
+
}
|
|
52
|
+
else if (scope && typeof scope.apply === "function") {
|
|
53
|
+
scope.apply(this, this.model);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
withoutGlobalScopes(scopes) {
|
|
58
|
+
// Basic implementation: reset query builder if we want to remove scopes
|
|
59
|
+
// Usually Laravel handles this by keeping track of scopes.
|
|
60
|
+
// For now, we'll just return this as a placeholder or implement specific logic if needed.
|
|
33
61
|
return this;
|
|
34
62
|
}
|
|
63
|
+
proxy() {
|
|
64
|
+
const self = this;
|
|
65
|
+
const proxy = new Proxy(this, {
|
|
66
|
+
get(target, prop) {
|
|
67
|
+
if (typeof prop === "symbol")
|
|
68
|
+
return target[prop];
|
|
69
|
+
if (prop in target) {
|
|
70
|
+
const value = target[prop];
|
|
71
|
+
if (typeof value === "function") {
|
|
72
|
+
return (...args) => {
|
|
73
|
+
const result = value.apply(target, args);
|
|
74
|
+
return result === target ? proxy : result;
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
return value;
|
|
78
|
+
}
|
|
79
|
+
if (target.model) {
|
|
80
|
+
const scopeMethod = `scope${utils_1.Utils.studlyCase(prop)}`;
|
|
81
|
+
if (typeof target.model[scopeMethod] === "function") {
|
|
82
|
+
return (...args) => {
|
|
83
|
+
target.model[scopeMethod](target, ...args);
|
|
84
|
+
return proxy;
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return target[prop];
|
|
89
|
+
},
|
|
90
|
+
});
|
|
91
|
+
return proxy;
|
|
92
|
+
}
|
|
35
93
|
newModelInstance(data) {
|
|
36
94
|
if (this.model) {
|
|
37
95
|
return new this.model(data);
|
|
@@ -476,7 +534,7 @@ class Builder {
|
|
|
476
534
|
const result = await this.getQueryBuilder();
|
|
477
535
|
this.reset();
|
|
478
536
|
if (this.model) {
|
|
479
|
-
const hydrated = await this.model.hydrate(result);
|
|
537
|
+
const hydrated = await this.model.hydrate(result, this.eagerLoad);
|
|
480
538
|
return Array.isArray(hydrated) ? hydrated : hydrated ? [hydrated] : [];
|
|
481
539
|
}
|
|
482
540
|
return result;
|
|
@@ -484,7 +542,7 @@ class Builder {
|
|
|
484
542
|
async first() {
|
|
485
543
|
const result = await this.getQueryBuilder().first();
|
|
486
544
|
if (this.model) {
|
|
487
|
-
return this.model.hydrate(result);
|
|
545
|
+
return this.model.hydrate(result, this.eagerLoad);
|
|
488
546
|
}
|
|
489
547
|
this.reset();
|
|
490
548
|
return result ? result : null;
|
|
@@ -495,7 +553,7 @@ class Builder {
|
|
|
495
553
|
clone.tableName = this.tableName;
|
|
496
554
|
clone.model = this.model;
|
|
497
555
|
clone.db = this.db;
|
|
498
|
-
clone.eagerLoad =
|
|
556
|
+
clone.eagerLoad = { ...this.eagerLoad };
|
|
499
557
|
clone.softDelete = this.softDelete;
|
|
500
558
|
return clone;
|
|
501
559
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../Framework/lib/Jcc-eloquent/lib/Cast/index.ts"],"names":[],"mappings":"AAoBA,qBAAa,IAAI;WACD,iBAAiB,CAC7B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACzB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAgBjC;;OAEG;WACW,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG;IAqD1D;;OAEG;WACW,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG;IAmB7D,OAAO,CAAC,MAAM,CAAC,MAAM;IAKrB,OAAO,CAAC,MAAM,CAAC,QAAQ;IAKvB,OAAO,CAAC,MAAM,CAAC,KAAK;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../Framework/lib/Jcc-eloquent/lib/Cast/index.ts"],"names":[],"mappings":"AAoBA,qBAAa,IAAI;WACD,iBAAiB,CAC7B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACzB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAgBjC;;OAEG;WACW,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG;IAqD1D;;OAEG;WACW,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG;IAmB7D,OAAO,CAAC,MAAM,CAAC,MAAM;IAKrB,OAAO,CAAC,MAAM,CAAC,QAAQ;IAKvB,OAAO,CAAC,MAAM,CAAC,KAAK;IAwBpB,OAAO,CAAC,MAAM,CAAC,OAAO;IAKtB,OAAO,CAAC,MAAM,CAAC,OAAO;IAQtB,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAU7B;CACH"}
|
|
@@ -101,12 +101,24 @@ class Cast {
|
|
|
101
101
|
static array(data) {
|
|
102
102
|
if (typeof data === "string") {
|
|
103
103
|
try {
|
|
104
|
-
|
|
104
|
+
data = JSON.parse(data);
|
|
105
105
|
}
|
|
106
106
|
catch {
|
|
107
107
|
return data;
|
|
108
108
|
}
|
|
109
109
|
}
|
|
110
|
+
if (typeof data === "object" && data !== null) {
|
|
111
|
+
if (Array.isArray(data)) {
|
|
112
|
+
return data.map((item) => this.array(item));
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
const result = {};
|
|
116
|
+
for (const key in data) {
|
|
117
|
+
result[key] = this.array(data[key]);
|
|
118
|
+
}
|
|
119
|
+
return result;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
110
122
|
return data;
|
|
111
123
|
}
|
|
112
124
|
static integer(value) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Constants.d.ts","sourceRoot":"","sources":["../../../../Framework/lib/Jcc-eloquent/lib/Constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,eAA0B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScopedBy.d.ts","sourceRoot":"","sources":["../../../../../Framework/lib/Jcc-eloquent/lib/Decorators/ScopedBy.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAI1B,wBAAgB,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,IACnB,QAAQ,QAAQ,UAQlC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ScopedBy = ScopedBy;
|
|
4
|
+
require("reflect-metadata");
|
|
5
|
+
const Constants_1 = require("../Constants");
|
|
6
|
+
function ScopedBy(scopes) {
|
|
7
|
+
return function (target) {
|
|
8
|
+
const existingScopes = Reflect.getMetadata(Constants_1.SCOPED_BY_KEY, target) || [];
|
|
9
|
+
Reflect.defineMetadata(Constants_1.SCOPED_BY_KEY, [...existingScopes, ...scopes], target);
|
|
10
|
+
};
|
|
11
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Builder } from "../Builder";
|
|
2
|
+
import { BaseModel } from "../BaseModel";
|
|
3
|
+
export interface Scope {
|
|
4
|
+
/**
|
|
5
|
+
* Apply the scope to a given Eloquent query builder.
|
|
6
|
+
*/
|
|
7
|
+
apply(builder: Builder, model: typeof BaseModel): void;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=Scope.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Scope.d.ts","sourceRoot":"","sources":["../../../../../Framework/lib/Jcc-eloquent/lib/Interfaces/Scope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,MAAM,WAAW,KAAK;IACpB;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,SAAS,GAAG,IAAI,CAAC;CACxD"}
|
|
@@ -4,7 +4,6 @@ import { HasOne, HasMany, BelongsTo, BelongsToMany, MorphTo, MorphOne, MorphMany
|
|
|
4
4
|
import { Request } from "express";
|
|
5
5
|
import { Pagination } from "./Interfaces";
|
|
6
6
|
export declare class Model extends BaseModel {
|
|
7
|
-
static eagerLoad: string[];
|
|
8
7
|
relations: Record<string, any>;
|
|
9
8
|
constructor(attributes?: Record<string, any>);
|
|
10
9
|
getTable(): string;
|
|
@@ -24,7 +23,8 @@ export declare class Model extends BaseModel {
|
|
|
24
23
|
*/
|
|
25
24
|
static find(id: string | number): Promise<Model | null>;
|
|
26
25
|
static all(): Promise<Model[]>;
|
|
27
|
-
static hydrate(items: any | any[]): Promise<Model | Model[] | null>;
|
|
26
|
+
static hydrate(items: any | any[], eagerLoad?: Record<string, Function | null>): Promise<Model | Model[] | null>;
|
|
27
|
+
update(attributes: Record<string, any>): Promise<this>;
|
|
28
28
|
save(): Promise<this>;
|
|
29
29
|
saveQuietly(): Promise<this>;
|
|
30
30
|
delete(): Promise<boolean>;
|
|
@@ -42,7 +42,7 @@ export declare class Model extends BaseModel {
|
|
|
42
42
|
/**
|
|
43
43
|
* Load relations on an already hydrated model instance
|
|
44
44
|
*/
|
|
45
|
-
load(relations: string | string[]): Promise<this>;
|
|
45
|
+
load(relations: string | string[] | Record<string, Function>): Promise<this>;
|
|
46
46
|
static eventType(): any;
|
|
47
47
|
}
|
|
48
48
|
//# sourceMappingURL=Model.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Model.d.ts","sourceRoot":"","sources":["../../../../Framework/lib/Jcc-eloquent/lib/Model.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EACL,MAAM,EACN,OAAO,EACP,SAAS,EACT,aAAa,EACb,OAAO,EACP,QAAQ,EACR,SAAS,EACV,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG1C,qBAAa,KAAM,SAAQ,SAAS;
|
|
1
|
+
{"version":3,"file":"Model.d.ts","sourceRoot":"","sources":["../../../../Framework/lib/Jcc-eloquent/lib/Model.ts"],"names":[],"mappings":"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"}
|
|
@@ -92,7 +92,7 @@ class Model extends BaseModel_1.BaseModel {
|
|
|
92
92
|
static async all() {
|
|
93
93
|
return this.query().get();
|
|
94
94
|
}
|
|
95
|
-
static async hydrate(items) {
|
|
95
|
+
static async hydrate(items, eagerLoad = {}) {
|
|
96
96
|
if (!items)
|
|
97
97
|
return null;
|
|
98
98
|
if (Array.isArray(items)) {
|
|
@@ -104,8 +104,8 @@ class Model extends BaseModel_1.BaseModel {
|
|
|
104
104
|
};
|
|
105
105
|
const models = await Promise.all(items.map(hydrateWithoutRelations));
|
|
106
106
|
// Then load relations once for all models
|
|
107
|
-
if (
|
|
108
|
-
await EagerLoading_1.EagerLoader.load(models,
|
|
107
|
+
if (Object.keys(eagerLoad).length && models.length > 0) {
|
|
108
|
+
await EagerLoading_1.EagerLoader.load(models, eagerLoad);
|
|
109
109
|
}
|
|
110
110
|
return models;
|
|
111
111
|
}
|
|
@@ -114,12 +114,16 @@ class Model extends BaseModel_1.BaseModel {
|
|
|
114
114
|
model.exists = true;
|
|
115
115
|
model.syncOriginal();
|
|
116
116
|
// Load relations for single model
|
|
117
|
-
if (
|
|
118
|
-
await EagerLoading_1.EagerLoader.load(model,
|
|
117
|
+
if (Object.keys(eagerLoad).length) {
|
|
118
|
+
await EagerLoading_1.EagerLoader.load(model, eagerLoad);
|
|
119
119
|
}
|
|
120
120
|
return model;
|
|
121
121
|
}
|
|
122
122
|
}
|
|
123
|
+
async update(attributes) {
|
|
124
|
+
this.fill(attributes);
|
|
125
|
+
return await this.save();
|
|
126
|
+
}
|
|
123
127
|
async save() {
|
|
124
128
|
await ModelEvent_1.ModelEvent.fireEvent(this.constructor, "saving", this);
|
|
125
129
|
if (this.timestamps) {
|
|
@@ -151,7 +155,9 @@ class Model extends BaseModel_1.BaseModel {
|
|
|
151
155
|
async saveQuietly() {
|
|
152
156
|
const query = this.constructor.query();
|
|
153
157
|
if (this.exists) {
|
|
154
|
-
await query
|
|
158
|
+
await query
|
|
159
|
+
.where(this.primaryKey, this.getKey())
|
|
160
|
+
.update(this.getDirtyForSave());
|
|
155
161
|
}
|
|
156
162
|
return this;
|
|
157
163
|
}
|
|
@@ -251,8 +257,17 @@ class Model extends BaseModel_1.BaseModel {
|
|
|
251
257
|
* Load relations on an already hydrated model instance
|
|
252
258
|
*/
|
|
253
259
|
async load(relations) {
|
|
254
|
-
|
|
255
|
-
|
|
260
|
+
let relationMap = {};
|
|
261
|
+
if (typeof relations === "string") {
|
|
262
|
+
relationMap[relations] = null;
|
|
263
|
+
}
|
|
264
|
+
else if (Array.isArray(relations)) {
|
|
265
|
+
relations.forEach((rel) => (relationMap[rel] = null));
|
|
266
|
+
}
|
|
267
|
+
else {
|
|
268
|
+
relationMap = relations;
|
|
269
|
+
}
|
|
270
|
+
await EagerLoading_1.EagerLoader.load(this, relationMap);
|
|
256
271
|
return this;
|
|
257
272
|
}
|
|
258
273
|
static eventType() {
|
|
@@ -260,4 +275,3 @@ class Model extends BaseModel_1.BaseModel {
|
|
|
260
275
|
}
|
|
261
276
|
}
|
|
262
277
|
exports.Model = Model;
|
|
263
|
-
Model.eagerLoad = [];
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Builder } from "./Builder";
|
|
1
|
+
import type { Builder } from "./Builder";
|
|
2
2
|
import { ModelEvent } from "./Event/ModelEvent";
|
|
3
3
|
import { Knex } from "knex";
|
|
4
4
|
import { AggregateInput, JoinCallback, SubJoinCallback, WhereInput } from "./Types";
|
|
@@ -14,7 +14,7 @@ export declare class QueryBuilder extends ModelEvent {
|
|
|
14
14
|
/**
|
|
15
15
|
* Return a query builder instance for the model's table.
|
|
16
16
|
*/
|
|
17
|
-
static query():
|
|
17
|
+
static query(): any;
|
|
18
18
|
static has(relation: string, operator?: string, count?: number, boolean?: "and" | "or", callback?: (q: Builder) => void): Builder;
|
|
19
19
|
static whereHas(relation: string, callback?: (q: Builder) => void, operator?: string, count?: number): Builder;
|
|
20
20
|
static orWhereHas(relation: string, callback?: (q: Builder) => void, operator?: string, count?: number): Builder;
|
|
@@ -170,7 +170,7 @@ export declare class QueryBuilder extends ModelEvent {
|
|
|
170
170
|
* Add a join clause.
|
|
171
171
|
*/
|
|
172
172
|
static join(table: string | any, columnOrCallback: JoinCallback, operator?: string, column2?: string): Builder;
|
|
173
|
-
static toSQL():
|
|
173
|
+
static toSQL(): any;
|
|
174
174
|
static joinSub(subQuery: any, alias: string, callback: SubJoinCallback): Builder;
|
|
175
175
|
/**
|
|
176
176
|
* Add an inner join clause.
|
|
@@ -289,11 +289,11 @@ export declare class QueryBuilder extends ModelEvent {
|
|
|
289
289
|
/**
|
|
290
290
|
* Get SQL string of the query.
|
|
291
291
|
*/
|
|
292
|
-
static toSqlCode():
|
|
292
|
+
static toSqlCode(): any;
|
|
293
293
|
/**
|
|
294
294
|
* Get maximum value of column.
|
|
295
295
|
*/
|
|
296
|
-
static max(columns: AggregateInput):
|
|
296
|
+
static max(columns: AggregateInput): any;
|
|
297
297
|
/**
|
|
298
298
|
* Count rows or column values.
|
|
299
299
|
*/
|
|
@@ -316,31 +316,31 @@ export declare class QueryBuilder extends ModelEvent {
|
|
|
316
316
|
/**
|
|
317
317
|
* Get minimum value of column.
|
|
318
318
|
*/
|
|
319
|
-
static min(columns: AggregateInput):
|
|
319
|
+
static min(columns: AggregateInput): any;
|
|
320
320
|
/**
|
|
321
321
|
* Sum column values.
|
|
322
322
|
*/
|
|
323
|
-
static sum(columns: AggregateInput):
|
|
323
|
+
static sum(columns: AggregateInput): any;
|
|
324
324
|
/**
|
|
325
325
|
* Get average of column values.
|
|
326
326
|
*/
|
|
327
|
-
static avg(columns: AggregateInput):
|
|
327
|
+
static avg(columns: AggregateInput): any;
|
|
328
328
|
/**
|
|
329
329
|
* Increment column value(s).
|
|
330
330
|
*/
|
|
331
|
-
static increment(column: string | Record<string, number>, amount?: number):
|
|
331
|
+
static increment(column: string | Record<string, number>, amount?: number): any;
|
|
332
332
|
/**
|
|
333
333
|
* Truncate table.
|
|
334
334
|
*/
|
|
335
|
-
static truncate():
|
|
335
|
+
static truncate(): any;
|
|
336
336
|
/**
|
|
337
337
|
* Pluck single column values.
|
|
338
338
|
*/
|
|
339
|
-
static plunk(column: string):
|
|
339
|
+
static plunk(column: string): any;
|
|
340
340
|
/**
|
|
341
341
|
* Decrement column value(s).
|
|
342
342
|
*/
|
|
343
|
-
static decrement(column: string | Record<string, number>, amount?: number):
|
|
343
|
+
static decrement(column: string | Record<string, number>, amount?: number): any;
|
|
344
344
|
/**
|
|
345
345
|
* Eager load the specified relationships.
|
|
346
346
|
* @param relations - The relationships to eager load
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryBuilder.d.ts","sourceRoot":"","sources":["../../../../Framework/lib/Jcc-eloquent/lib/QueryBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"QueryBuilder.d.ts","sourceRoot":"","sources":["../../../../Framework/lib/Jcc-eloquent/lib/QueryBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.QueryBuilder = void 0;
|
|
4
4
|
const utils_1 = require("./utils");
|
|
5
|
-
const Builder_1 = require("./Builder");
|
|
6
5
|
const ModelEvent_1 = require("./Event/ModelEvent");
|
|
7
6
|
class QueryBuilder extends ModelEvent_1.ModelEvent {
|
|
8
7
|
constructor(data) {
|
|
@@ -17,7 +16,11 @@ class QueryBuilder extends ModelEvent_1.ModelEvent {
|
|
|
17
16
|
* Return a query builder instance for the model's table.
|
|
18
17
|
*/
|
|
19
18
|
static query() {
|
|
20
|
-
|
|
19
|
+
const { Builder } = require("./Builder");
|
|
20
|
+
return new Builder()
|
|
21
|
+
.table(this.getTable())
|
|
22
|
+
.setModel(this)
|
|
23
|
+
.proxy();
|
|
21
24
|
}
|
|
22
25
|
static has(relation, operator = ">=", count = 1, boolean = "and", callback) {
|
|
23
26
|
return this.query().has(relation, operator, count, boolean, callback);
|
|
@@ -3,7 +3,7 @@ export declare class EagerLoader {
|
|
|
3
3
|
/**
|
|
4
4
|
* Load eager relationships for a single model or collection
|
|
5
5
|
*/
|
|
6
|
-
static load(models: Model | Model[], relations: string
|
|
6
|
+
static load(models: Model | Model[], relations: Record<string, Function | null>): Promise<void>;
|
|
7
7
|
/**
|
|
8
8
|
* Load a single relation path (supports nested relations like "user.posts")
|
|
9
9
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EagerLoading.d.ts","sourceRoot":"","sources":["../../../../../Framework/lib/Jcc-eloquent/lib/Relations/EagerLoading.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAGjC,qBAAa,WAAW;IACtB;;OAEG;WACU,IAAI,CACf,MAAM,EAAE,KAAK,GAAG,KAAK,EAAE,EACvB,SAAS,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"EagerLoading.d.ts","sourceRoot":"","sources":["../../../../../Framework/lib/Jcc-eloquent/lib/Relations/EagerLoading.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAGjC,qBAAa,WAAW;IACtB;;OAEG;WACU,IAAI,CACf,MAAM,EAAE,KAAK,GAAG,KAAK,EAAE,EACvB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,GAAG,IAAI,CAAC,GACzC,OAAO,CAAC,IAAI,CAAC;IAUhB;;OAEG;mBACkB,YAAY;IAsCjC;;OAEG;mBACkB,mBAAmB;IA+DxC;;OAEG;mBACkB,qBAAqB;IAwD1C;;OAEG;mBACkB,yBAAyB;IAkE9C;;OAEG;mBACkB,kBAAkB;IAiCvC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAOlC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAIlC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;CAGpC"}
|
|
@@ -10,17 +10,17 @@ class EagerLoader {
|
|
|
10
10
|
const modelArray = Array.isArray(models) ? models : [models];
|
|
11
11
|
if (modelArray.length === 0)
|
|
12
12
|
return;
|
|
13
|
-
for (const relationPath of relations) {
|
|
14
|
-
await this.loadRelation(modelArray, relationPath);
|
|
13
|
+
for (const [relationPath, callback] of Object.entries(relations)) {
|
|
14
|
+
await this.loadRelation(modelArray, relationPath, callback);
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
17
|
/**
|
|
18
18
|
* Load a single relation path (supports nested relations like "user.posts")
|
|
19
19
|
*/
|
|
20
|
-
static async loadRelation(models, relationPath) {
|
|
20
|
+
static async loadRelation(models, relationPath, callback = null) {
|
|
21
21
|
const parts = relationPath.split(".");
|
|
22
22
|
const relation = parts[0];
|
|
23
|
-
const
|
|
23
|
+
const nestedPath = parts.slice(1).join(".");
|
|
24
24
|
const firstModel = models[0];
|
|
25
25
|
if (typeof firstModel[relation] !== "function") {
|
|
26
26
|
console.warn(`Relation method '${relation}' not found on ${firstModel.constructor.name}`);
|
|
@@ -30,23 +30,23 @@ class EagerLoader {
|
|
|
30
30
|
const relationInstance = firstModel[relation]();
|
|
31
31
|
// Load the relation based on its type
|
|
32
32
|
if (this.isOneToManyRelation(relationInstance)) {
|
|
33
|
-
await this.loadHasManyRelation(models, relation,
|
|
33
|
+
await this.loadHasManyRelation(models, relation, nestedPath, callback);
|
|
34
34
|
}
|
|
35
35
|
else if (this.isManyToOneRelation(relationInstance)) {
|
|
36
|
-
await this.loadBelongsToRelation(models, relation,
|
|
36
|
+
await this.loadBelongsToRelation(models, relation, nestedPath, callback);
|
|
37
37
|
}
|
|
38
38
|
else if (this.isManyToManyRelation(relationInstance)) {
|
|
39
|
-
await this.loadBelongsToManyRelation(models, relation,
|
|
39
|
+
await this.loadBelongsToManyRelation(models, relation, nestedPath, callback);
|
|
40
40
|
}
|
|
41
41
|
else {
|
|
42
42
|
// Handle other relation types (HasOne, MorphOne, etc.)
|
|
43
|
-
await this.loadSingleRelation(models, relation,
|
|
43
|
+
await this.loadSingleRelation(models, relation, nestedPath, callback);
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
46
|
/**
|
|
47
47
|
* Load HasMany or MorphMany relations
|
|
48
48
|
*/
|
|
49
|
-
static async loadHasManyRelation(models, relation,
|
|
49
|
+
static async loadHasManyRelation(models, relation, nestedPath, callback = null) {
|
|
50
50
|
const firstModel = models[0];
|
|
51
51
|
const relationInstance = firstModel[relation]();
|
|
52
52
|
// Get foreign key and local key
|
|
@@ -62,6 +62,9 @@ class EagerLoader {
|
|
|
62
62
|
const relatedModel = relationInstance.relatedModel;
|
|
63
63
|
// Build query for all related records
|
|
64
64
|
let query = relatedModel.whereIn(foreignKey, parentKeys);
|
|
65
|
+
// Apply callback
|
|
66
|
+
if (callback)
|
|
67
|
+
callback(query);
|
|
65
68
|
// Handle morph relations
|
|
66
69
|
if (relationInstance.morphType) {
|
|
67
70
|
query = query.where(relationInstance.morphType, relationInstance.type);
|
|
@@ -84,14 +87,14 @@ class EagerLoader {
|
|
|
84
87
|
model.setRelation(relation, related);
|
|
85
88
|
}
|
|
86
89
|
// Load nested relations
|
|
87
|
-
if (
|
|
88
|
-
await this.load(results,
|
|
90
|
+
if (nestedPath && results.length > 0) {
|
|
91
|
+
await this.load(results, { [nestedPath]: null });
|
|
89
92
|
}
|
|
90
93
|
}
|
|
91
94
|
/**
|
|
92
95
|
* Load BelongsTo relations
|
|
93
96
|
*/
|
|
94
|
-
static async loadBelongsToRelation(models, relation,
|
|
97
|
+
static async loadBelongsToRelation(models, relation, nestedPath, callback = null) {
|
|
95
98
|
const firstModel = models[0];
|
|
96
99
|
const relationInstance = firstModel[relation]();
|
|
97
100
|
// Get foreign key and owner key
|
|
@@ -110,8 +113,13 @@ class EagerLoader {
|
|
|
110
113
|
}
|
|
111
114
|
// Get the related model class
|
|
112
115
|
const relatedModel = relationInstance.relatedModel;
|
|
116
|
+
// Build query
|
|
117
|
+
let query = relatedModel.whereIn(ownerKey, foreignKeys);
|
|
118
|
+
// Apply callback
|
|
119
|
+
if (callback)
|
|
120
|
+
callback(query);
|
|
113
121
|
// Query for all related records
|
|
114
|
-
const results = await
|
|
122
|
+
const results = await query.get();
|
|
115
123
|
// Create a map of owner key to model
|
|
116
124
|
const resultMap = new Map();
|
|
117
125
|
for (const result of results) {
|
|
@@ -123,14 +131,14 @@ class EagerLoader {
|
|
|
123
131
|
model.setRelation(relation, resultMap.get(key) || null);
|
|
124
132
|
}
|
|
125
133
|
// Load nested relations
|
|
126
|
-
if (
|
|
127
|
-
await this.load(results,
|
|
134
|
+
if (nestedPath && results.length > 0) {
|
|
135
|
+
await this.load(results, { [nestedPath]: null });
|
|
128
136
|
}
|
|
129
137
|
}
|
|
130
138
|
/**
|
|
131
139
|
* Load BelongsToMany relations
|
|
132
140
|
*/
|
|
133
|
-
static async loadBelongsToManyRelation(models, relation,
|
|
141
|
+
static async loadBelongsToManyRelation(models, relation, nestedPath, callback = null) {
|
|
134
142
|
const firstModel = models[0];
|
|
135
143
|
const relationInstance = firstModel[relation]();
|
|
136
144
|
const parentKey = relationInstance.parentKey || "id";
|
|
@@ -146,12 +154,15 @@ class EagerLoader {
|
|
|
146
154
|
return;
|
|
147
155
|
const relatedModel = relationInstance.relatedModel;
|
|
148
156
|
const relatedTable = relatedModel.getTable();
|
|
149
|
-
//
|
|
150
|
-
|
|
157
|
+
// Build query with pivot table join
|
|
158
|
+
let query = relatedModel
|
|
151
159
|
.select(`${relatedTable}.*`, `${pivotTable}.${foreignPivotKey} as pivot_parent_key`)
|
|
152
160
|
.join(pivotTable, `${relatedTable}.${relatedKey}`, "=", `${pivotTable}.${relatedPivotKey}`)
|
|
153
|
-
.whereIn(`${pivotTable}.${foreignPivotKey}`, parentKeys)
|
|
154
|
-
|
|
161
|
+
.whereIn(`${pivotTable}.${foreignPivotKey}`, parentKeys);
|
|
162
|
+
// Apply callback
|
|
163
|
+
if (callback)
|
|
164
|
+
callback(query);
|
|
165
|
+
const results = await query.get();
|
|
155
166
|
// Group results by parent key
|
|
156
167
|
const grouped = new Map();
|
|
157
168
|
for (const result of results) {
|
|
@@ -167,19 +178,22 @@ class EagerLoader {
|
|
|
167
178
|
model.setRelation(relation, grouped.get(key) || []);
|
|
168
179
|
}
|
|
169
180
|
// Load nested relations
|
|
170
|
-
if (
|
|
171
|
-
await this.load(results,
|
|
181
|
+
if (nestedPath && results.length > 0) {
|
|
182
|
+
await this.load(results, { [nestedPath]: null });
|
|
172
183
|
}
|
|
173
184
|
}
|
|
174
185
|
/**
|
|
175
186
|
* Load single relations (HasOne, MorphOne, MorphTo)
|
|
176
187
|
*/
|
|
177
|
-
static async loadSingleRelation(models, relation,
|
|
178
|
-
// For single relations, we load them individually
|
|
179
|
-
// This is less efficient but handles complex cases like MorphTo
|
|
188
|
+
static async loadSingleRelation(models, relation, nestedPath, callback = null) {
|
|
180
189
|
const relatedModels = [];
|
|
181
190
|
for (const model of models) {
|
|
182
191
|
const relationInstance = model[relation]();
|
|
192
|
+
// Apply callback if possible on the internal builder
|
|
193
|
+
if (callback &&
|
|
194
|
+
typeof relationInstance.getQuery === "function") {
|
|
195
|
+
callback(relationInstance.getQuery());
|
|
196
|
+
}
|
|
183
197
|
const result = await relationInstance.getResults();
|
|
184
198
|
model.setRelation(relation, result);
|
|
185
199
|
if (result && result instanceof Model_1.Model) {
|
|
@@ -187,8 +201,8 @@ class EagerLoader {
|
|
|
187
201
|
}
|
|
188
202
|
}
|
|
189
203
|
// Load nested relations
|
|
190
|
-
if (
|
|
191
|
-
await this.load(relatedModels,
|
|
204
|
+
if (nestedPath && relatedModels.length > 0) {
|
|
205
|
+
await this.load(relatedModels, { [nestedPath]: null });
|
|
192
206
|
}
|
|
193
207
|
}
|
|
194
208
|
/**
|
|
@@ -18,7 +18,7 @@ export declare abstract class Relation {
|
|
|
18
18
|
protected guessForeignKey(): string;
|
|
19
19
|
abstract getResults(): Promise<any>;
|
|
20
20
|
addConstraints(parentKey: any): this;
|
|
21
|
-
getQuery():
|
|
21
|
+
getQuery(): any;
|
|
22
22
|
get(): Promise<any>;
|
|
23
23
|
protected parentKey: any;
|
|
24
24
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../Framework/lib/Jcc-eloquent/lib/utils/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEjC,qBAAa,KAAK;IAChB;;;;;OAKG;IACH,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAKrC;;;;;OAKG;IACH,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAIvC;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAQpC;;;;;OAKG;IACH,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM;IAYrD,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG;IAkBjC;;;;;;OAMG;IACH,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,OAAO;IAMzE;;;;;OAKG;IACH,MAAM,CAAC,oBAAoB,CACzB,cAAc,EAAE,MAAM,GAAG,MAAM,GAC9B,MAAM,GAAG,MAAM;IAUlB;;;;;;OAMG;IACH,MAAM,CAAC,uBAAuB,CAC5B,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM;IAalB;;;;;OAKG;IACH,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE;;;;;;;IAenE;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../Framework/lib/Jcc-eloquent/lib/utils/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEjC,qBAAa,KAAK;IAChB;;;;;OAKG;IACH,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAKrC;;;;;OAKG;IACH,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAIvC;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAQpC;;;;;OAKG;IACH,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM;IAYrD,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG;IAkBjC;;;;;;OAMG;IACH,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,OAAO;IAMzE;;;;;OAKG;IACH,MAAM,CAAC,oBAAoB,CACzB,cAAc,EAAE,MAAM,GAAG,MAAM,GAC9B,MAAM,GAAG,MAAM;IAUlB;;;;;;OAMG;IACH,MAAM,CAAC,uBAAuB,CAC5B,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM;IAalB;;;;;OAKG;IACH,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE;;;;;;;IAenE;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAQxC;;;OAGG;IACH,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM;IAmBhD;;;;OAIG;WACU,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,KAAK,CAAC;IAsBnE,MAAM,CAAC,UAAU;CAWlB"}
|
|
@@ -177,6 +177,8 @@ class Utils {
|
|
|
177
177
|
* Convert a string to StudlyCase (PascalCase).
|
|
178
178
|
*/
|
|
179
179
|
static studlyCase(value) {
|
|
180
|
+
if (typeof value !== "string")
|
|
181
|
+
return "";
|
|
180
182
|
return value
|
|
181
183
|
.split("_")
|
|
182
184
|
.map((part) => part.charAt(0).toUpperCase() + part.slice(1))
|
|
@@ -187,7 +189,7 @@ class Utils {
|
|
|
187
189
|
* @param str Input string
|
|
188
190
|
*/
|
|
189
191
|
static snakeCase(str) {
|
|
190
|
-
if (!str)
|
|
192
|
+
if (!str || (typeof str !== "string" && typeof str !== "function"))
|
|
191
193
|
return "";
|
|
192
194
|
if (typeof str == "function") {
|
|
193
195
|
return str.name
|