@t4h.framework/orm 0.10.2 → 0.11.1

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.
Files changed (83) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/README.md +37 -2
  3. package/dist/activities/ORMLoadActivity.d.ts +16 -0
  4. package/dist/activities/ORMLoadActivity.d.ts.map +1 -0
  5. package/dist/activities/ORMLoadActivity.js +90 -0
  6. package/dist/activities/ORMLoadActivity.js.map +1 -0
  7. package/dist/activities/ORMLoadRelationActivity.d.ts +13 -0
  8. package/dist/activities/ORMLoadRelationActivity.d.ts.map +1 -0
  9. package/dist/activities/ORMLoadRelationActivity.js +23 -0
  10. package/dist/activities/ORMLoadRelationActivity.js.map +1 -0
  11. package/dist/claims/ORMClaim.d.ts +7 -1
  12. package/dist/claims/ORMClaim.d.ts.map +1 -1
  13. package/dist/claims/ORMClaim.js +5 -0
  14. package/dist/claims/ORMClaim.js.map +1 -1
  15. package/dist/decorators/ManyToOne.d.ts +6 -0
  16. package/dist/decorators/ManyToOne.d.ts.map +1 -0
  17. package/dist/decorators/ManyToOne.js +15 -0
  18. package/dist/decorators/ManyToOne.js.map +1 -0
  19. package/dist/decorators/OneToMany.d.ts +9 -0
  20. package/dist/decorators/OneToMany.d.ts.map +1 -0
  21. package/dist/decorators/OneToMany.js +18 -0
  22. package/dist/decorators/OneToMany.js.map +1 -0
  23. package/dist/decorators/metadata.d.ts +17 -0
  24. package/dist/decorators/metadata.d.ts.map +1 -1
  25. package/dist/decorators/metadata.js +11 -1
  26. package/dist/decorators/metadata.js.map +1 -1
  27. package/dist/helpers/Insert.d.ts +22 -0
  28. package/dist/helpers/Insert.d.ts.map +1 -0
  29. package/dist/helpers/Insert.js +73 -0
  30. package/dist/helpers/Insert.js.map +1 -0
  31. package/dist/helpers/Populate.d.ts +13 -0
  32. package/dist/helpers/Populate.d.ts.map +1 -0
  33. package/dist/helpers/Populate.js +31 -0
  34. package/dist/helpers/Populate.js.map +1 -0
  35. package/dist/helpers/Serialize.d.ts +11 -0
  36. package/dist/helpers/Serialize.d.ts.map +1 -0
  37. package/dist/helpers/Serialize.js +60 -0
  38. package/dist/helpers/Serialize.js.map +1 -0
  39. package/dist/helpers/hydrateEntity.d.ts +4 -0
  40. package/dist/helpers/hydrateEntity.d.ts.map +1 -0
  41. package/dist/helpers/hydrateEntity.js +30 -0
  42. package/dist/helpers/hydrateEntity.js.map +1 -0
  43. package/dist/helpers/isPlainObject.d.ts +2 -0
  44. package/dist/helpers/isPlainObject.d.ts.map +1 -0
  45. package/dist/helpers/isPlainObject.js +7 -0
  46. package/dist/helpers/isPlainObject.js.map +1 -0
  47. package/dist/helpers/refs.d.ts +5 -0
  48. package/dist/helpers/refs.d.ts.map +1 -0
  49. package/dist/helpers/refs.js +3 -0
  50. package/dist/helpers/refs.js.map +1 -0
  51. package/dist/helpers/toRefKey.d.ts +3 -0
  52. package/dist/helpers/toRefKey.d.ts.map +1 -0
  53. package/dist/helpers/toRefKey.js +4 -0
  54. package/dist/helpers/toRefKey.js.map +1 -0
  55. package/dist/models/MapCollection.d.ts +46 -0
  56. package/dist/models/MapCollection.d.ts.map +1 -0
  57. package/dist/models/MapCollection.js +126 -0
  58. package/dist/models/MapCollection.js.map +1 -0
  59. package/dist/models/ORM.d.ts +16 -3
  60. package/dist/models/ORM.d.ts.map +1 -1
  61. package/dist/models/ORM.js +43 -13
  62. package/dist/models/ORM.js.map +1 -1
  63. package/dist/models/Ref.d.ts +8 -1
  64. package/dist/models/Ref.d.ts.map +1 -1
  65. package/dist/models/Ref.js +17 -14
  66. package/dist/models/Ref.js.map +1 -1
  67. package/dist/models/RefCollection.d.ts +10 -1
  68. package/dist/models/RefCollection.d.ts.map +1 -1
  69. package/dist/models/RefCollection.js +62 -2
  70. package/dist/models/RefCollection.js.map +1 -1
  71. package/dist/orm.d.ts +6 -0
  72. package/dist/orm.d.ts.map +1 -1
  73. package/dist/orm.js +6 -0
  74. package/dist/orm.js.map +1 -1
  75. package/dist/typings/FindWhere.d.ts +2 -1
  76. package/dist/typings/FindWhere.d.ts.map +1 -1
  77. package/dist/typings/ORM.d.ts +42 -4
  78. package/dist/typings/ORM.d.ts.map +1 -1
  79. package/dist/typings/Relations.d.ts +27 -0
  80. package/dist/typings/Relations.d.ts.map +1 -0
  81. package/dist/typings/Relations.js +2 -0
  82. package/dist/typings/Relations.js.map +1 -0
  83. package/package.json +1 -1
@@ -1,11 +1,12 @@
1
1
  import { History, SerializableClass, } from '@t4h.framework/core';
2
- import { ORMGetSnapshotActivity } from '../activities/ORMGetSnapshotActivity.js';
2
+ import { MapCollection } from './MapCollection.js';
3
+ import { RefCollection } from './RefCollection.js';
3
4
  import { ORMRemoveActivity } from '../activities/ORMRemoveActivity.js';
4
5
  import { ORMUpdateActivity } from '../activities/ORMUpdateActivity.js';
5
6
  import { applyDefaultProperties } from '../constraints/apply-default-properties.js';
6
7
  import { assertConstraints } from '../constraints/assert-constraints.js';
7
8
  import { getEntityByTableName, getEntityMetadata, getEntityTableName, } from '../decorators/metadata.js';
8
- const getSnapshotOp = History.bind(ORMGetSnapshotActivity);
9
+ import { Serialize } from '../helpers/Serialize.js';
9
10
  const update = History.bind(ORMUpdateActivity);
10
11
  const remove = History.bind(ORMRemoveActivity);
11
12
  export class Ref extends SerializableClass {
@@ -18,17 +19,17 @@ export class Ref extends SerializableClass {
18
19
  this.entity = entity;
19
20
  this.ref = ref;
20
21
  }
21
- async getSnapshot() {
22
- const result = await getSnapshotOp({
23
- orm: this.orm,
24
- table: getEntityTableName(this.entity),
25
- ref: this.ref,
26
- });
27
- if (result === null)
28
- return null;
29
- const entity = Reflect.construct(this.entity, []);
30
- Object.assign(entity, result);
31
- return entity;
22
+ async getSnapshot(options) {
23
+ // TypeScript cannot match two instances of the recursive Populate<T>
24
+ const [snapshot] = await this.toCollection().getSnapshots(options);
25
+ return (snapshot ?? null);
26
+ }
27
+ async load(relation) {
28
+ const related = await this.toCollection().load(relation);
29
+ return (related instanceof MapCollection ? related : (related.at(0) ?? null));
30
+ }
31
+ toCollection() {
32
+ return new RefCollection(this.orm, this.entity, [this.ref]);
32
33
  }
33
34
  async update(data) {
34
35
  const keys = Object.keys(data);
@@ -36,11 +37,13 @@ export class Ref extends SerializableClass {
36
37
  await assertConstraints(this.entity, [row], {
37
38
  keys,
38
39
  });
40
+ Serialize.assertRelations(this.entity, [row], { keys });
41
+ const [serialized] = Serialize.relations(this.entity, [row]);
39
42
  await update({
40
43
  orm: this.orm,
41
44
  table: getEntityTableName(this.entity),
42
45
  ref: this.ref,
43
- data: row,
46
+ data: serialized,
44
47
  });
45
48
  }
46
49
  async remove() {
@@ -1 +1 @@
1
- {"version":3,"file":"Ref.js","sourceRoot":"","sources":["../../src/models/Ref.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Ref.js","sourceRoot":"","sources":["../../src/models/Ref.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,23 @@
1
1
  import { SerializableClass, type Deserializer, type PromiseLikeType, type Serializer } from '@t4h.framework/core';
2
2
  import type { ORM } from './ORM.js';
3
- import { Ref } from './Ref.js';
3
+ import { Ref, type GetSnapshotOptions } from './Ref.js';
4
+ import { Populate } from '../helpers/Populate.js';
4
5
  import type { EntityConstructor, SerializableRowRef } from '../typings/ORM.js';
6
+ import type { Populated, RelationCollection, RelationKey } from '../typings/Relations.js';
5
7
  export declare class RefCollection<T> extends SerializableClass {
8
+ private readonly orm;
9
+ private readonly entity;
6
10
  private readonly refs;
7
11
  toSerializable(serializer: Serializer): Promise<{
12
+ orm: import("@t4h.framework/core").Serializable;
13
+ table: string;
8
14
  refs: import("@t4h.framework/core").Serializable[];
9
15
  }>;
10
16
  protected fromSerializable(serializable: PromiseLikeType<ReturnType<this['toSerializable']>>, deserializer: Deserializer): Promise<void>;
11
17
  constructor(orm: ORM, entity: EntityConstructor<T>, refs: SerializableRowRef[]);
18
+ private get rowRefs();
19
+ getSnapshots<P extends Populate<T> = never>(options?: GetSnapshotOptions<P>): Promise<(Populated<T, P> | null)[]>;
20
+ load<K extends RelationKey<T>>(relation: K): Promise<RelationCollection<T, K>>;
12
21
  toArray(): Ref<T>[];
13
22
  get length(): number;
14
23
  at(index: number): Ref<T> | undefined;
@@ -1 +1 @@
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
+ {"version":3,"file":"RefCollection.d.ts","sourceRoot":"","sources":["../../src/models/RefCollection.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,iBAAiB,EACjB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,UAAU,EAChB,MAAM,qBAAqB,CAAA;AAG5B,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AACnC,OAAO,EAAE,GAAG,EAAE,KAAK,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAUvD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAGjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAC9E,OAAO,KAAK,EACV,SAAS,EACT,kBAAkB,EAClB,WAAW,EACZ,MAAM,yBAAyB,CAAA;AAKhC,qBAAa,aAAa,CAAC,CAAC,CAAE,SAAQ,iBAAiB;IACrD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAM;IAE1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuB;IAE9C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAW;IAEnB,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;gBASd,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAC5B,IAAI,EAAE,kBAAkB,EAAE;IAa5B,OAAO,KAAK,OAAO,GAElB;IAEY,YAAY,CAAC,CAAC,SAAS,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,EACrD,OAAO,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAC9B,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;IAoBzB,IAAI,CAAC,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EACxC,QAAQ,EAAE,CAAC,GACV,OAAO,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAmC7B,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,14 +1,30 @@
1
- import { SerializableClass, } from '@t4h.framework/core';
1
+ import { History, SerializableClass, } from '@t4h.framework/core';
2
+ import { MapCollection } from './MapCollection.js';
2
3
  import { Ref } from './Ref.js';
4
+ import { ORMLoadActivity } from '../activities/ORMLoadActivity.js';
5
+ import { ORMLoadRelationActivity } from '../activities/ORMLoadRelationActivity.js';
6
+ import { getEntityByTableName, getEntityRelations, getEntityTableName, getInverseRelation, } from '../decorators/metadata.js';
7
+ import { hydrateEntity } from '../helpers/hydrateEntity.js';
8
+ import { Populate } from '../helpers/Populate.js';
9
+ import { rowRefOf } from '../helpers/refs.js';
10
+ import { toRefKey } from '../helpers/toRefKey.js';
11
+ const load = History.bind(ORMLoadActivity);
12
+ const loadRelation = History.bind(ORMLoadRelationActivity);
3
13
  export class RefCollection extends SerializableClass {
14
+ orm;
15
+ entity;
4
16
  refs;
5
17
  async toSerializable(serializer) {
6
18
  return {
19
+ orm: await serializer(this.orm),
20
+ table: getEntityTableName(this.entity),
7
21
  refs: await Promise.all(this.refs.map(ref => serializer(ref))),
8
22
  };
9
23
  }
10
24
  async fromSerializable(serializable, deserializer) {
11
25
  Object.assign(this, {
26
+ orm: await deserializer(serializable.orm),
27
+ entity: getEntityByTableName(serializable.table),
12
28
  refs: await Promise.all(serializable.refs.map(ref => deserializer(ref))),
13
29
  });
14
30
  }
@@ -16,7 +32,51 @@ export class RefCollection extends SerializableClass {
16
32
  super();
17
33
  if (!refs)
18
34
  return;
19
- this.refs = refs.map(ref => new Ref(orm, entity, ref));
35
+ Object.assign(this, {
36
+ orm,
37
+ entity,
38
+ refs: refs.map(ref => new Ref(orm, entity, ref)),
39
+ });
40
+ }
41
+ get rowRefs() {
42
+ return this.refs.map(rowRefOf);
43
+ }
44
+ async getSnapshots(options) {
45
+ if (!this.refs.length)
46
+ return [];
47
+ const populate = options?.populate ?? [];
48
+ Populate.assert(this.entity, populate);
49
+ const rows = await load({
50
+ orm: this.orm,
51
+ table: getEntityTableName(this.entity),
52
+ refs: this.rowRefs,
53
+ populate,
54
+ });
55
+ return rows.map(row => row && hydrateEntity(this.orm, this.entity, row));
56
+ }
57
+ async load(relation) {
58
+ const metadata = getEntityRelations(this.entity).get(relation);
59
+ if (!metadata)
60
+ throw new Error(`Cannot load "${relation}": "${this.entity.name}" has no relation "${relation}"`);
61
+ const target = metadata.entity();
62
+ if (metadata.kind === 'one-to-many')
63
+ return new MapCollection(this.orm, target, {
64
+ mappedBy: getInverseRelation(this.entity, metadata).name,
65
+ refs: this.rowRefs,
66
+ orderBy: metadata.orderBy,
67
+ });
68
+ const related = this.refs.length
69
+ ? await loadRelation({
70
+ orm: this.orm,
71
+ table: getEntityTableName(this.entity),
72
+ refs: this.rowRefs,
73
+ relation,
74
+ })
75
+ : [];
76
+ const unique = new Map(related.filter(ref => ref !== null).map(ref => [toRefKey(ref), ref]));
77
+ return new RefCollection(this.orm, target, [
78
+ ...unique.values(),
79
+ ]);
20
80
  }
21
81
  toArray() {
22
82
  return this.refs.slice();
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"RefCollection.js","sourceRoot":"","sources":["../../src/models/RefCollection.ts"],"names":[],"mappings":"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"}
package/dist/orm.d.ts CHANGED
@@ -2,8 +2,11 @@ export * from './claims/ORMClaim.js';
2
2
  export * from './errors/ConstraintError.js';
3
3
  export * from './decorators/Entity.js';
4
4
  export * from './decorators/Index.js';
5
+ export * from './decorators/ManyToOne.js';
6
+ export * from './decorators/OneToMany.js';
5
7
  export * from './decorators/Property.js';
6
8
  export * from './decorators/metadata.js';
9
+ export * from './models/MapCollection.js';
7
10
  export * from './models/ORM.js';
8
11
  export * from './models/Ref.js';
9
12
  export * from './models/RefCollection.js';
@@ -13,7 +16,10 @@ export * from './activities/ORMRemoveActivity.js';
13
16
  export * from './activities/ORMDeleteActivity.js';
14
17
  export * from './activities/ORMFindActivity.js';
15
18
  export * from './activities/ORMGetSnapshotActivity.js';
19
+ export * from './activities/ORMLoadActivity.js';
20
+ export * from './activities/ORMLoadRelationActivity.js';
16
21
  export * from './activities/ORMUpdateActivity.js';
17
22
  export * from './activities/ORMUpsertActivity.js';
18
23
  export * from './typings/ORM.js';
24
+ export * from './typings/Relations.js';
19
25
  //# sourceMappingURL=orm.d.ts.map
package/dist/orm.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"orm.d.ts","sourceRoot":"","sources":["../src/orm.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAA;AAEpC,cAAc,6BAA6B,CAAA;AAE3C,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA;AACrC,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AAExC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,2BAA2B,CAAA;AAEzC,cAAc,mCAAmC,CAAA;AACjD,cAAc,oCAAoC,CAAA;AAClD,cAAc,mCAAmC,CAAA;AACjD,cAAc,mCAAmC,CAAA;AACjD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,wCAAwC,CAAA;AACtD,cAAc,mCAAmC,CAAA;AACjD,cAAc,mCAAmC,CAAA;AAEjD,cAAc,kBAAkB,CAAA"}
1
+ {"version":3,"file":"orm.d.ts","sourceRoot":"","sources":["../src/orm.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAA;AAEpC,cAAc,6BAA6B,CAAA;AAE3C,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA;AACrC,cAAc,2BAA2B,CAAA;AACzC,cAAc,2BAA2B,CAAA;AACzC,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AAExC,cAAc,2BAA2B,CAAA;AACzC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,2BAA2B,CAAA;AAEzC,cAAc,mCAAmC,CAAA;AACjD,cAAc,oCAAoC,CAAA;AAClD,cAAc,mCAAmC,CAAA;AACjD,cAAc,mCAAmC,CAAA;AACjD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,wCAAwC,CAAA;AACtD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,yCAAyC,CAAA;AACvD,cAAc,mCAAmC,CAAA;AACjD,cAAc,mCAAmC,CAAA;AAEjD,cAAc,kBAAkB,CAAA;AAChC,cAAc,wBAAwB,CAAA"}
package/dist/orm.js CHANGED
@@ -2,8 +2,11 @@ export * from './claims/ORMClaim.js';
2
2
  export * from './errors/ConstraintError.js';
3
3
  export * from './decorators/Entity.js';
4
4
  export * from './decorators/Index.js';
5
+ export * from './decorators/ManyToOne.js';
6
+ export * from './decorators/OneToMany.js';
5
7
  export * from './decorators/Property.js';
6
8
  export * from './decorators/metadata.js';
9
+ export * from './models/MapCollection.js';
7
10
  export * from './models/ORM.js';
8
11
  export * from './models/Ref.js';
9
12
  export * from './models/RefCollection.js';
@@ -13,7 +16,10 @@ export * from './activities/ORMRemoveActivity.js';
13
16
  export * from './activities/ORMDeleteActivity.js';
14
17
  export * from './activities/ORMFindActivity.js';
15
18
  export * from './activities/ORMGetSnapshotActivity.js';
19
+ export * from './activities/ORMLoadActivity.js';
20
+ export * from './activities/ORMLoadRelationActivity.js';
16
21
  export * from './activities/ORMUpdateActivity.js';
17
22
  export * from './activities/ORMUpsertActivity.js';
18
23
  export * from './typings/ORM.js';
24
+ export * from './typings/Relations.js';
19
25
  //# sourceMappingURL=orm.js.map
package/dist/orm.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"orm.js","sourceRoot":"","sources":["../src/orm.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAA;AAEpC,cAAc,6BAA6B,CAAA;AAE3C,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA;AACrC,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AAExC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,2BAA2B,CAAA;AAEzC,cAAc,mCAAmC,CAAA;AACjD,cAAc,oCAAoC,CAAA;AAClD,cAAc,mCAAmC,CAAA;AACjD,cAAc,mCAAmC,CAAA;AACjD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,wCAAwC,CAAA;AACtD,cAAc,mCAAmC,CAAA;AACjD,cAAc,mCAAmC,CAAA;AAEjD,cAAc,kBAAkB,CAAA"}
1
+ {"version":3,"file":"orm.js","sourceRoot":"","sources":["../src/orm.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAA;AAEpC,cAAc,6BAA6B,CAAA;AAE3C,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA;AACrC,cAAc,2BAA2B,CAAA;AACzC,cAAc,2BAA2B,CAAA;AACzC,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AAExC,cAAc,2BAA2B,CAAA;AACzC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,2BAA2B,CAAA;AAEzC,cAAc,mCAAmC,CAAA;AACjD,cAAc,oCAAoC,CAAA;AAClD,cAAc,mCAAmC,CAAA;AACjD,cAAc,mCAAmC,CAAA;AACjD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,wCAAwC,CAAA;AACtD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,yCAAyC,CAAA;AACvD,cAAc,mCAAmC,CAAA;AACjD,cAAc,mCAAmC,CAAA;AAEjD,cAAc,kBAAkB,CAAA;AAChC,cAAc,wBAAwB,CAAA"}
@@ -1,3 +1,4 @@
1
+ import type { MapCollection } from '../models/MapCollection.js';
1
2
  export type Scalar = boolean | number | string | bigint | symbol | Date | RegExp | Uint8Array | {
2
3
  toHexString(): string;
3
4
  };
@@ -20,7 +21,7 @@ export type OperatorMap<T> = {
20
21
  export type FilterItemValue<T> = T | ExpandScalar<T>;
21
22
  export type FilterValue<T> = OperatorMap<FilterItemValue<T>> | FilterItemValue<T> | FilterItemValue<T>[] | null;
22
23
  export type ExpandQuery<T> = T extends object ? T extends Scalar ? never : FilterQuery<T> : FilterValue<T>;
23
- export type CleanKeys<T, K extends keyof T, B extends boolean = false> = T[K] & {} extends Function ? never : K extends symbol ? never : B extends true ? T[K] & {} extends Scalar ? never : K : K;
24
+ export type CleanKeys<T, K extends keyof T, B extends boolean = false> = T[K] & {} extends Function ? never : T[K] & {} extends MapCollection<any> ? never : K extends symbol ? never : B extends true ? T[K] & {} extends Scalar ? never : K : K;
24
25
  export type EntityKey<T = unknown, B extends boolean = false> = string & {
25
26
  [K in keyof T]-?: CleanKeys<T, K, B> extends never ? never : K;
26
27
  }[keyof T];
@@ -1 +1 @@
1
- {"version":3,"file":"FindWhere.d.ts","sourceRoot":"","sources":["../../src/typings/FindWhere.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FindWhere.d.ts","sourceRoot":"","sources":["../../src/typings/FindWhere.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,26 @@
1
1
  import type { Serializable } from '@t4h.framework/core';
2
+ import type { ToManyKey, ToOneKey } from './Relations.js';
3
+ import type { MapCollection } from '../models/MapCollection.js';
2
4
  import type { ORM } from '../models/ORM.js';
5
+ import type { Ref } from '../models/Ref.js';
3
6
  export type EntityConstructor<T = any> = new () => T;
4
7
  type Fn = (...args: any[]) => any;
8
+ type Skip = Fn | MapCollection<any>;
5
9
  export type RequiredEntityData<T> = {
6
- [K in keyof T as T[K] extends Fn ? never : T[K] extends null ? never : K]: T[K];
10
+ [K in keyof T as T[K] extends Skip ? never : T[K] extends null ? never : K]: T[K];
7
11
  };
8
12
  export type EntityData<T> = {
9
- [K in keyof T as T[K] extends Fn ? never : K]: T[K];
13
+ [K in keyof T as T[K] extends Skip ? never : K]: T[K];
10
14
  };
11
- export type EntityInsertData<T> = {
12
- [K in keyof T as T[K] extends Fn ? never : K]: T[K];
15
+ export type EntityInsertData<T> = EntityData<T>;
16
+ type CreateValue<T, V> = NonNullable<V> extends MapCollection<infer U> ? EntityCreateData<U, T>[] : NonNullable<V> extends Ref<infer U> ? V | EntityCreateData<U> : V;
17
+ type ParentKey<T, P> = [P] extends [never] ? never : {
18
+ [K in ToOneKey<T>]: NonNullable<T[K]> extends Ref<P> ? K : never;
19
+ }[ToOneKey<T>];
20
+ export type EntityCreateData<T, P = never> = {
21
+ [K in keyof T as T[K] extends Fn ? never : K extends ToManyKey<T> | ParentKey<T, P> ? never : K]: CreateValue<T, T[K]>;
22
+ } & {
23
+ [K in ToManyKey<T> | ParentKey<T, P>]?: CreateValue<T, T[K]>;
13
24
  };
14
25
  export type EntityPartialData<T> = Partial<EntityData<T>>;
15
26
  export type SerializedRow = Record<string, Serializable>;
@@ -33,6 +44,11 @@ export type SerializableGetSnapshotInput<R extends SerializableRowRef> = {
33
44
  table: string;
34
45
  ref: R;
35
46
  };
47
+ export type SerializableGetSnapshotsInput<R extends SerializableRowRef> = {
48
+ orm: ORM;
49
+ table: string;
50
+ refs: R[];
51
+ };
36
52
  export type SerializableUpdateInput<R extends SerializableRowRef> = {
37
53
  orm: ORM;
38
54
  table: string;
@@ -59,5 +75,27 @@ export type SerializableDeleteInput = {
59
75
  table: string;
60
76
  where: SerializableWhere;
61
77
  };
78
+ export type SerializableLoadInput = {
79
+ orm: ORM;
80
+ table: string;
81
+ populate: string[];
82
+ } & ({
83
+ refs: SerializableRowRef[];
84
+ } | {
85
+ where: SerializableWhere;
86
+ orderBy?: Record<string, 'asc' | 'desc'>;
87
+ });
88
+ export type SerializableLoadRelationInput = {
89
+ orm: ORM;
90
+ table: string;
91
+ refs: SerializableRowRef[];
92
+ relation: string;
93
+ };
94
+ export type SerializableLoadedRow = {
95
+ ref: SerializableRowRef;
96
+ data: SerializedRow;
97
+ /** A populated @ManyToOne holds its row (null when missing), a @OneToMany its rows. */
98
+ relations: Record<string, SerializableLoadedRow | SerializableLoadedRow[] | null>;
99
+ };
62
100
  export {};
63
101
  //# sourceMappingURL=ORM.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ORM.d.ts","sourceRoot":"","sources":["../../src/typings/ORM.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ORM.d.ts","sourceRoot":"","sources":["../../src/typings/ORM.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import type { MapCollection } from '../models/MapCollection.js';
2
+ import type { Ref } from '../models/Ref.js';
3
+ import type { RefCollection } from '../models/RefCollection.js';
4
+ export type Related<V> = NonNullable<V> extends Ref<infer U> ? U : NonNullable<V> extends MapCollection<infer U> ? U : never;
5
+ export type ToOneKey<T> = {
6
+ [K in keyof T]-?: NonNullable<T[K]> extends Ref<any> ? K : never;
7
+ }[keyof T];
8
+ export type ToManyKey<T> = {
9
+ [K in keyof T]-?: NonNullable<T[K]> extends MapCollection<any> ? K : never;
10
+ }[keyof T];
11
+ export type RelationKey<T> = string & (ToOneKey<T> | ToManyKey<T>);
12
+ export type RelationRef<T, K extends RelationKey<T>> = NonNullable<T[K]> extends MapCollection<infer U> ? MapCollection<U> : Ref<Related<T[K]>> | null;
13
+ export type RelationCollection<T, K extends RelationKey<T>> = NonNullable<T[K]> extends MapCollection<infer U> ? MapCollection<U> : RefCollection<Related<T[K]>>;
14
+ type Head<P> = P extends `${infer H}.${string}` ? H : P;
15
+ type Tail<P, K> = P extends `${K & string}.${infer R}` ? R : never;
16
+ type PopulatedValue<V, P> = NonNullable<V> extends MapCollection<infer U> ? MapCollection<Populated<U, P>> | Extract<V, null | undefined> : NonNullable<V> extends Ref<infer U> ? Populated<U, P> | null : V;
17
+ /**
18
+ * The snapshot of `T` read with `populate: P[]`: each populated @ManyToOne is
19
+ * the related entity's snapshot instead of a `Ref` (`null` when the row is
20
+ * missing), and each populated @OneToMany is a loaded `MapCollection` of
21
+ * snapshots populated with the rest of the path.
22
+ */
23
+ export type Populated<T, P = never> = [P] extends [never] ? T : {
24
+ [K in keyof T]: K extends Head<P> ? PopulatedValue<T[K], Tail<P, K>> : T[K];
25
+ };
26
+ export type { Populate } from '../helpers/Populate.js';
27
+ //# sourceMappingURL=Relations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Relations.d.ts","sourceRoot":"","sources":["../../src/typings/Relations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC/D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAE/D,MAAM,MAAM,OAAO,CAAC,CAAC,IACnB,WAAW,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,MAAM,CAAC,CAAC,GAC/B,CAAC,GACD,WAAW,CAAC,CAAC,CAAC,SAAS,aAAa,CAAC,MAAM,CAAC,CAAC,GAC3C,CAAC,GACD,KAAK,CAAA;AAEb,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI;KACvB,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK;CACjE,CAAC,MAAM,CAAC,CAAC,CAAA;AAEV,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI;KACxB,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK;CAC3E,CAAC,MAAM,CAAC,CAAC,CAAA;AAEV,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,MAAM,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;AAElE,MAAM,MAAM,WAAW,CAAC,CAAC,EAAE,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,IACjD,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,aAAa,CAAC,MAAM,CAAC,CAAC,GAC5C,aAAa,CAAC,CAAC,CAAC,GAChB,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;AAE/B,MAAM,MAAM,kBAAkB,CAAC,CAAC,EAAE,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,IACxD,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,aAAa,CAAC,MAAM,CAAC,CAAC,GAC5C,aAAa,CAAC,CAAC,CAAC,GAChB,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAElC,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAA;AAEvD,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,GAAG,MAAM,IAAI,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,CAAA;AAElE,KAAK,cAAc,CAAC,CAAC,EAAE,CAAC,IACtB,WAAW,CAAC,CAAC,CAAC,SAAS,aAAa,CAAC,MAAM,CAAC,CAAC,GACzC,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC,GAC7D,WAAW,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,MAAM,CAAC,CAAC,GACjC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GACtB,CAAC,CAAA;AAET;;;;;GAKG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GACrD,CAAC,GACD;KACG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,GAC7B,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAChC,CAAC,CAAC,CAAC,CAAC;CACT,CAAA;AAEL,YAAY,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Relations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Relations.js","sourceRoot":"","sources":["../../src/typings/Relations.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@t4h.framework/orm",
3
- "version": "0.10.2",
3
+ "version": "0.11.1",
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",