@cheetah.js/orm 0.1.15 → 0.1.16
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/SqlBuilder.d.ts +5 -0
- package/dist/SqlBuilder.js +92 -1
- package/dist/SqlBuilder.js.map +1 -1
- package/dist/bun/index.js +135 -9
- package/dist/bun/index.js.map +11 -10
- package/dist/constants.d.ts +1 -0
- package/dist/constants.js +1 -0
- package/dist/constants.js.map +1 -1
- package/dist/decorators/event-hook.decorator.d.ts +4 -0
- package/dist/decorators/event-hook.decorator.js +26 -0
- package/dist/decorators/event-hook.decorator.js.map +1 -0
- package/dist/domain/base-entity.js +6 -3
- package/dist/domain/base-entity.js.map +1 -1
- package/dist/domain/entities.d.ts +8 -1
- package/dist/domain/entities.js +5 -4
- package/dist/domain/entities.js.map +1 -1
- package/dist/driver/driver.interface.d.ts +9 -0
- package/dist/driver/pg-driver.js +1 -1
- package/dist/driver/pg-driver.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/orm.service.js +3 -2
- package/dist/orm.service.js.map +1 -1
- package/package.json +1 -1
- package/test/domain/hooks.spec.ts +160 -0
package/dist/SqlBuilder.d.ts
CHANGED
|
@@ -13,6 +13,7 @@ export declare class SqlBuilder<T> {
|
|
|
13
13
|
constructor(model: new () => T);
|
|
14
14
|
select(columns?: AutoPath<T, never, '*'>[]): SqlBuilder<T>;
|
|
15
15
|
setStrategy(strategy?: 'joined' | 'select'): SqlBuilder<T>;
|
|
16
|
+
setInstance(instance: T): SqlBuilder<T>;
|
|
16
17
|
insert(values: Partial<{
|
|
17
18
|
[K in keyof T]: ValueOrInstance<T[K]>;
|
|
18
19
|
}>): SqlBuilder<T>;
|
|
@@ -33,6 +34,8 @@ export declare class SqlBuilder<T> {
|
|
|
33
34
|
startTime: number;
|
|
34
35
|
sql: string;
|
|
35
36
|
}>;
|
|
37
|
+
private beforeHooks;
|
|
38
|
+
private afterHooks;
|
|
36
39
|
executeAndReturnFirst(): Promise<T | undefined>;
|
|
37
40
|
executeAndReturnFirstOrFail(): Promise<T>;
|
|
38
41
|
executeAndReturnAll(): Promise<T[]>;
|
|
@@ -74,4 +77,6 @@ export declare class SqlBuilder<T> {
|
|
|
74
77
|
private withDefaultValues;
|
|
75
78
|
private withUpdatedValues;
|
|
76
79
|
private extendsFrom;
|
|
80
|
+
callHook(type: string, model?: any): void;
|
|
81
|
+
private reflectToValues;
|
|
77
82
|
}
|
package/dist/SqlBuilder.js
CHANGED
|
@@ -19,6 +19,7 @@ export class SqlBuilder {
|
|
|
19
19
|
this.logger = orm.logger;
|
|
20
20
|
this.entityStorage = EntityStorage.getInstance();
|
|
21
21
|
this.getEntity(model);
|
|
22
|
+
this.statements.hooks = this.entity.hooks;
|
|
22
23
|
}
|
|
23
24
|
select(columns) {
|
|
24
25
|
const tableName = this.entity.tableName || this.model.name.toLowerCase();
|
|
@@ -34,9 +35,14 @@ export class SqlBuilder {
|
|
|
34
35
|
this.statements.strategy = strategy;
|
|
35
36
|
return this;
|
|
36
37
|
}
|
|
38
|
+
setInstance(instance) {
|
|
39
|
+
this.statements.instance = instance;
|
|
40
|
+
return this;
|
|
41
|
+
}
|
|
37
42
|
insert(values) {
|
|
38
43
|
const { tableName, schema } = this.getTableName();
|
|
39
44
|
processValuesForInsert(values);
|
|
45
|
+
this.statements.instance = upEntity(values, this.model, 'insert');
|
|
40
46
|
this.statements.statement = 'insert';
|
|
41
47
|
this.statements.alias = this.getAlias(tableName);
|
|
42
48
|
this.statements.table = `"${schema}"."${tableName}"`;
|
|
@@ -46,6 +52,7 @@ export class SqlBuilder {
|
|
|
46
52
|
update(values) {
|
|
47
53
|
const { tableName, schema } = this.getTableName();
|
|
48
54
|
processValuesForUpdate(values);
|
|
55
|
+
this.statements.instance = upEntity(values, this.model, 'update');
|
|
49
56
|
this.statements.statement = 'update';
|
|
50
57
|
this.statements.alias = this.getAlias(tableName);
|
|
51
58
|
this.statements.table = `${schema}.${tableName}`;
|
|
@@ -131,10 +138,31 @@ export class SqlBuilder {
|
|
|
131
138
|
}
|
|
132
139
|
this.statements.join = this.statements.join?.reverse();
|
|
133
140
|
this.includeUpdatedColumns();
|
|
141
|
+
this.beforeHooks();
|
|
134
142
|
const result = await this.driver.executeStatement(this.statements);
|
|
135
143
|
this.logExecution(result);
|
|
136
144
|
return result;
|
|
137
145
|
}
|
|
146
|
+
beforeHooks() {
|
|
147
|
+
if (this.statements.statement === 'update') {
|
|
148
|
+
this.callHook('beforeUpdate', this.statements.instance);
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
if (this.statements.statement === 'insert') {
|
|
152
|
+
this.callHook('beforeCreate');
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
afterHooks(model) {
|
|
157
|
+
if (this.statements.statement === 'update') {
|
|
158
|
+
this.callHook('afterUpdate', this.statements.instance);
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
if (this.statements.statement === 'insert') {
|
|
162
|
+
this.callHook('afterCreate', model);
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
138
166
|
async executeAndReturnFirst() {
|
|
139
167
|
this.statements.limit = 1;
|
|
140
168
|
const result = await this.execute();
|
|
@@ -143,6 +171,7 @@ export class SqlBuilder {
|
|
|
143
171
|
}
|
|
144
172
|
const entities = result.query.rows[0];
|
|
145
173
|
const model = await this.transformToModel(this.model, this.statements, entities);
|
|
174
|
+
this.afterHooks(model);
|
|
146
175
|
await this.handleSelectJoin(entities, model);
|
|
147
176
|
return model;
|
|
148
177
|
}
|
|
@@ -154,6 +183,7 @@ export class SqlBuilder {
|
|
|
154
183
|
}
|
|
155
184
|
const entities = result.query.rows[0];
|
|
156
185
|
const model = await this.transformToModel(this.model, this.statements, entities);
|
|
186
|
+
this.afterHooks(model);
|
|
157
187
|
await this.handleSelectJoin(entities, model);
|
|
158
188
|
return model;
|
|
159
189
|
}
|
|
@@ -166,6 +196,7 @@ export class SqlBuilder {
|
|
|
166
196
|
const results = [];
|
|
167
197
|
for (const row of rows) {
|
|
168
198
|
const models = this.transformToModel(this.model, this.statements, row);
|
|
199
|
+
this.afterHooks(models);
|
|
169
200
|
await this.handleSelectJoin(row, models);
|
|
170
201
|
results.push(models);
|
|
171
202
|
}
|
|
@@ -456,7 +487,7 @@ export class SqlBuilder {
|
|
|
456
487
|
}
|
|
457
488
|
applyJoin(relationShip, value, alias) {
|
|
458
489
|
const { tableName, schema } = this.getTableName();
|
|
459
|
-
const { tableName: joinTableName, schema: joinSchema, } = this.entityStorage.get(relationShip.entity()) || {
|
|
490
|
+
const { tableName: joinTableName, schema: joinSchema, hooks: joinHooks, } = this.entityStorage.get(relationShip.entity()) || {
|
|
460
491
|
tableName: relationShip.entity().name.toLowerCase(),
|
|
461
492
|
schema: 'public',
|
|
462
493
|
};
|
|
@@ -495,6 +526,7 @@ export class SqlBuilder {
|
|
|
495
526
|
// @ts-ignore
|
|
496
527
|
on,
|
|
497
528
|
originalEntity: relationShip.originalEntity,
|
|
529
|
+
hooks: joinHooks,
|
|
498
530
|
});
|
|
499
531
|
}
|
|
500
532
|
else {
|
|
@@ -512,6 +544,7 @@ export class SqlBuilder {
|
|
|
512
544
|
originProperty: relationShip.propertyKey,
|
|
513
545
|
joinEntity: relationShip.entity(),
|
|
514
546
|
originEntity: relationShip.originalEntity,
|
|
547
|
+
hooks: joinHooks,
|
|
515
548
|
});
|
|
516
549
|
}
|
|
517
550
|
return joinWhere;
|
|
@@ -660,6 +693,33 @@ export class SqlBuilder {
|
|
|
660
693
|
}
|
|
661
694
|
return false;
|
|
662
695
|
}
|
|
696
|
+
callHook(type, model) {
|
|
697
|
+
const hooks = this.statements.hooks?.filter(hook => hook.type === type) || [];
|
|
698
|
+
const instance = model || this.statements.instance;
|
|
699
|
+
for (const hook of hooks) {
|
|
700
|
+
instance[hook.propertyName]();
|
|
701
|
+
if (!model) {
|
|
702
|
+
this.reflectToValues();
|
|
703
|
+
}
|
|
704
|
+
}
|
|
705
|
+
}
|
|
706
|
+
reflectToValues() {
|
|
707
|
+
for (const key in this.statements.instance) {
|
|
708
|
+
if (key.startsWith('$')) {
|
|
709
|
+
continue;
|
|
710
|
+
}
|
|
711
|
+
if (key.startsWith('_')) {
|
|
712
|
+
continue;
|
|
713
|
+
}
|
|
714
|
+
if (this.entity.showProperties[key]) {
|
|
715
|
+
this.statements.values[key] = this.statements.instance[key];
|
|
716
|
+
continue;
|
|
717
|
+
}
|
|
718
|
+
if (this.entity.relations.find(rel => rel.propertyKey === key)) {
|
|
719
|
+
this.statements.values[key] = this.statements.instance[key];
|
|
720
|
+
}
|
|
721
|
+
}
|
|
722
|
+
}
|
|
663
723
|
}
|
|
664
724
|
function processValuesForInsert(values) {
|
|
665
725
|
for (const value in values) {
|
|
@@ -690,4 +750,35 @@ function extendsFrom(baseClass, instance) {
|
|
|
690
750
|
}
|
|
691
751
|
return false;
|
|
692
752
|
}
|
|
753
|
+
function upEntity(values, entity, moment = undefined) {
|
|
754
|
+
const entityStorage = EntityStorage.getInstance();
|
|
755
|
+
const entityOptions = entityStorage.get(entity);
|
|
756
|
+
// @ts-ignore
|
|
757
|
+
const instance = new entity();
|
|
758
|
+
if (!entityOptions) {
|
|
759
|
+
throw new Error('Entity not found');
|
|
760
|
+
}
|
|
761
|
+
const property = Object.entries(entityOptions.showProperties);
|
|
762
|
+
const relations = entityOptions.relations;
|
|
763
|
+
property.forEach(([key, property]) => {
|
|
764
|
+
if (property.options.onInsert && moment === 'insert') {
|
|
765
|
+
instance[key] = property.options.onInsert();
|
|
766
|
+
}
|
|
767
|
+
if (property.options.onInsert && moment === 'update') {
|
|
768
|
+
instance[key] = property.options.onUpdate();
|
|
769
|
+
}
|
|
770
|
+
if (key in values) {
|
|
771
|
+
instance[key] = values[key];
|
|
772
|
+
}
|
|
773
|
+
});
|
|
774
|
+
if (relations) {
|
|
775
|
+
for (const relation of relations) {
|
|
776
|
+
if (relation.relation === 'many-to-one') {
|
|
777
|
+
// @ts-ignore
|
|
778
|
+
instance[relation.propertyKey] = instance[relation.propertyKey];
|
|
779
|
+
}
|
|
780
|
+
}
|
|
781
|
+
}
|
|
782
|
+
return instance;
|
|
783
|
+
}
|
|
693
784
|
//# sourceMappingURL=SqlBuilder.js.map
|
package/dist/SqlBuilder.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqlBuilder.js","sourceRoot":"","sources":["../src/SqlBuilder.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SqlBuilder.js","sourceRoot":"","sources":["../src/SqlBuilder.ts"],"names":[],"mappings":"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"}
|
package/dist/bun/index.js
CHANGED
|
@@ -218323,6 +218323,7 @@ var ENTITIES = "cheetah:entities";
|
|
|
218323
218323
|
var PROPERTIES = "cheetah:properties";
|
|
218324
218324
|
var PROPERTIES_METADATA = "cheetah:properties:metadata";
|
|
218325
218325
|
var PROPERTIES_RELATIONS = "cheetah:properties:relations";
|
|
218326
|
+
var EVENTS_METADATA = "cheetah:events:metadata";
|
|
218326
218327
|
|
|
218327
218328
|
// ../../node_modules/balanced-match/index.jsodules/minimatch
|
|
218328
218329
|
var ProviderType;
|
|
@@ -223766,6 +223767,31 @@ function Index(options) {
|
|
|
223766
223767
|
Metadata.set("indexes", indexes, target.constructor);
|
|
223767
223768
|
};
|
|
223768
223769
|
}
|
|
223770
|
+
// ../../node_modules/balanced-match/inde
|
|
223771
|
+
function BeforeCreate() {
|
|
223772
|
+
return function(target, propertyName) {
|
|
223773
|
+
const metadata = Reflect.getMetadata(EVENTS_METADATA, target.constructor) || [];
|
|
223774
|
+
Reflect.defineMetadata(EVENTS_METADATA, [...metadata, { type: "beforeCreate", propertyName }], target.constructor);
|
|
223775
|
+
};
|
|
223776
|
+
}
|
|
223777
|
+
function AfterCreate() {
|
|
223778
|
+
return function(target, propertyName) {
|
|
223779
|
+
const metadata = Reflect.getMetadata(EVENTS_METADATA, target.constructor) || [];
|
|
223780
|
+
Reflect.defineMetadata(EVENTS_METADATA, [...metadata, { type: "afterCreate", propertyName }], target.constructor);
|
|
223781
|
+
};
|
|
223782
|
+
}
|
|
223783
|
+
function BeforeUpdate() {
|
|
223784
|
+
return function(target, propertyName) {
|
|
223785
|
+
const metadata = Reflect.getMetadata(EVENTS_METADATA, target.constructor) || [];
|
|
223786
|
+
Reflect.defineMetadata(EVENTS_METADATA, [...metadata, { type: "beforeUpdate", propertyName }], target.constructor);
|
|
223787
|
+
};
|
|
223788
|
+
}
|
|
223789
|
+
function AfterUpdate() {
|
|
223790
|
+
return function(target, propertyName) {
|
|
223791
|
+
const metadata = Reflect.getMetadata(EVENTS_METADATA, target.constructor) || [];
|
|
223792
|
+
Reflect.defineMetadata(EVENTS_METADATA, [...metadata, { type: "afterUpdate", propertyName }], target.constructor);
|
|
223793
|
+
};
|
|
223794
|
+
}
|
|
223769
223795
|
// ../../node_modules/bal
|
|
223770
223796
|
class EntityStorage {
|
|
223771
223797
|
static instance;
|
|
@@ -223773,7 +223799,7 @@ class EntityStorage {
|
|
|
223773
223799
|
constructor() {
|
|
223774
223800
|
EntityStorage.instance = this;
|
|
223775
223801
|
}
|
|
223776
|
-
add(entity, properties, relations) {
|
|
223802
|
+
add(entity, properties, relations, hooks3) {
|
|
223777
223803
|
const entityName = entity.options?.tableName || entity.target.name.toLowerCase();
|
|
223778
223804
|
const indexes = Metadata.get("indexes", entity.target) || [];
|
|
223779
223805
|
this.entities.set(entity.target, {
|
|
@@ -223787,6 +223813,7 @@ class EntityStorage {
|
|
|
223787
223813
|
columnName: index.properties.join(",")
|
|
223788
223814
|
};
|
|
223789
223815
|
}),
|
|
223816
|
+
hooks: hooks3,
|
|
223790
223817
|
tableName: entityName,
|
|
223791
223818
|
...entity.options
|
|
223792
223819
|
});
|
|
@@ -223956,11 +223983,15 @@ class BaseEntity {
|
|
|
223956
223983
|
async save() {
|
|
223957
223984
|
const qb = this.createQueryBuilder();
|
|
223958
223985
|
if (this.$_isPersisted) {
|
|
223959
|
-
qb.update(this._changedValues)
|
|
223986
|
+
qb.update(this._changedValues);
|
|
223987
|
+
qb.setInstance(this);
|
|
223988
|
+
qb.where({ id: this._oldValues.id });
|
|
223960
223989
|
} else {
|
|
223961
223990
|
qb.insert(this._oldValues);
|
|
223962
223991
|
}
|
|
223963
223992
|
await qb.execute();
|
|
223993
|
+
qb.callHook("afterCreate", this);
|
|
223994
|
+
qb.callHook("afterUpdate", this);
|
|
223964
223995
|
this._oldValues = {
|
|
223965
223996
|
...this._oldValues,
|
|
223966
223997
|
...this._changedValues
|
|
@@ -223998,6 +224029,35 @@ var extendsFrom = function(baseClass, instance) {
|
|
|
223998
224029
|
}
|
|
223999
224030
|
return false;
|
|
224000
224031
|
};
|
|
224032
|
+
var upEntity = function(values, entity, moment = undefined) {
|
|
224033
|
+
const entityStorage = EntityStorage.getInstance();
|
|
224034
|
+
const entityOptions = entityStorage.get(entity);
|
|
224035
|
+
const instance = new entity;
|
|
224036
|
+
if (!entityOptions) {
|
|
224037
|
+
throw new Error("Entity not found");
|
|
224038
|
+
}
|
|
224039
|
+
const property2 = Object.entries(entityOptions.showProperties);
|
|
224040
|
+
const relations = entityOptions.relations;
|
|
224041
|
+
property2.forEach(([key, property3]) => {
|
|
224042
|
+
if (property3.options.onInsert && moment === "insert") {
|
|
224043
|
+
instance[key] = property3.options.onInsert();
|
|
224044
|
+
}
|
|
224045
|
+
if (property3.options.onInsert && moment === "update") {
|
|
224046
|
+
instance[key] = property3.options.onUpdate();
|
|
224047
|
+
}
|
|
224048
|
+
if (key in values) {
|
|
224049
|
+
instance[key] = values[key];
|
|
224050
|
+
}
|
|
224051
|
+
});
|
|
224052
|
+
if (relations) {
|
|
224053
|
+
for (const relation of relations) {
|
|
224054
|
+
if (relation.relation === "many-to-one") {
|
|
224055
|
+
instance[relation.propertyKey] = instance[relation.propertyKey];
|
|
224056
|
+
}
|
|
224057
|
+
}
|
|
224058
|
+
}
|
|
224059
|
+
return instance;
|
|
224060
|
+
};
|
|
224001
224061
|
|
|
224002
224062
|
class SqlBuilder2 {
|
|
224003
224063
|
driver;
|
|
@@ -224016,6 +224076,7 @@ class SqlBuilder2 {
|
|
|
224016
224076
|
this.logger = orm2.logger;
|
|
224017
224077
|
this.entityStorage = EntityStorage.getInstance();
|
|
224018
224078
|
this.getEntity(model);
|
|
224079
|
+
this.statements.hooks = this.entity.hooks;
|
|
224019
224080
|
}
|
|
224020
224081
|
select(columns) {
|
|
224021
224082
|
const tableName = this.entity.tableName || this.model.name.toLowerCase();
|
|
@@ -224031,9 +224092,14 @@ class SqlBuilder2 {
|
|
|
224031
224092
|
this.statements.strategy = strategy;
|
|
224032
224093
|
return this;
|
|
224033
224094
|
}
|
|
224095
|
+
setInstance(instance) {
|
|
224096
|
+
this.statements.instance = instance;
|
|
224097
|
+
return this;
|
|
224098
|
+
}
|
|
224034
224099
|
insert(values) {
|
|
224035
224100
|
const { tableName, schema } = this.getTableName();
|
|
224036
224101
|
processValuesForInsert(values);
|
|
224102
|
+
this.statements.instance = upEntity(values, this.model, "insert");
|
|
224037
224103
|
this.statements.statement = "insert";
|
|
224038
224104
|
this.statements.alias = this.getAlias(tableName);
|
|
224039
224105
|
this.statements.table = `"${schema}"."${tableName}"`;
|
|
@@ -224043,6 +224109,7 @@ class SqlBuilder2 {
|
|
|
224043
224109
|
update(values) {
|
|
224044
224110
|
const { tableName, schema } = this.getTableName();
|
|
224045
224111
|
processValuesForUpdate(values);
|
|
224112
|
+
this.statements.instance = upEntity(values, this.model, "update");
|
|
224046
224113
|
this.statements.statement = "update";
|
|
224047
224114
|
this.statements.alias = this.getAlias(tableName);
|
|
224048
224115
|
this.statements.table = `${schema}.${tableName}`;
|
|
@@ -224121,10 +224188,31 @@ class SqlBuilder2 {
|
|
|
224121
224188
|
}
|
|
224122
224189
|
this.statements.join = this.statements.join?.reverse();
|
|
224123
224190
|
this.includeUpdatedColumns();
|
|
224191
|
+
this.beforeHooks();
|
|
224124
224192
|
const result = await this.driver.executeStatement(this.statements);
|
|
224125
224193
|
this.logExecution(result);
|
|
224126
224194
|
return result;
|
|
224127
224195
|
}
|
|
224196
|
+
beforeHooks() {
|
|
224197
|
+
if (this.statements.statement === "update") {
|
|
224198
|
+
this.callHook("beforeUpdate", this.statements.instance);
|
|
224199
|
+
return;
|
|
224200
|
+
}
|
|
224201
|
+
if (this.statements.statement === "insert") {
|
|
224202
|
+
this.callHook("beforeCreate");
|
|
224203
|
+
return;
|
|
224204
|
+
}
|
|
224205
|
+
}
|
|
224206
|
+
afterHooks(model) {
|
|
224207
|
+
if (this.statements.statement === "update") {
|
|
224208
|
+
this.callHook("afterUpdate", this.statements.instance);
|
|
224209
|
+
return;
|
|
224210
|
+
}
|
|
224211
|
+
if (this.statements.statement === "insert") {
|
|
224212
|
+
this.callHook("afterCreate", model);
|
|
224213
|
+
return;
|
|
224214
|
+
}
|
|
224215
|
+
}
|
|
224128
224216
|
async executeAndReturnFirst() {
|
|
224129
224217
|
this.statements.limit = 1;
|
|
224130
224218
|
const result = await this.execute();
|
|
@@ -224133,6 +224221,7 @@ class SqlBuilder2 {
|
|
|
224133
224221
|
}
|
|
224134
224222
|
const entities2 = result.query.rows[0];
|
|
224135
224223
|
const model = await this.transformToModel(this.model, this.statements, entities2);
|
|
224224
|
+
this.afterHooks(model);
|
|
224136
224225
|
await this.handleSelectJoin(entities2, model);
|
|
224137
224226
|
return model;
|
|
224138
224227
|
}
|
|
@@ -224144,6 +224233,7 @@ class SqlBuilder2 {
|
|
|
224144
224233
|
}
|
|
224145
224234
|
const entities2 = result.query.rows[0];
|
|
224146
224235
|
const model = await this.transformToModel(this.model, this.statements, entities2);
|
|
224236
|
+
this.afterHooks(model);
|
|
224147
224237
|
await this.handleSelectJoin(entities2, model);
|
|
224148
224238
|
return model;
|
|
224149
224239
|
}
|
|
@@ -224156,6 +224246,7 @@ class SqlBuilder2 {
|
|
|
224156
224246
|
const results = [];
|
|
224157
224247
|
for (const row of rows) {
|
|
224158
224248
|
const models = this.transformToModel(this.model, this.statements, row);
|
|
224249
|
+
this.afterHooks(models);
|
|
224159
224250
|
await this.handleSelectJoin(row, models);
|
|
224160
224251
|
results.push(models);
|
|
224161
224252
|
}
|
|
@@ -224430,7 +224521,8 @@ class SqlBuilder2 {
|
|
|
224430
224521
|
const { tableName, schema } = this.getTableName();
|
|
224431
224522
|
const {
|
|
224432
224523
|
tableName: joinTableName,
|
|
224433
|
-
schema: joinSchema
|
|
224524
|
+
schema: joinSchema,
|
|
224525
|
+
hooks: joinHooks
|
|
224434
224526
|
} = this.entityStorage.get(relationShip.entity()) || {
|
|
224435
224527
|
tableName: relationShip.entity().name.toLowerCase(),
|
|
224436
224528
|
schema: "public"
|
|
@@ -224468,7 +224560,8 @@ class SqlBuilder2 {
|
|
|
224468
224560
|
joinEntity: relationShip.entity(),
|
|
224469
224561
|
type: "LEFT",
|
|
224470
224562
|
on,
|
|
224471
|
-
originalEntity: relationShip.originalEntity
|
|
224563
|
+
originalEntity: relationShip.originalEntity,
|
|
224564
|
+
hooks: joinHooks
|
|
224472
224565
|
});
|
|
224473
224566
|
} else {
|
|
224474
224567
|
this.statements.selectJoin = this.statements.selectJoin || [];
|
|
@@ -224484,7 +224577,8 @@ class SqlBuilder2 {
|
|
|
224484
224577
|
originAlias: alias,
|
|
224485
224578
|
originProperty: relationShip.propertyKey,
|
|
224486
224579
|
joinEntity: relationShip.entity(),
|
|
224487
|
-
originEntity: relationShip.originalEntity
|
|
224580
|
+
originEntity: relationShip.originalEntity,
|
|
224581
|
+
hooks: joinHooks
|
|
224488
224582
|
});
|
|
224489
224583
|
}
|
|
224490
224584
|
return joinWhere;
|
|
@@ -224614,6 +224708,33 @@ class SqlBuilder2 {
|
|
|
224614
224708
|
}
|
|
224615
224709
|
return false;
|
|
224616
224710
|
}
|
|
224711
|
+
callHook(type, model) {
|
|
224712
|
+
const hooks3 = this.statements.hooks?.filter((hook) => hook.type === type) || [];
|
|
224713
|
+
const instance = model || this.statements.instance;
|
|
224714
|
+
for (const hook of hooks3) {
|
|
224715
|
+
instance[hook.propertyName]();
|
|
224716
|
+
if (!model) {
|
|
224717
|
+
this.reflectToValues();
|
|
224718
|
+
}
|
|
224719
|
+
}
|
|
224720
|
+
}
|
|
224721
|
+
reflectToValues() {
|
|
224722
|
+
for (const key in this.statements.instance) {
|
|
224723
|
+
if (key.startsWith("$")) {
|
|
224724
|
+
continue;
|
|
224725
|
+
}
|
|
224726
|
+
if (key.startsWith("_")) {
|
|
224727
|
+
continue;
|
|
224728
|
+
}
|
|
224729
|
+
if (this.entity.showProperties[key]) {
|
|
224730
|
+
this.statements.values[key] = this.statements.instance[key];
|
|
224731
|
+
continue;
|
|
224732
|
+
}
|
|
224733
|
+
if (this.entity.relations.find((rel) => rel.propertyKey === key)) {
|
|
224734
|
+
this.statements.values[key] = this.statements.instance[key];
|
|
224735
|
+
}
|
|
224736
|
+
}
|
|
224737
|
+
}
|
|
224617
224738
|
}
|
|
224618
224739
|
|
|
224619
224740
|
// ../../node
|
|
@@ -224718,6 +224839,7 @@ class OrmService {
|
|
|
224718
224839
|
const nullableDefaultEntity = this.allEntities.get(entity.target.name);
|
|
224719
224840
|
const properties = Metadata.get(PROPERTIES_METADATA, entity.target);
|
|
224720
224841
|
const relationship = Metadata.get(PROPERTIES_RELATIONS, entity.target);
|
|
224842
|
+
const hooks3 = Metadata.get(EVENTS_METADATA, entity.target);
|
|
224721
224843
|
for (const property2 in properties) {
|
|
224722
224844
|
if (nullableDefaultEntity?.nullables.includes(property2)) {
|
|
224723
224845
|
properties[property2].options.nullable = true;
|
|
@@ -224726,7 +224848,7 @@ class OrmService {
|
|
|
224726
224848
|
properties[property2].options.default = nullableDefaultEntity?.defaults[property2];
|
|
224727
224849
|
}
|
|
224728
224850
|
}
|
|
224729
|
-
this.storage.add(entity, properties, relationship);
|
|
224851
|
+
this.storage.add(entity, properties, relationship, hooks3);
|
|
224730
224852
|
}
|
|
224731
224853
|
console.log("Entities prepared!");
|
|
224732
224854
|
}
|
|
@@ -224872,7 +224994,7 @@ class PgDriver {
|
|
|
224872
224994
|
sql = `INSERT INTO ${table} (${fields}) VALUES (${values}) RETURNING ${statement.columns.join(", ").replaceAll(`${alias}.`, "")}`;
|
|
224873
224995
|
break;
|
|
224874
224996
|
case "update":
|
|
224875
|
-
sql = `UPDATE ${table} as ${alias} SET ${Object.entries(statement.values).map(([key, value]) => `${key} =
|
|
224997
|
+
sql = `UPDATE ${table} as ${alias} SET ${Object.entries(statement.values).map(([key, value]) => `${key} = ${this.toDatabaseValue(value)}`).join(", ")}`;
|
|
224876
224998
|
break;
|
|
224877
224999
|
case "delete":
|
|
224878
225000
|
break;
|
|
@@ -225055,7 +225177,11 @@ export {
|
|
|
225055
225177
|
Entity,
|
|
225056
225178
|
Email,
|
|
225057
225179
|
CheetahOrm,
|
|
225058
|
-
|
|
225180
|
+
BeforeUpdate,
|
|
225181
|
+
BeforeCreate,
|
|
225182
|
+
BaseEntity,
|
|
225183
|
+
AfterUpdate,
|
|
225184
|
+
AfterCreate
|
|
225059
225185
|
};
|
|
225060
225186
|
|
|
225061
|
-
//# debugId=
|
|
225187
|
+
//# debugId=FB9BE6B73C11578564756e2164756e21
|