@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.
@@ -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
  }
@@ -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
@@ -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).where({ id: this._oldValues.id });
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} = '${value}'`).join(", ")}`;
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
- BaseEntity
225180
+ BeforeUpdate,
225181
+ BeforeCreate,
225182
+ BaseEntity,
225183
+ AfterUpdate,
225184
+ AfterCreate
225059
225185
  };
225060
225186
 
225061
- //# debugId=A5909A4A5F852D6964756e2164756e21
225187
+ //# debugId=FB9BE6B73C11578564756e2164756e21