@iamkirbki/database-handler-core 4.0.5 → 4.1.5
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/abstract/Model.d.ts +7 -5
- package/dist/abstract/Model.d.ts.map +1 -1
- package/dist/abstract/Model.js +31 -10
- package/dist/base/Query.d.ts +2 -1
- package/dist/base/Query.d.ts.map +1 -1
- package/dist/base/Query.js +16 -0
- package/dist/runtime/Repository.d.ts +2 -1
- package/dist/runtime/Repository.d.ts.map +1 -1
- package/dist/runtime/Repository.js +8 -1
- package/dist/types/model.d.ts +5 -1
- package/dist/types/model.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/abstract/Model.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import Repository from "../runtime/Repository.js";
|
|
2
|
-
import { columnType, QueryCondition, QueryValues, ModelConfig, relation, QueryOptions } from "../types/index.js";
|
|
2
|
+
import { columnType, QueryCondition, QueryValues, ModelConfig, relation, QueryOptions, joinedEntity } from "../types/index.js";
|
|
3
3
|
/** Abstract Model class for ORM-style database interactions */
|
|
4
4
|
export default abstract class Model<ModelType extends columnType> {
|
|
5
5
|
private _repository?;
|
|
@@ -38,14 +38,16 @@ export default abstract class Model<ModelType extends columnType> {
|
|
|
38
38
|
set(attributes: Partial<ModelType>): this;
|
|
39
39
|
save(): this;
|
|
40
40
|
update(attributes: Partial<ModelType>): this;
|
|
41
|
-
protected joinedEntities:
|
|
41
|
+
protected joinedEntities: joinedEntity[];
|
|
42
42
|
protected relations: relation[];
|
|
43
|
-
get JoinedEntities():
|
|
43
|
+
get JoinedEntities(): joinedEntity[];
|
|
44
44
|
get Relations(): relation[];
|
|
45
45
|
hasMany<modelType extends Model<columnType>>(model: modelType, foreignKey?: string, localKey?: string): this;
|
|
46
46
|
hasOne<modelType extends Model<columnType>>(model: modelType, foreignKey?: string, localKey?: string): this;
|
|
47
47
|
belongsTo<modelType extends Model<columnType>>(model: modelType, foreignKey?: string, localKey?: string): this;
|
|
48
|
-
static with<ParamterModelType extends Model<columnType>>(this: new () => ParamterModelType,
|
|
49
|
-
with(
|
|
48
|
+
static with<ParamterModelType extends Model<columnType>>(this: new () => ParamterModelType, relation: string, queryScopes?: QueryCondition): ParamterModelType;
|
|
49
|
+
with(relation: string, queryScopes?: QueryCondition): this;
|
|
50
|
+
private callRelationMethod;
|
|
51
|
+
private normalizeQueryScopes;
|
|
50
52
|
}
|
|
51
53
|
//# sourceMappingURL=Model.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Model.d.ts","sourceRoot":"","sources":["../../src/abstract/Model.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Model.d.ts","sourceRoot":"","sources":["../../src/abstract/Model.ts"],"names":[],"mappings":"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"}
|
package/dist/abstract/Model.js
CHANGED
|
@@ -7,6 +7,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
7
7
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
|
+
import Query from "../base/Query.js";
|
|
10
11
|
import Repository from "../runtime/Repository.js";
|
|
11
12
|
/** Abstract Model class for ORM-style database interactions */
|
|
12
13
|
export default class Model {
|
|
@@ -201,19 +202,39 @@ export default class Model {
|
|
|
201
202
|
});
|
|
202
203
|
return this;
|
|
203
204
|
}
|
|
204
|
-
static with(
|
|
205
|
+
static with(relation, queryScopes) {
|
|
205
206
|
const instance = new this();
|
|
206
|
-
return instance.with(
|
|
207
|
+
return instance.with(relation, queryScopes);
|
|
208
|
+
}
|
|
209
|
+
with(relation, queryScopes) {
|
|
210
|
+
this.callRelationMethod(relation);
|
|
211
|
+
const lastRelation = this.relations[this.relations.length - 1];
|
|
212
|
+
const tableName = lastRelation.model.Configuration.table;
|
|
213
|
+
const normalizedScopes = this.normalizeQueryScopes(queryScopes, tableName);
|
|
214
|
+
this.joinedEntities.push({
|
|
215
|
+
relation: relation,
|
|
216
|
+
queryScopes: normalizedScopes
|
|
217
|
+
});
|
|
218
|
+
return this;
|
|
207
219
|
}
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
method.call(this);
|
|
220
|
+
callRelationMethod(relation) {
|
|
221
|
+
const method = Reflect.get(this, relation);
|
|
222
|
+
if (typeof method !== 'function') {
|
|
223
|
+
throw new Error(`Relation method '${relation}' does not exist on ${this.constructor.name}`);
|
|
213
224
|
}
|
|
214
|
-
|
|
215
|
-
|
|
225
|
+
method.call(this);
|
|
226
|
+
}
|
|
227
|
+
normalizeQueryScopes(queryScopes, tableName) {
|
|
228
|
+
if (!queryScopes) {
|
|
229
|
+
return undefined;
|
|
216
230
|
}
|
|
217
|
-
|
|
231
|
+
const isSingleParameter = Object.keys(queryScopes).length === 3 &&
|
|
232
|
+
'column' in queryScopes &&
|
|
233
|
+
'operator' in queryScopes &&
|
|
234
|
+
'value' in queryScopes;
|
|
235
|
+
let scopesArray = isSingleParameter
|
|
236
|
+
? [queryScopes]
|
|
237
|
+
: Query.ConvertParamsToArray(queryScopes);
|
|
238
|
+
return scopesArray.map(scope => (Object.assign(Object.assign({}, scope), { column: `${tableName}.${scope.column}` })));
|
|
218
239
|
}
|
|
219
240
|
}
|
package/dist/base/Query.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { columnType, QueryCondition, QueryWhereParameters, TableColumnInfo } from "../types/index.js";
|
|
1
|
+
import { columnType, QueryCondition, QueryWhereParameters, TableColumnInfo, QueryParameters } from "../types/index.js";
|
|
2
2
|
import { Record } from "../index.js";
|
|
3
3
|
/** Query class for executing custom SQL queries */
|
|
4
4
|
export default class Query {
|
|
@@ -17,6 +17,7 @@ export default class Query {
|
|
|
17
17
|
Get<Type extends columnType>(): Promise<Record<Type> | undefined>;
|
|
18
18
|
static tableColumnInformation(tableName: string): Promise<TableColumnInfo[]>;
|
|
19
19
|
Count(): Promise<number>;
|
|
20
|
+
static ConvertParamsToArray(params: QueryCondition): QueryParameters[];
|
|
20
21
|
/** Convert various parameter formats to a consistent object format */
|
|
21
22
|
static ConvertParamsToObject(params: QueryCondition): QueryWhereParameters;
|
|
22
23
|
/** Databases don't like numeric values when inserting with a query */
|
package/dist/base/Query.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Query.d.ts","sourceRoot":"","sources":["../../src/base/Query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"Query.d.ts","sourceRoot":"","sources":["../../src/base/Query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,oBAAoB,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC1H,OAAO,EAAa,MAAM,EAAoB,MAAM,gBAAgB,CAAC;AAErE,mDAAmD;AACnD,MAAM,CAAC,OAAO,OAAO,KAAK;IACxB,SAAgB,SAAS,EAAE,MAAM,CAAC;IAElC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA0D;IACnF,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,WAAW,CAAsB;IAEzC,IAAW,UAAU,IAAI,cAAc,CAEtC;IAED,IAAW,UAAU,CAAC,KAAK,EAAE,cAAc,EAE1C;gBAEW,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAK5C,gEAAgE;IACnD,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC;IAKvC,0DAA0D;IAC7C,GAAG,CAAC,IAAI,SAAS,UAAU,KAAK,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;IAMpE,+DAA+D;IAClD,GAAG,CAAC,IAAI,SAAS,UAAU,KAAK,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;WAM1D,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAI7E,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;WAMvB,oBAAoB,CAAC,MAAM,EAAE,cAAc,GAAG,eAAe,EAAE;IAkB7E,sEAAsE;WACxD,qBAAqB,CAAC,MAAM,EAAE,cAAc,GAAG,oBAAoB;IAajF,sEAAsE;WACxD,oBAAoB,CAAC,MAAM,EAAE,oBAAoB,GAAG,oBAAoB;CAKvF"}
|
package/dist/base/Query.js
CHANGED
|
@@ -58,6 +58,22 @@ export default class Query {
|
|
|
58
58
|
return parseInt(result.count) || 0;
|
|
59
59
|
});
|
|
60
60
|
}
|
|
61
|
+
static ConvertParamsToArray(params) {
|
|
62
|
+
const paramArray = [];
|
|
63
|
+
if (Array.isArray(params)) {
|
|
64
|
+
return params;
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
Object.entries(params).forEach(([key, value]) => {
|
|
68
|
+
return paramArray.push({
|
|
69
|
+
column: key,
|
|
70
|
+
operator: "=",
|
|
71
|
+
value
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
return paramArray;
|
|
76
|
+
}
|
|
61
77
|
/** Convert various parameter formats to a consistent object format */
|
|
62
78
|
static ConvertParamsToObject(params) {
|
|
63
79
|
const paramObject = {};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type Model from "../abstract/Model.js";
|
|
2
|
-
import { columnType, QueryCondition, QueryOptions } from "../types/index";
|
|
2
|
+
import { columnType, QueryCondition, QueryOptions } from "../types/index.js";
|
|
3
3
|
export default class Repository<Type extends columnType, ModelType extends Model<Type>> {
|
|
4
4
|
private static _instances;
|
|
5
5
|
private models;
|
|
@@ -14,5 +14,6 @@ export default class Repository<Type extends columnType, ModelType extends Model
|
|
|
14
14
|
all(Model: Model<Type>, queryscopes?: QueryCondition, queryOptions?: QueryOptions): Promise<Type[]>;
|
|
15
15
|
update(attributes: Partial<Type>): Promise<this>;
|
|
16
16
|
private join;
|
|
17
|
+
private mergeQueryConditions;
|
|
17
18
|
}
|
|
18
19
|
//# sourceMappingURL=Repository.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Repository.d.ts","sourceRoot":"","sources":["../../src/runtime/Repository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"Repository.d.ts","sourceRoot":"","sources":["../../src/runtime/Repository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,yBAAyB,CAAC;AAGjD,OAAO,EAAE,UAAU,EAAQ,cAAc,EAAE,YAAY,EAA6B,MAAM,sBAAsB,CAAC;AAEjH,MAAM,CAAC,OAAO,OAAO,UAAU,CAAC,IAAI,SAAS,UAAU,EAAE,SAAS,SAAS,KAAK,CAAC,IAAI,CAAC;IAClF,OAAO,CAAC,MAAM,CAAC,UAAU,CAAqE;IAC9F,OAAO,CAAC,MAAM,CAAqC;IACnD,OAAO,CAAC,KAAK,CAAO;gBAER,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS;WAMtC,WAAW,CAAC,SAAS,SAAS,UAAU,EAClD,UAAU,EAAE,UAAU,KAAK,CAAC,SAAS,CAAC,EACtC,SAAS,EAAE,MAAM,GAClB,UAAU,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAWnC,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAKjC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS;IAI3B,IAAI,CAAC,UAAU,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrC,KAAK,CAAC,UAAU,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAW3E,GAAG,CAAC,UAAU,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAQhG,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,EAAE,cAAc,EAAE,YAAY,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAQnG,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;YAe/C,IAAI;IAyBlB,OAAO,CAAC,oBAAoB;CAG/B"}
|
|
@@ -7,6 +7,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
7
7
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
|
+
import Query from "../base/Query.js";
|
|
10
11
|
import Table from "../base/Table.js";
|
|
11
12
|
class Repository {
|
|
12
13
|
constructor(tableName, ModelClass) {
|
|
@@ -89,7 +90,10 @@ class Repository {
|
|
|
89
90
|
join(Model, conditions, queryOptions) {
|
|
90
91
|
return __awaiter(this, void 0, void 0, function* () {
|
|
91
92
|
const Join = Model.JoinedEntities.map(join => {
|
|
92
|
-
const relation = Model.Relations.find(rel => rel.model.Configuration.table.toLowerCase() === join.toLowerCase());
|
|
93
|
+
const relation = Model.Relations.find(rel => rel.model.Configuration.table.toLowerCase() === join.relation.toLowerCase());
|
|
94
|
+
if (join.queryScopes) {
|
|
95
|
+
conditions = this.mergeQueryConditions(conditions || {}, join.queryScopes);
|
|
96
|
+
}
|
|
93
97
|
if (!relation) {
|
|
94
98
|
throw new Error(`Relation for joined entity ${join} not found.`);
|
|
95
99
|
}
|
|
@@ -105,6 +109,9 @@ class Repository {
|
|
|
105
109
|
return (yield this.Table.Join(Join, Object.assign({ where: conditions }, queryOptions))).map(record => record.values);
|
|
106
110
|
});
|
|
107
111
|
}
|
|
112
|
+
mergeQueryConditions(base, additional) {
|
|
113
|
+
return [...Query.ConvertParamsToArray(base), ...Query.ConvertParamsToArray(additional)];
|
|
114
|
+
}
|
|
108
115
|
}
|
|
109
116
|
Repository._instances = new Map();
|
|
110
117
|
export default Repository;
|
package/dist/types/model.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/** Model configuration and types */
|
|
2
2
|
import Model from "../abstract/Model";
|
|
3
|
-
import { columnType } from "./index";
|
|
3
|
+
import { columnType, QueryCondition } from "./index";
|
|
4
4
|
export type ModelEventType = 'retrieved' | 'creating' | 'created' | 'updating' | 'updated' | 'saving' | 'saved' | 'deleting' | 'deleted' | 'restoring' | 'restored' | 'forceDeleting' | 'forceDeleted';
|
|
5
5
|
export type ModelEventHandler<T> = (model: T) => void | Promise<void>;
|
|
6
6
|
export interface ModelObserver<T> {
|
|
@@ -68,4 +68,8 @@ export type ModelWithTimestamps = {
|
|
|
68
68
|
created_at?: string;
|
|
69
69
|
updated_at?: string;
|
|
70
70
|
};
|
|
71
|
+
export type joinedEntity = {
|
|
72
|
+
relation: string;
|
|
73
|
+
queryScopes?: QueryCondition;
|
|
74
|
+
};
|
|
71
75
|
//# sourceMappingURL=model.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/types/model.ts"],"names":[],"mappings":"AAAA,oCAAoC;AAEpC,OAAO,KAAK,MAAM,sBAAsB,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/types/model.ts"],"names":[],"mappings":"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"}
|