@t4h.framework/orm 0.8.0 → 0.9.0

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/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @t4h.framework/orm
2
2
 
3
+ ## 0.9.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#187](https://github.com/tech4humans-brasil/framework/pull/187) [`a714f89`](https://github.com/tech4humans-brasil/framework/commit/a714f89f7051b82ad39daadf0adc0860e2d654c4) Thanks [@gusteycamargo](https://github.com/gusteycamargo)! - Turn Ref and Ref Collection serializable
8
+
3
9
  ## 0.8.0
4
10
 
5
11
  ### Minor Changes
@@ -1 +1 @@
1
- {"version":3,"file":"Entity.d.ts","sourceRoot":"","sources":["../../src/decorators/Entity.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,wBAAgB,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,cAAc,CAM7D"}
1
+ {"version":3,"file":"Entity.d.ts","sourceRoot":"","sources":["../../src/decorators/Entity.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,wBAAgB,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,cAAc,CAQ7D"}
@@ -1,8 +1,9 @@
1
- import { getEntityMetadata } from './metadata.js';
1
+ import { getEntityMetadata, registerEntity } from './metadata.js';
2
2
  export function Entity(options) {
3
3
  return target => {
4
4
  const metadata = getEntityMetadata(target);
5
5
  metadata.tableName = options?.tableName;
6
+ registerEntity(target);
6
7
  };
7
8
  }
8
9
  //# sourceMappingURL=Entity.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Entity.js","sourceRoot":"","sources":["../../src/decorators/Entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAMjD,MAAM,UAAU,MAAM,CAAC,OAAsB;IAC3C,OAAO,MAAM,CAAC,EAAE;QACd,MAAM,QAAQ,GAAG,iBAAiB,CAAC,MAAkC,CAAC,CAAA;QAEtE,QAAQ,CAAC,SAAS,GAAG,OAAO,EAAE,SAAS,CAAA;IACzC,CAAC,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"Entity.js","sourceRoot":"","sources":["../../src/decorators/Entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAMjE,MAAM,UAAU,MAAM,CAAC,OAAsB;IAC3C,OAAO,MAAM,CAAC,EAAE;QACd,MAAM,QAAQ,GAAG,iBAAiB,CAAC,MAAkC,CAAC,CAAA;QAEtE,QAAQ,CAAC,SAAS,GAAG,OAAO,EAAE,SAAS,CAAA;QAEvC,cAAc,CAAC,MAAkC,CAAC,CAAA;IACpD,CAAC,CAAA;AACH,CAAC"}
@@ -15,4 +15,6 @@ export interface PropertyMetadata {
15
15
  export declare function getEntityMetadata(target: new (...args: any[]) => any): EntityMetadata;
16
16
  export declare function getEntityTableName(target: new (...args: any[]) => any): string;
17
17
  export declare function getEntityProperties(target: new (...args: any[]) => any): Map<string, PropertyMetadata>;
18
+ export declare function registerEntity(target: new (...args: any[]) => any): void;
19
+ export declare function getEntityByTableName(tableName: string): new (...args: any[]) => any;
18
20
  //# sourceMappingURL=metadata.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/decorators/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAEvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE/C,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;IACzC,OAAO,EAAE,KAAK,CAAC,aAAa,CAAC,CAAA;CAC9B;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,OAAO,CAAC,EAAE,YAAY,CAAA;IACtB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAID,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,GAClC,cAAc,CAShB;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,GAClC,MAAM,CAIR;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,GAClC,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAE/B"}
1
+ {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/decorators/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAEvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE/C,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;IACzC,OAAO,EAAE,KAAK,CAAC,aAAa,CAAC,CAAA;CAC9B;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,OAAO,CAAC,EAAE,YAAY,CAAA;IACtB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAMD,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,GAClC,cAAc,CAShB;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,GAClC,MAAM,CAIR;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,GAClC,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAE/B;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,GAAG,IAAI,CAExE;AAED,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,GAChB,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAS7B"}
@@ -1,4 +1,5 @@
1
1
  const entityMetadataMap = new WeakMap();
2
+ const entityRegistry = new Map();
2
3
  export function getEntityMetadata(target) {
3
4
  let metadata = entityMetadataMap.get(target.prototype);
4
5
  if (!metadata) {
@@ -14,4 +15,13 @@ export function getEntityTableName(target) {
14
15
  export function getEntityProperties(target) {
15
16
  return getEntityMetadata(target).properties;
16
17
  }
18
+ export function registerEntity(target) {
19
+ entityRegistry.set(getEntityTableName(target), target);
20
+ }
21
+ export function getEntityByTableName(tableName) {
22
+ const entity = entityRegistry.get(tableName);
23
+ if (!entity)
24
+ throw new Error(`Could not find an entity for table "${tableName}": is it decorated with @Entity?`);
25
+ return entity;
26
+ }
17
27
  //# sourceMappingURL=metadata.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/decorators/metadata.ts"],"names":[],"mappings":"AAkBA,MAAM,iBAAiB,GAAG,IAAI,OAAO,EAA0B,CAAA;AAE/D,MAAM,UAAU,iBAAiB,CAC/B,MAAmC;IAEnC,IAAI,QAAQ,GAAG,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;IAEtD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,QAAQ,GAAG,EAAE,UAAU,EAAE,IAAI,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAA;QACjD,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;IACnD,CAAC;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,MAAmC;IAEnC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAA;IAE1C,OAAO,QAAQ,CAAC,SAAS,IAAI,MAAM,CAAC,IAAI,CAAA;AAC1C,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,MAAmC;IAEnC,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC,UAAU,CAAA;AAC7C,CAAC"}
1
+ {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/decorators/metadata.ts"],"names":[],"mappings":"AAkBA,MAAM,iBAAiB,GAAG,IAAI,OAAO,EAA0B,CAAA;AAE/D,MAAM,cAAc,GAAG,IAAI,GAAG,EAAuC,CAAA;AAErE,MAAM,UAAU,iBAAiB,CAC/B,MAAmC;IAEnC,IAAI,QAAQ,GAAG,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;IAEtD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,QAAQ,GAAG,EAAE,UAAU,EAAE,IAAI,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAA;QACjD,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;IACnD,CAAC;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,MAAmC;IAEnC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAA;IAE1C,OAAO,QAAQ,CAAC,SAAS,IAAI,MAAM,CAAC,IAAI,CAAA;AAC1C,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,MAAmC;IAEnC,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC,UAAU,CAAA;AAC7C,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAmC;IAChE,cAAc,CAAC,GAAG,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAA;AACxD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,SAAiB;IAEjB,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;IAE5C,IAAI,CAAC,MAAM;QACT,MAAM,IAAI,KAAK,CACb,uCAAuC,SAAS,kCAAkC,CACnF,CAAA;IAEH,OAAO,MAAM,CAAA;AACf,CAAC"}
@@ -1,6 +1,7 @@
1
+ import { SerializableClass, type Deserializer, type PromiseLikeType, type Serializer } from '@t4h.framework/core';
1
2
  import type { ORM } from './ORM.js';
2
3
  import type { EntityConstructor, EntityPartialData, SerializableRowRef } from '../typings/ORM.js';
3
- export declare class Ref<T> {
4
+ export declare class Ref<T> extends SerializableClass {
4
5
  private readonly orm;
5
6
  private readonly entity;
6
7
  private readonly ref;
@@ -8,5 +9,11 @@ export declare class Ref<T> {
8
9
  getSnapshot(): Promise<T | null>;
9
10
  update(data: EntityPartialData<T>): Promise<void>;
10
11
  remove(): Promise<void>;
12
+ toSerializable(serializer: Serializer): Promise<{
13
+ orm: import("@t4h.framework/core").Serializable;
14
+ table: string;
15
+ ref: import("@t4h.framework/core").Serializable;
16
+ }>;
17
+ protected fromSerializable(serializable: PromiseLikeType<ReturnType<this['toSerializable']>>, deserializer: Deserializer): Promise<void>;
11
18
  }
12
19
  //# sourceMappingURL=Ref.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Ref.d.ts","sourceRoot":"","sources":["../../src/models/Ref.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAUnC,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAEnB,MAAM,mBAAmB,CAAA;AAM1B,qBAAa,GAAG,CAAC,CAAC;IAEd,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAFH,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAC5B,GAAG,EAAE,kBAAkB;IAG7B,WAAW,IAAI,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAgBhC,MAAM,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBjD,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;CAOrC"}
1
+ {"version":3,"file":"Ref.d.ts","sourceRoot":"","sources":["../../src/models/Ref.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,iBAAiB,EACjB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,UAAU,EAChB,MAAM,qBAAqB,CAAA;AAE5B,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAWnC,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAEnB,MAAM,mBAAmB,CAAA;AAM1B,qBAAa,GAAG,CAAC,CAAC,CAAE,SAAQ,iBAAiB;IAEzC,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAFH,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAC5B,GAAG,EAAE,kBAAkB;IAK7B,WAAW,IAAI,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAgBhC,MAAM,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBjD,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAQvB,cAAc,CAAC,UAAU,EAAE,UAAU;;;;;cAQlC,gBAAgB,CAC9B,YAAY,EAAE,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,EACjE,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC,IAAI,CAAC;CAOjB"}
@@ -1,18 +1,19 @@
1
- import { History } from '@t4h.framework/core';
1
+ import { History, SerializableClass, } from '@t4h.framework/core';
2
2
  import { ORMGetSnapshotActivity } from '../activities/ORMGetSnapshotActivity.js';
3
3
  import { ORMRemoveActivity } from '../activities/ORMRemoveActivity.js';
4
4
  import { ORMUpdateActivity } from '../activities/ORMUpdateActivity.js';
5
5
  import { applyDefaultProperties } from '../constraints/apply-default-properties.js';
6
6
  import { assertConstraints } from '../constraints/assert-constraints.js';
7
- import { getEntityMetadata, getEntityTableName, } from '../decorators/metadata.js';
7
+ import { getEntityByTableName, getEntityMetadata, getEntityTableName, } from '../decorators/metadata.js';
8
8
  const getSnapshotOp = History.bind(ORMGetSnapshotActivity);
9
9
  const update = History.bind(ORMUpdateActivity);
10
10
  const remove = History.bind(ORMRemoveActivity);
11
- export class Ref {
11
+ export class Ref extends SerializableClass {
12
12
  orm;
13
13
  entity;
14
14
  ref;
15
15
  constructor(orm, entity, ref) {
16
+ super();
16
17
  this.orm = orm;
17
18
  this.entity = entity;
18
19
  this.ref = ref;
@@ -49,5 +50,19 @@ export class Ref {
49
50
  ref: this.ref,
50
51
  });
51
52
  }
53
+ async toSerializable(serializer) {
54
+ return {
55
+ orm: await serializer(this.orm),
56
+ table: getEntityTableName(this.entity),
57
+ ref: await serializer(this.ref),
58
+ };
59
+ }
60
+ async fromSerializable(serializable, deserializer) {
61
+ Object.assign(this, {
62
+ orm: await deserializer(serializable.orm),
63
+ entity: getEntityByTableName(serializable.table),
64
+ ref: await deserializer(serializable.ref),
65
+ });
66
+ }
52
67
  }
53
68
  //# sourceMappingURL=Ref.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Ref.js","sourceRoot":"","sources":["../../src/models/Ref.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAG7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAA;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAA;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAA;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAA;AACnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAA;AACxE,OAAO,EACL,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,2BAA2B,CAAA;AAQlC,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAA;AAC1D,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;AAC9C,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;AAE9C,MAAM,OAAO,GAAG;IAEK;IACA;IACA;IAHnB,YACmB,GAAQ,EACR,MAA4B,EAC5B,GAAuB;QAFvB,QAAG,GAAH,GAAG,CAAK;QACR,WAAM,GAAN,MAAM,CAAsB;QAC5B,QAAG,GAAH,GAAG,CAAoB;IACvC,CAAC;IAEG,KAAK,CAAC,WAAW;QACtB,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC;YACjC,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,KAAK,EAAE,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC;YACtC,GAAG,EAAE,IAAI,CAAC,GAAG;SACd,CAAC,CAAA;QAEF,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO,IAAI,CAAA;QAEhC,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAW,CAAA;QAE3D,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAE7B,OAAO,MAAW,CAAA;IACpB,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,IAA0B;QAC5C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAE9B,MAAM,GAAG,GAAG,sBAAsB,CAChC,IAAqB,EACrB,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,EAC9B,IAAI,CACY,CAAA;QAElB,MAAM,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE;YAC1C,IAAI;SACL,CAAC,CAAA;QAEF,MAAM,MAAM,CAAC;YACX,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,KAAK,EAAE,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC;YACtC,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,IAAI,EAAE,GAAG;SACV,CAAC,CAAA;IACJ,CAAC;IAEM,KAAK,CAAC,MAAM;QACjB,MAAM,MAAM,CAAC;YACX,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,KAAK,EAAE,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC;YACtC,GAAG,EAAE,IAAI,CAAC,GAAG;SACd,CAAC,CAAA;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"Ref.js","sourceRoot":"","sources":["../../src/models/Ref.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,13 @@
1
+ import { SerializableClass, type Deserializer, type PromiseLikeType, type Serializer } from '@t4h.framework/core';
1
2
  import type { ORM } from './ORM.js';
2
3
  import { Ref } from './Ref.js';
3
4
  import type { EntityConstructor, SerializableRowRef } from '../typings/ORM.js';
4
- export declare class RefCollection<T> {
5
+ export declare class RefCollection<T> extends SerializableClass {
5
6
  private readonly refs;
7
+ toSerializable(serializer: Serializer): Promise<{
8
+ refs: import("@t4h.framework/core").Serializable[];
9
+ }>;
10
+ protected fromSerializable(serializable: PromiseLikeType<ReturnType<this['toSerializable']>>, deserializer: Deserializer): Promise<void>;
6
11
  constructor(orm: ORM, entity: EntityConstructor<T>, refs: SerializableRowRef[]);
7
12
  toArray(): Ref<T>[];
8
13
  get length(): number;
@@ -1 +1 @@
1
- {"version":3,"file":"RefCollection.d.ts","sourceRoot":"","sources":["../../src/models/RefCollection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AACnC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAC9B,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAE9E,qBAAa,aAAa,CAAC,CAAC;IAC1B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAU;gBAG7B,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAC5B,IAAI,EAAE,kBAAkB,EAAE;IAKrB,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE;IAI1B,IAAW,MAAM,IAAI,MAAM,CAE1B;IAEM,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS;IAI/B,GAAG,CAAC,CAAC,EAChB,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GACjD,OAAO,CAAC,CAAC,EAAE,CAAC;IAIF,OAAO,CAClB,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GACvD,OAAO,CAAC,IAAI,CAAC;IAIH,MAAM,CACjB,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GAC7D,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAIb,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAG7C"}
1
+ {"version":3,"file":"RefCollection.d.ts","sourceRoot":"","sources":["../../src/models/RefCollection.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,UAAU,EAChB,MAAM,qBAAqB,CAAA;AAE5B,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AACnC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAC9B,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAE9E,qBAAa,aAAa,CAAC,CAAC,CAAE,SAAQ,iBAAiB;IACrD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAW;IAEnB,cAAc,CAAC,UAAU,EAAE,UAAU;;;cAMlC,gBAAgB,CAC9B,YAAY,EAAE,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,EACjE,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC,IAAI,CAAC;gBAOd,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAC5B,IAAI,EAAE,kBAAkB,EAAE;IASrB,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE;IAI1B,IAAW,MAAM,IAAI,MAAM,CAE1B;IAEM,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS;IAI/B,GAAG,CAAC,CAAC,EAChB,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GACjD,OAAO,CAAC,CAAC,EAAE,CAAC;IAIF,OAAO,CAClB,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GACvD,OAAO,CAAC,IAAI,CAAC;IAIH,MAAM,CACjB,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GAC7D,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAIb,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAG7C"}
@@ -1,7 +1,21 @@
1
+ import { SerializableClass, } from '@t4h.framework/core';
1
2
  import { Ref } from './Ref.js';
2
- export class RefCollection {
3
+ export class RefCollection extends SerializableClass {
3
4
  refs;
5
+ async toSerializable(serializer) {
6
+ return {
7
+ refs: await Promise.all(this.refs.map(ref => serializer(ref))),
8
+ };
9
+ }
10
+ async fromSerializable(serializable, deserializer) {
11
+ Object.assign(this, {
12
+ refs: await Promise.all(serializable.refs.map(ref => deserializer(ref))),
13
+ });
14
+ }
4
15
  constructor(orm, entity, refs) {
16
+ super();
17
+ if (!refs)
18
+ return;
5
19
  this.refs = refs.map(ref => new Ref(orm, entity, ref));
6
20
  }
7
21
  toArray() {
@@ -1 +1 @@
1
- {"version":3,"file":"RefCollection.js","sourceRoot":"","sources":["../../src/models/RefCollection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAG9B,MAAM,OAAO,aAAa;IACP,IAAI,CAAU;IAE/B,YACE,GAAQ,EACR,MAA4B,EAC5B,IAA0B;QAE1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAA;IACxD,CAAC;IAEM,OAAO;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAA;IAC1B,CAAC;IAED,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAA;IACzB,CAAC;IAEM,EAAE,CAAC,KAAa;QACrB,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACzB,CAAC;IAEM,KAAK,CAAC,GAAG,CACd,EAAkD;QAElD,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;IACvC,CAAC;IAEM,KAAK,CAAC,OAAO,CAClB,EAAwD;QAExD,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;IACtC,CAAC;IAEM,KAAK,CAAC,MAAM,CACjB,EAA8D;QAE9D,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;IAC1C,CAAC;IAEM,CAAC,MAAM,CAAC,QAAQ,CAAC;QACtB,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAA;IACrC,CAAC;CACF"}
1
+ {"version":3,"file":"RefCollection.js","sourceRoot":"","sources":["../../src/models/RefCollection.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,GAIlB,MAAM,qBAAqB,CAAA;AAG5B,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAG9B,MAAM,OAAO,aAAiB,SAAQ,iBAAiB;IACpC,IAAI,CAAW;IAEzB,KAAK,CAAC,cAAc,CAAC,UAAsB;QAChD,OAAO;YACL,IAAI,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;SAC/D,CAAA;IACH,CAAC;IAES,KAAK,CAAC,gBAAgB,CAC9B,YAAiE,EACjE,YAA0B;QAE1B,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;YAClB,IAAI,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;SACzE,CAAC,CAAA;IACJ,CAAC;IAED,YACE,GAAQ,EACR,MAA4B,EAC5B,IAA0B;QAE1B,KAAK,EAAE,CAAA;QAEP,IAAI,CAAC,IAAI;YAAE,OAAM;QAEjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAA;IACxD,CAAC;IAEM,OAAO;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAA;IAC1B,CAAC;IAED,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAA;IACzB,CAAC;IAEM,EAAE,CAAC,KAAa;QACrB,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACzB,CAAC;IAEM,KAAK,CAAC,GAAG,CACd,EAAkD;QAElD,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;IACvC,CAAC;IAEM,KAAK,CAAC,OAAO,CAClB,EAAwD;QAExD,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;IACtC,CAAC;IAEM,KAAK,CAAC,MAAM,CACjB,EAA8D;QAE9D,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;IAC1C,CAAC;IAEM,CAAC,MAAM,CAAC,QAAQ,CAAC;QACtB,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAA;IACrC,CAAC;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@t4h.framework/orm",
3
- "version": "0.8.0",
3
+ "version": "0.9.0",
4
4
  "description": "ORM module for the T4H Framework",
5
5
  "homepage": "https://github.com/tech4humans-brasil/framework/tree/main/packages/orm",
6
6
  "bugs": "https://github.com/tech4humans-brasil/framework/issues",
@@ -35,12 +35,12 @@
35
35
  "reflect-metadata": "^0.2.2"
36
36
  },
37
37
  "devDependencies": {
38
- "@t4h.framework/core": "^0.15.0",
38
+ "@t4h.framework/core": "^0.16.0",
39
39
  "typescript": "^5.9.3",
40
40
  "vitest": "^4.0.18"
41
41
  },
42
42
  "peerDependencies": {
43
- "@t4h.framework/core": "^0.15.0"
43
+ "@t4h.framework/core": ">=0.15.0 <1.0.0"
44
44
  },
45
45
  "packageManager": "yarn@4.12.0",
46
46
  "engines": {