@decaf-ts/core 0.6.0 → 0.7.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.
Files changed (126) hide show
  1. package/README.md +1 -1
  2. package/dist/core.cjs +1 -1
  3. package/dist/core.cjs.map +1 -1
  4. package/dist/core.js +1 -1
  5. package/dist/core.js.map +1 -1
  6. package/lib/esm/identity/decorators.js +6 -5
  7. package/lib/esm/identity/decorators.js.map +1 -1
  8. package/lib/esm/identity/utils.d.ts +3 -2
  9. package/lib/esm/identity/utils.js +7 -7
  10. package/lib/esm/identity/utils.js.map +1 -1
  11. package/lib/esm/index.d.ts +2 -1
  12. package/lib/esm/index.js +2 -1
  13. package/lib/esm/index.js.map +1 -1
  14. package/lib/esm/model/construction.d.ts +2 -11
  15. package/lib/esm/model/construction.js +21 -33
  16. package/lib/esm/model/construction.js.map +1 -1
  17. package/lib/esm/model/decorators.d.ts +11 -2
  18. package/lib/esm/model/decorators.js +91 -69
  19. package/lib/esm/model/decorators.js.map +1 -1
  20. package/lib/esm/model/types.d.ts +6 -2
  21. package/lib/esm/overrides/Metadata.d.ts +14 -2
  22. package/lib/esm/overrides/overrides.js +31 -0
  23. package/lib/esm/overrides/overrides.js.map +1 -1
  24. package/lib/esm/persistence/Adapter.d.ts +3 -9
  25. package/lib/esm/persistence/Adapter.js +27 -46
  26. package/lib/esm/persistence/Adapter.js.map +1 -1
  27. package/lib/esm/persistence/Sequence.d.ts +2 -1
  28. package/lib/esm/persistence/Sequence.js.map +1 -1
  29. package/lib/esm/persistence/index.d.ts +0 -1
  30. package/lib/esm/persistence/index.js +0 -1
  31. package/lib/esm/persistence/index.js.map +1 -1
  32. package/lib/esm/persistence/migrations.js +1 -2
  33. package/lib/esm/persistence/migrations.js.map +1 -1
  34. package/lib/esm/query/Paginator.d.ts +4 -2
  35. package/lib/esm/query/Paginator.js +3 -1
  36. package/lib/esm/query/Paginator.js.map +1 -1
  37. package/lib/esm/query/Statement.d.ts +2 -1
  38. package/lib/esm/query/Statement.js +2 -2
  39. package/lib/esm/query/Statement.js.map +1 -1
  40. package/lib/esm/query/options.d.ts +2 -1
  41. package/lib/esm/query/selectors.d.ts +2 -1
  42. package/lib/esm/ram/RamAdapter.d.ts +2 -1
  43. package/lib/esm/ram/RamAdapter.js +7 -5
  44. package/lib/esm/ram/RamAdapter.js.map +1 -1
  45. package/lib/esm/ram/RamPaginator.d.ts +2 -1
  46. package/lib/esm/ram/RamPaginator.js +1 -1
  47. package/lib/esm/ram/RamPaginator.js.map +1 -1
  48. package/lib/esm/ram/RamStatement.js +3 -3
  49. package/lib/esm/ram/RamStatement.js.map +1 -1
  50. package/lib/esm/ram/types.d.ts +2 -1
  51. package/lib/esm/repository/Repository.d.ts +2 -1
  52. package/lib/esm/repository/Repository.js +30 -40
  53. package/lib/esm/repository/Repository.js.map +1 -1
  54. package/lib/esm/repository/decorators.d.ts +2 -1
  55. package/lib/esm/repository/decorators.js +7 -8
  56. package/lib/esm/repository/decorators.js.map +1 -1
  57. package/lib/esm/repository/injectables.d.ts +1 -2
  58. package/lib/esm/repository/injectables.js +6 -6
  59. package/lib/esm/repository/injectables.js.map +1 -1
  60. package/lib/esm/repository/utils.d.ts +2 -2
  61. package/lib/esm/repository/utils.js +4 -5
  62. package/lib/esm/repository/utils.js.map +1 -1
  63. package/lib/identity/decorators.cjs +6 -5
  64. package/lib/identity/decorators.js.map +1 -1
  65. package/lib/identity/utils.cjs +5 -5
  66. package/lib/identity/utils.d.ts +3 -2
  67. package/lib/identity/utils.js.map +1 -1
  68. package/lib/index.cjs +2 -1
  69. package/lib/index.d.ts +2 -1
  70. package/lib/index.js.map +1 -1
  71. package/lib/model/construction.cjs +19 -31
  72. package/lib/model/construction.d.ts +2 -11
  73. package/lib/model/construction.js.map +1 -1
  74. package/lib/model/decorators.cjs +99 -76
  75. package/lib/model/decorators.d.ts +11 -2
  76. package/lib/model/decorators.js.map +1 -1
  77. package/lib/model/types.d.ts +6 -2
  78. package/lib/overrides/Metadata.d.ts +14 -2
  79. package/lib/overrides/overrides.cjs +31 -0
  80. package/lib/overrides/overrides.js.map +1 -1
  81. package/lib/persistence/Adapter.cjs +25 -44
  82. package/lib/persistence/Adapter.d.ts +3 -9
  83. package/lib/persistence/Adapter.js.map +1 -1
  84. package/lib/persistence/Sequence.d.ts +2 -1
  85. package/lib/persistence/Sequence.js.map +1 -1
  86. package/lib/persistence/index.cjs +0 -1
  87. package/lib/persistence/index.d.ts +0 -1
  88. package/lib/persistence/index.js.map +1 -1
  89. package/lib/persistence/migrations.cjs +1 -2
  90. package/lib/persistence/migrations.js.map +1 -1
  91. package/lib/query/Paginator.cjs +3 -1
  92. package/lib/query/Paginator.d.ts +4 -2
  93. package/lib/query/Paginator.js.map +1 -1
  94. package/lib/query/Statement.cjs +1 -1
  95. package/lib/query/Statement.d.ts +2 -1
  96. package/lib/query/Statement.js.map +1 -1
  97. package/lib/query/options.d.ts +2 -1
  98. package/lib/query/selectors.d.ts +2 -1
  99. package/lib/ram/RamAdapter.cjs +9 -7
  100. package/lib/ram/RamAdapter.d.ts +2 -1
  101. package/lib/ram/RamAdapter.js.map +1 -1
  102. package/lib/ram/RamPaginator.cjs +1 -1
  103. package/lib/ram/RamPaginator.d.ts +2 -1
  104. package/lib/ram/RamPaginator.js.map +1 -1
  105. package/lib/ram/RamStatement.cjs +3 -3
  106. package/lib/ram/RamStatement.js.map +1 -1
  107. package/lib/ram/types.d.ts +2 -1
  108. package/lib/repository/Repository.cjs +29 -39
  109. package/lib/repository/Repository.d.ts +2 -1
  110. package/lib/repository/Repository.js.map +1 -1
  111. package/lib/repository/decorators.cjs +5 -6
  112. package/lib/repository/decorators.d.ts +2 -1
  113. package/lib/repository/decorators.js.map +1 -1
  114. package/lib/repository/injectables.cjs +5 -5
  115. package/lib/repository/injectables.d.ts +1 -2
  116. package/lib/repository/injectables.js.map +1 -1
  117. package/lib/repository/utils.cjs +4 -5
  118. package/lib/repository/utils.d.ts +2 -2
  119. package/lib/repository/utils.js.map +1 -1
  120. package/package.json +2 -4
  121. package/lib/esm/persistence/decorators.d.ts +0 -11
  122. package/lib/esm/persistence/decorators.js +0 -19
  123. package/lib/esm/persistence/decorators.js.map +0 -1
  124. package/lib/persistence/decorators.cjs +0 -22
  125. package/lib/persistence/decorators.d.ts +0 -11
  126. package/lib/persistence/decorators.js.map +0 -1
@@ -1,4 +1,5 @@
1
- import { Constructor, Model } from "@decaf-ts/decorator-validation";
1
+ import { Model } from "@decaf-ts/decorator-validation";
2
+ import { Constructor } from "@decaf-ts/decoration";
2
3
  /**
3
4
  * @description Gets the table name for a model
4
5
  * @summary Retrieves the table name associated with a model by checking metadata or falling back to the constructor name
@@ -9,7 +10,7 @@ import { Constructor, Model } from "@decaf-ts/decorator-validation";
9
10
  * @memberOf module:core
10
11
  */
11
12
  export declare function getTableName<M extends Model>(model: M | Constructor<M>): string;
12
- export declare function getColumnName<M extends Model>(model: M, attribute: string): string;
13
+ export declare function getColumnName<M extends Model>(model: M | Constructor<M>, attribute: string): string;
13
14
  /**
14
15
  * @description Generates a sequence name for a model
15
16
  * @summary Creates a standardized sequence name by combining the table name with additional arguments
@@ -1,7 +1,7 @@
1
- import { Model, ModelKeys } from "@decaf-ts/decorator-validation";
2
- import { InternalError, Repository } from "@decaf-ts/db-decorators";
1
+ import { Model } from "@decaf-ts/decorator-validation";
2
+ import { InternalError } from "@decaf-ts/db-decorators";
3
3
  import { PersistenceKeys } from "./../persistence/constants.js";
4
- import { Adapter } from "./../persistence/Adapter.js";
4
+ import { Metadata } from "@decaf-ts/decoration";
5
5
  /**
6
6
  * @description Gets the table name for a model
7
7
  * @summary Retrieves the table name associated with a model by checking metadata or falling back to the constructor name
@@ -15,9 +15,9 @@ export function getTableName(model) {
15
15
  const obj = model instanceof Model ? Model.get(model.constructor.name) : model;
16
16
  if (!obj)
17
17
  throw new InternalError(`Unable to find model ${model}`);
18
- const metadata = Reflect.getOwnMetadata(Adapter.key(PersistenceKeys.TABLE), obj[ModelKeys.MODEL] || obj);
19
- if (metadata) {
20
- return metadata;
18
+ const meta = Metadata.get(model instanceof Model ? model.constructor : model, PersistenceKeys.TABLE);
19
+ if (meta) {
20
+ return meta;
21
21
  }
22
22
  if (model instanceof Model) {
23
23
  return model.constructor.name;
@@ -25,7 +25,7 @@ export function getTableName(model) {
25
25
  return model.name;
26
26
  }
27
27
  export function getColumnName(model, attribute) {
28
- const metadata = Reflect.getMetadata(Repository.key(PersistenceKeys.COLUMN), model, attribute);
28
+ const metadata = Metadata.get(model instanceof Model ? model.constructor : model, Metadata.key(PersistenceKeys.COLUMN, attribute));
29
29
  return metadata ? metadata : attribute;
30
30
  }
31
31
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/identity/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,sCAAiC;AAC3D,OAAO,EAAE,OAAO,EAAE,oCAA+B;AAEjD;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CAC1B,KAAyB;IAEzB,MAAM,GAAG,GACP,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAErE,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,aAAa,CAAC,wBAAwB,KAAK,EAAE,CAAC,CAAC;IAEnE,MAAM,QAAQ,GAAG,OAAO,CAAC,cAAc,CACrC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,EAClC,GAAG,CAAC,SAAS,CAAC,KAAoC,CAAC,IAAI,GAAG,CAC3D,CAAC;IAEF,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC;IAChC,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,KAAQ,EACR,SAAiB;IAEjB,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAClC,UAAU,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,EACtC,KAAK,EACL,SAAS,CACV,CAAC;IACF,OAAO,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;AACzC,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,oBAAoB,CAClC,KAAyB,EACzB,GAAG,IAAc;IAEjB,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/identity/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,sCAAiC;AAC3D,OAAO,EAAe,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAE7D;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CAC1B,KAAyB;IAEzB,MAAM,GAAG,GACP,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAErE,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,aAAa,CAAC,wBAAwB,KAAK,EAAE,CAAC,CAAC;IAEnE,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CACvB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAE,KAAa,EAC3D,eAAe,CAAC,KAAK,CACtB,CAAC;IAEF,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC;IAChC,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,KAAyB,EACzB,SAAiB;IAEjB,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAC3B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAE,KAAa,EAC3D,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,EAAE,SAAS,CAAC,CAChD,CAAC;IACF,OAAO,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;AACzC,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,oBAAoB,CAClC,KAAyB,EACzB,GAAG,IAAc;IAEjB,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,CAAC"}
@@ -13,13 +13,14 @@ export * from "./model";
13
13
  export * from "./query";
14
14
  export * from "./utils";
15
15
  export * from "./persistence";
16
+ export * from "./ram";
16
17
  /**
17
18
  * @description Stores the current package version
18
19
  * @summary A constant representing the version of the core package
19
20
  * @const VERSION
20
21
  * @memberOf module:core
21
22
  */
22
- export declare const VERSION = "0.5.47";
23
+ export declare const VERSION = "0.6.0";
23
24
  /**
24
25
  * @description Stores the current package version
25
26
  * @summary A constant representing the version of the core package
package/lib/esm/index.js CHANGED
@@ -20,13 +20,14 @@ export * from "./query/index.js";
20
20
  export * from "./utils/index.js";
21
21
  //left to last on purpose
22
22
  export * from "./persistence/index.js";
23
+ export * from "./ram/index.js";
23
24
  /**
24
25
  * @description Stores the current package version
25
26
  * @summary A constant representing the version of the core package
26
27
  * @const VERSION
27
28
  * @memberOf module:core
28
29
  */
29
- export const VERSION = "0.5.47";
30
+ export const VERSION = "0.6.0";
30
31
  /**
31
32
  * @description Stores the current package version
32
33
  * @summary A constant representing the version of the core package
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,mBAAmB,EAAE,oCAAiC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,kFAAkF;AAClF,WAAW,CAAC,WAAW,CAAC,IAAI,mBAAmB,EAAE,CAAC,CAAC;AAEnD,4BAA4B;AAC5B,qCAA4B;AAC5B,sCAA6B;AAE7B,oCAA2B;AAC3B,sCAA6B;AAC7B,iCAAwB;AACxB,iCAAwB;AACxB,iCAAwB;AACxB,yBAAyB;AACzB,uCAA8B;AAE9B;;;;;GAKG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,aAAa,CAAC;AAErC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,aAAa,CAAC;AAE1C,QAAQ,CAAC,eAAe,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,mBAAmB,EAAE,oCAAiC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,kFAAkF;AAClF,WAAW,CAAC,WAAW,CAAC,IAAI,mBAAmB,EAAE,CAAC,CAAC;AAEnD,4BAA4B;AAC5B,qCAA4B;AAC5B,sCAA6B;AAE7B,oCAA2B;AAC3B,sCAA6B;AAC7B,iCAAwB;AACxB,iCAAwB;AACxB,iCAAwB;AACxB,yBAAyB;AACzB,uCAA8B;AAC9B,+BAAsB;AAEtB;;;;;GAKG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,aAAa,CAAC;AAErC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,aAAa,CAAC;AAE1C,QAAQ,CAAC,eAAe,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC"}
@@ -426,16 +426,7 @@ export declare function populate<M extends Model, R extends Repo<M, F, C>, V ext
426
426
  *
427
427
  * Caller->>repositoryFromTypeMetadata: model, propertyKey
428
428
  *
429
- * repositoryFromTypeMetadata->>Validation: key(Array.isArray(model[propertyKey]) ? ValidationKeys.LIST : ValidationKeys.TYPE)
430
- * Validation-->>repositoryFromTypeMetadata: validationKey
431
- *
432
- * repositoryFromTypeMetadata->>Reflect: getMetadata(validationKey, model, propertyKey)
433
- * Reflect-->>repositoryFromTypeMetadata: types
434
- *
435
- * repositoryFromTypeMetadata->>repositoryFromTypeMetadata: determine customTypes based on property type
436
- * repositoryFromTypeMetadata->>repositoryFromTypeMetadata: check if types and customTypes exist
437
- *
438
- * repositoryFromTypeMetadata->>repositoryFromTypeMetadata: create allowedTypes array
429
+ * repositoryFromTypeMetadata->>repositoryFromTypeMetadata: Get allowedTypes array
439
430
  * repositoryFromTypeMetadata->>repositoryFromTypeMetadata: find constructorName not in commomTypes
440
431
  * repositoryFromTypeMetadata->>repositoryFromTypeMetadata: check if constructorName exists
441
432
  *
@@ -448,4 +439,4 @@ export declare function populate<M extends Model, R extends Repo<M, F, C>, V ext
448
439
  *
449
440
  * repositoryFromTypeMetadata-->>Caller: repo
450
441
  */
451
- export declare function repositoryFromTypeMetadata<M extends Model>(model: any, propertyKey: string | keyof M, alias?: string): Repo<M>;
442
+ export declare function repositoryFromTypeMetadata<M extends Model>(model: M, propertyKey: keyof M, alias?: string): Repo<M>;
@@ -1,8 +1,10 @@
1
- import { Model, Validation, ValidationKeys, } from "@decaf-ts/decorator-validation";
1
+ import { Model, ValidationKeys, } from "@decaf-ts/decorator-validation";
2
2
  import { Repository } from "./../repository/Repository.js";
3
- import { findPrimaryKey, InternalError, NotFoundError, } from "@decaf-ts/db-decorators";
3
+ import { InternalError, NotFoundError, } from "@decaf-ts/db-decorators";
4
4
  import { PersistenceKeys } from "./../persistence/constants.js";
5
5
  import { Cascade } from "./../repository/constants.js";
6
+ import { Metadata } from "@decaf-ts/decoration";
7
+ import { isClass } from "@decaf-ts/logging";
6
8
  /**
7
9
  * @description Creates or updates a model instance
8
10
  * @summary Determines whether to create a new model or update an existing one based on the presence of a primary key
@@ -125,14 +127,12 @@ export async function oneToOneOnCreate(context, data, key, model) {
125
127
  model[key] = propertyValue;
126
128
  return;
127
129
  }
128
- data.class =
129
- typeof data.class === "string" ? data.class : data.class().name;
130
- const constructor = Model.get(data.class);
130
+ const constructor = isClass(data.class) ? data.class : data.class();
131
131
  if (!constructor)
132
132
  throw new InternalError(`Could not find model ${data.class}`);
133
133
  const repo = Repository.forModel(constructor, this.adapter.alias);
134
134
  const created = await repo.create(propertyValue);
135
- const pk = findPrimaryKey(created).id;
135
+ const pk = Model.pk(created);
136
136
  await cacheModelForPopulate(context, model, key, created[pk], created);
137
137
  model[key] = created[pk];
138
138
  }
@@ -197,7 +197,7 @@ export async function oneToOneOnUpdate(context, data, key, model) {
197
197
  return;
198
198
  }
199
199
  const updated = await createOrUpdate(model[key], context, this.adapter.alias);
200
- const pk = findPrimaryKey(updated).id;
200
+ const pk = Model.pk(updated);
201
201
  await cacheModelForPopulate(context, model, key, updated[pk], updated);
202
202
  model[key] = updated[pk];
203
203
  }
@@ -327,7 +327,7 @@ export async function oneToManyOnCreate(context, data, key, model) {
327
327
  model[key] = [...uniqueValues];
328
328
  return;
329
329
  }
330
- const pkName = findPrimaryKey(propertyValues[0]).id;
330
+ const pkName = Model.pk(propertyValues[0]);
331
331
  const result = new Set();
332
332
  for (const m of propertyValues) {
333
333
  const record = await createOrUpdate(m, context, this.adapter.alias);
@@ -605,16 +605,7 @@ const commomTypes = [
605
605
  *
606
606
  * Caller->>repositoryFromTypeMetadata: model, propertyKey
607
607
  *
608
- * repositoryFromTypeMetadata->>Validation: key(Array.isArray(model[propertyKey]) ? ValidationKeys.LIST : ValidationKeys.TYPE)
609
- * Validation-->>repositoryFromTypeMetadata: validationKey
610
- *
611
- * repositoryFromTypeMetadata->>Reflect: getMetadata(validationKey, model, propertyKey)
612
- * Reflect-->>repositoryFromTypeMetadata: types
613
- *
614
- * repositoryFromTypeMetadata->>repositoryFromTypeMetadata: determine customTypes based on property type
615
- * repositoryFromTypeMetadata->>repositoryFromTypeMetadata: check if types and customTypes exist
616
- *
617
- * repositoryFromTypeMetadata->>repositoryFromTypeMetadata: create allowedTypes array
608
+ * repositoryFromTypeMetadata->>repositoryFromTypeMetadata: Get allowedTypes array
618
609
  * repositoryFromTypeMetadata->>repositoryFromTypeMetadata: find constructorName not in commomTypes
619
610
  * repositoryFromTypeMetadata->>repositoryFromTypeMetadata: check if constructorName exists
620
611
  *
@@ -628,21 +619,18 @@ const commomTypes = [
628
619
  * repositoryFromTypeMetadata-->>Caller: repo
629
620
  */
630
621
  export function repositoryFromTypeMetadata(model, propertyKey, alias) {
631
- const types = Reflect.getMetadata(Validation.key(Array.isArray(model[propertyKey])
632
- ? ValidationKeys.LIST
633
- : ValidationKeys.TYPE), model, propertyKey);
634
- const customTypes = Array.isArray(model[propertyKey])
635
- ? types.clazz
636
- : types.customTypes;
637
- if (!types || !customTypes)
638
- throw new InternalError(`Failed to find types decorators for property ${propertyKey}`);
639
- const allowedTypes = (Array.isArray(customTypes) ? [...customTypes] : [customTypes]).map((t) => (typeof t === "function" ? t() : t));
640
- const constructorName = allowedTypes.find((t) => !commomTypes.includes(`${t}`.toLowerCase()));
641
- if (!constructorName)
642
- throw new InternalError(`Property key ${propertyKey} does not have a valid constructor type`);
643
- const constructor = Model.get(constructorName);
644
- if (!constructor)
645
- throw new InternalError(`No registered model found for ${constructorName}`);
622
+ if (!model)
623
+ throw new Error("No model was provided to get repository");
624
+ let allowedTypes;
625
+ if (Array.isArray(model[propertyKey]) || model[propertyKey] instanceof Set) {
626
+ const customTypes = Metadata.get(model instanceof Model ? model.constructor : model, Metadata.key(ValidationKeys.REFLECT, propertyKey, ValidationKeys.LIST))?.clazz;
627
+ if (!customTypes)
628
+ throw new InternalError(`Failed to find types decorators for property ${propertyKey}`);
629
+ allowedTypes = (Array.isArray(customTypes) ? [...customTypes] : [customTypes]).map((t) => (typeof t === "function" && !t.name ? t() : t));
630
+ }
631
+ else
632
+ allowedTypes = Metadata.getPropDesignTypes(model instanceof Model ? model.constructor : model, propertyKey)?.designTypes;
633
+ const constructor = allowedTypes?.find((t) => !commomTypes.includes(`${t.name}`.toLowerCase()));
646
634
  return Repository.forModel(constructor, alias);
647
635
  }
648
636
  //# sourceMappingURL=construction.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"construction.js","sourceRoot":"","sources":["../../../src/model/construction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"construction.js","sourceRoot":"","sources":["../../../src/model/construction.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
1
  import { Context, OperationKeys, RepositoryFlags } from "@decaf-ts/db-decorators";
2
+ import { propMetadata, Constructor } from "@decaf-ts/decoration";
2
3
  import { CascadeMetadata } from "../repository/types";
3
4
  import { OrderDirection } from "../repository/constants";
4
- import { Constructor, Model, propMetadata } from "@decaf-ts/decorator-validation";
5
+ import { Model } from "@decaf-ts/decorator-validation";
5
6
  import { Repo } from "../repository/Repository";
6
7
  import { JoinColumnOptions, JoinTableMultipleColumnsOptions, JoinTableOptions, RelationsMetadata } from "./types";
7
8
  /**
@@ -12,7 +13,7 @@ import { JoinColumnOptions, JoinTableMultipleColumnsOptions, JoinTableOptions, R
12
13
  * @function table
13
14
  * @category Class Decorators
14
15
  */
15
- export declare function table<OPTS = string>(opts?: OPTS): (target: any) => any;
16
+ export declare function table<OPTS = string>(opts?: OPTS): (target: any, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
16
17
  /**
17
18
  * @description Specifies the database column name for a model property
18
19
  * @summary Decorator that maps a model property to a specific column name in the database
@@ -238,3 +239,11 @@ export declare function noValidateOn(...ops: OperationKeys[]): (target: any, pro
238
239
  export declare function noValidateOnCreate(): (target: any, propertyKey?: any) => void;
239
240
  export declare function noValidateOnUpdate(): (target: any, propertyKey?: any) => void;
240
241
  export declare function noValidateOnCreateUpdate(): (target: any, propertyKey?: any) => void;
242
+ /**
243
+ * @description Specifies the model property as a relation
244
+ * @summary Decorator that specifies the model property as a relation in the database
245
+ * @return {Function} A decorator function that can be applied to a class property
246
+ * @function relation
247
+ * @category Property Decorators
248
+ */
249
+ export declare function relation(relationKey: string, meta: RelationsMetadata): (target: any, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
@@ -1,11 +1,8 @@
1
1
  import { afterAny, ConflictError, onCreate, onCreateUpdate, onDelete, onUpdate, OperationKeys, timestamp, } from "@decaf-ts/db-decorators";
2
- import { apply, metadata } from "@decaf-ts/reflection";
3
- import { apply as newApply, Metadata, metadata as newMetadata, } from "@decaf-ts/decoration";
2
+ import { apply as newApply, Metadata, metadata as newMetadata, Decoration, propMetadata, prop, metadata, apply, } from "@decaf-ts/decoration";
4
3
  import { PersistenceKeys } from "./../persistence/constants.js";
5
4
  import { DefaultCascade, OrderDirection } from "./../repository/constants.js";
6
- import { Decoration, list, prop, propMetadata, type, } from "@decaf-ts/decorator-validation";
7
- import { Adapter } from "./../persistence/index.js";
8
- import { Repository } from "./../repository/Repository.js";
5
+ import { list, type } from "@decaf-ts/decorator-validation";
9
6
  import { Condition } from "./../query/Condition.js";
10
7
  import { oneToManyOnCreate, oneToManyOnDelete, oneToManyOnUpdate, oneToOneOnCreate, oneToOneOnDelete, oneToOneOnUpdate, populate as pop, } from "./construction.js";
11
8
  import { AuthorizationError } from "./../utils/index.js";
@@ -18,15 +15,16 @@ import { AuthorizationError } from "./../utils/index.js";
18
15
  * @category Class Decorators
19
16
  */
20
17
  export function table(opts) {
21
- return function table(target) {
22
- const key = Adapter.key(PersistenceKeys.TABLE);
23
- return Decoration.for(key)
24
- .define({
25
- decorator: metadata,
26
- args: [key, opts || target.name.toLowerCase()],
27
- })
28
- .apply()(target);
29
- };
18
+ return Decoration.for(PersistenceKeys.TABLE)
19
+ .define({
20
+ decorator: function table(opts) {
21
+ return function table(target) {
22
+ return metadata(PersistenceKeys.TABLE, opts || target.name.toLowerCase())(target);
23
+ };
24
+ },
25
+ args: [opts],
26
+ })
27
+ .apply();
30
28
  }
31
29
  /**
32
30
  * @description Specifies the database column name for a model property
@@ -37,40 +35,41 @@ export function table(opts) {
37
35
  * @category Property Decorators
38
36
  */
39
37
  export function column(columnName) {
40
- const key = Adapter.key(PersistenceKeys.COLUMN);
41
- return Decoration.for(key)
38
+ return Decoration.for(PersistenceKeys.COLUMN)
42
39
  .define({
43
- decorator: function column(k, c) {
40
+ decorator: function column(c) {
44
41
  return function column(obj, attr) {
45
- return propMetadata(k, c || attr)(obj, attr);
42
+ return propMetadata(Metadata.key(PersistenceKeys.COLUMN, attr), c || attr)(obj, attr);
46
43
  };
47
44
  },
48
- args: [key, columnName],
45
+ args: [columnName],
49
46
  })
50
47
  .apply();
51
48
  }
52
49
  export function index(directions, compositions, name) {
53
50
  function index(directions, compositions, name) {
54
- if (typeof directions === "string") {
55
- name = directions;
56
- directions = undefined;
57
- compositions = undefined;
58
- }
59
- if (typeof compositions === "string") {
60
- name = compositions;
61
- compositions = undefined;
62
- }
63
- if (!compositions && directions) {
64
- if (directions.find((d) => ![OrderDirection.ASC, OrderDirection.DSC].includes(d))) {
65
- compositions = directions;
51
+ return function index(obj, attr) {
52
+ if (typeof directions === "string") {
53
+ name = directions;
66
54
  directions = undefined;
55
+ compositions = undefined;
67
56
  }
68
- }
69
- return propMetadata(Repository.key(`${PersistenceKeys.INDEX}${compositions && compositions.length ? `.${compositions.join(".")}` : ""}`), {
70
- directions: directions,
71
- compositions: compositions,
72
- name: name,
73
- });
57
+ if (typeof compositions === "string") {
58
+ name = compositions;
59
+ compositions = undefined;
60
+ }
61
+ if (!compositions && directions) {
62
+ if (directions.find((d) => ![OrderDirection.ASC, OrderDirection.DSC].includes(d))) {
63
+ compositions = directions;
64
+ directions = undefined;
65
+ }
66
+ }
67
+ return propMetadata(Metadata.key(`${PersistenceKeys.INDEX}${compositions && compositions?.length ? `.${compositions.join(".")}` : ""}`, attr), {
68
+ directions: directions,
69
+ compositions: compositions,
70
+ name: name,
71
+ })(obj, attr);
72
+ };
74
73
  }
75
74
  return Decoration.for(PersistenceKeys.INDEX)
76
75
  .define({
@@ -121,7 +120,7 @@ export async function uniqueOnCreateUpdate(context, data, key, model) {
121
120
  * ```
122
121
  */
123
122
  export function unique() {
124
- const key = Repository.key(PersistenceKeys.UNIQUE);
123
+ const key = PersistenceKeys.UNIQUE;
125
124
  return Decoration.for(key)
126
125
  .define(onCreateUpdate(uniqueOnCreateUpdate), propMetadata(key, {}))
127
126
  .apply();
@@ -169,9 +168,15 @@ model) {
169
168
  * ```
170
169
  */
171
170
  export function createdBy() {
172
- const key = Repository.key(PersistenceKeys.CREATED_BY);
171
+ const key = PersistenceKeys.CREATED_BY;
172
+ function createdBy() {
173
+ return apply(onCreate(createdByOnCreateUpdate), propMetadata(key, {}));
174
+ }
173
175
  return Decoration.for(key)
174
- .define(onCreate(createdByOnCreateUpdate), propMetadata(key, {}))
176
+ .define({
177
+ decorator: createdBy,
178
+ args: [],
179
+ })
175
180
  .apply();
176
181
  }
177
182
  /**
@@ -189,9 +194,15 @@ export function createdBy() {
189
194
  * ```
190
195
  */
191
196
  export function updatedBy() {
192
- const key = Repository.key(PersistenceKeys.UPDATED_BY);
197
+ const key = PersistenceKeys.UPDATED_BY;
198
+ function updatedBy() {
199
+ return apply(onUpdate(createdByOnCreateUpdate), propMetadata(key, {}));
200
+ }
193
201
  return Decoration.for(key)
194
- .define(onCreateUpdate(createdByOnCreateUpdate), propMetadata(key, {}))
202
+ .define({
203
+ decorator: updatedBy,
204
+ args: [],
205
+ })
195
206
  .apply();
196
207
  }
197
208
  export function createdAt() {
@@ -226,11 +237,10 @@ export function updatedAt() {
226
237
  * @see manyToOne
227
238
  */
228
239
  export function oneToOne(clazz, cascadeOptions = DefaultCascade, populate = true, joinColumnOpts, fk) {
229
- const key = Repository.key(PersistenceKeys.ONE_TO_ONE);
230
- // Model.register(clazz as Constructor<M>);
240
+ const key = PersistenceKeys.ONE_TO_ONE;
231
241
  function oneToOneDec(clazz, cascade, populate, joinColumnOpts, fk) {
232
242
  const meta = {
233
- class: clazz.name ? clazz.name : clazz,
243
+ class: clazz,
234
244
  cascade: cascade,
235
245
  populate: populate,
236
246
  };
@@ -238,12 +248,7 @@ export function oneToOne(clazz, cascadeOptions = DefaultCascade, populate = true
238
248
  meta.joinTable = joinColumnOpts;
239
249
  if (fk)
240
250
  meta.name = fk;
241
- return apply(prop(PersistenceKeys.RELATIONS), type([
242
- clazz.name ? clazz.name : clazz,
243
- String.name,
244
- Number.name,
245
- BigInt.name,
246
- ]), onCreate(oneToOneOnCreate, meta), onUpdate(oneToOneOnUpdate, meta), onDelete(oneToOneOnDelete, meta), afterAny(pop, meta), propMetadata(key, meta));
251
+ return apply(prop(), relation(key, meta), type([clazz, String, Number, BigInt]), onCreate(oneToOneOnCreate, meta), onUpdate(oneToOneOnUpdate, meta), onDelete(oneToOneOnDelete, meta), afterAny(pop, meta));
247
252
  }
248
253
  return Decoration.for(key)
249
254
  .define({
@@ -281,10 +286,10 @@ export function oneToOne(clazz, cascadeOptions = DefaultCascade, populate = true
281
286
  * @see manyToOne
282
287
  */
283
288
  export function oneToMany(clazz, cascadeOptions = DefaultCascade, populate = true, joinTableOpts, fk) {
284
- const key = Repository.key(PersistenceKeys.ONE_TO_MANY);
289
+ const key = PersistenceKeys.ONE_TO_MANY;
285
290
  function oneToManyDec(clazz, cascade, populate, joinTableOpts, fk) {
286
291
  const metadata = {
287
- class: clazz.name ? clazz.name : clazz,
292
+ class: clazz,
288
293
  cascade: cascade,
289
294
  populate: populate,
290
295
  };
@@ -292,13 +297,13 @@ export function oneToMany(clazz, cascadeOptions = DefaultCascade, populate = tru
292
297
  metadata.joinTable = joinTableOpts;
293
298
  if (fk)
294
299
  metadata.name = fk;
295
- return apply(prop(PersistenceKeys.RELATIONS), list([
300
+ return apply(prop(), relation(key, metadata), list([
296
301
  clazz,
297
302
  String,
298
303
  Number,
299
304
  // @ts-expect-error Bigint is not a constructor
300
305
  BigInt,
301
- ]), onCreate(oneToManyOnCreate, metadata), onUpdate(oneToManyOnUpdate, metadata), onDelete(oneToManyOnDelete, metadata), afterAny(pop, metadata), propMetadata(key, metadata));
306
+ ]), onCreate(oneToManyOnCreate, metadata), onUpdate(oneToManyOnUpdate, metadata), onDelete(oneToManyOnDelete, metadata), afterAny(pop, metadata));
302
307
  }
303
308
  return Decoration.for(key)
304
309
  .define({
@@ -337,11 +342,10 @@ export function oneToMany(clazz, cascadeOptions = DefaultCascade, populate = tru
337
342
  */
338
343
  export function manyToOne(clazz, cascadeOptions = DefaultCascade, populate = true, joinTableOpts, fk) {
339
344
  // Model.register(clazz as Constructor<M>);
340
- const key = Repository.key(PersistenceKeys.MANY_TO_ONE);
345
+ const key = PersistenceKeys.MANY_TO_ONE;
341
346
  function manyToOneDec(clazz, cascade, populate, joinTableOpts, fk) {
342
- const clazzName = () => (clazz?.name ? clazz : clazz()).name;
343
347
  const metadata = {
344
- class: clazz?.name ? clazz.name : clazz,
348
+ class: clazz,
345
349
  cascade: cascade,
346
350
  populate: populate,
347
351
  };
@@ -349,12 +353,12 @@ export function manyToOne(clazz, cascadeOptions = DefaultCascade, populate = tru
349
353
  metadata.joinTable = joinTableOpts;
350
354
  if (fk)
351
355
  metadata.name = fk;
352
- return apply(prop(PersistenceKeys.RELATIONS), type([clazzName, String.name, Number.name, BigInt.name]),
356
+ return apply(prop(), relation(key, metadata), type([clazz, String, Number, BigInt])
353
357
  // onCreate(oneToManyOnCreate, metadata),
354
358
  // onUpdate(oneToManyOnUpdate, metadata),
355
359
  // onDelete(oneToManyOnDelete, metadata),
356
360
  // afterAny(pop, metadata),
357
- propMetadata(key, metadata));
361
+ );
358
362
  }
359
363
  return Decoration.for(key)
360
364
  .define({
@@ -393,10 +397,10 @@ export function manyToOne(clazz, cascadeOptions = DefaultCascade, populate = tru
393
397
  */
394
398
  export function manyToMany(clazz, cascadeOptions = DefaultCascade, populate = true, joinTableOpts, fk) {
395
399
  // Model.register(clazz as Constructor<M>);
396
- const key = Repository.key(PersistenceKeys.MANY_TO_MANY);
400
+ const key = PersistenceKeys.MANY_TO_MANY;
397
401
  function manyToManyDec(clazz, cascade, populate, joinTableOpts, fk) {
398
402
  const metadata = {
399
- class: clazz.name ? clazz.name : clazz,
403
+ class: clazz,
400
404
  cascade: cascade,
401
405
  populate: populate,
402
406
  };
@@ -404,17 +408,12 @@ export function manyToMany(clazz, cascadeOptions = DefaultCascade, populate = tr
404
408
  metadata.joinTable = joinTableOpts;
405
409
  if (fk)
406
410
  metadata.name = fk;
407
- return apply(prop(PersistenceKeys.RELATIONS), list([
408
- clazz.name ? clazz.name : clazz,
409
- String.name,
410
- Number.name,
411
- BigInt.name,
412
- ]),
411
+ return apply(prop(), relation(key, metadata), list([clazz, String, Number, BigInt])
413
412
  // onCreate(oneToManyOnCreate, metadata),
414
413
  // onUpdate(oneToManyOnUpdate, metadata),
415
414
  // onDelete(oneToManyOnDelete, metadata),
416
415
  // afterAll(populate, metadata),
417
- propMetadata(key, metadata));
416
+ );
418
417
  }
419
418
  return Decoration.for(key)
420
419
  .define({
@@ -439,4 +438,27 @@ export function noValidateOnUpdate() {
439
438
  export function noValidateOnCreateUpdate() {
440
439
  return noValidateOn(OperationKeys.UPDATE, OperationKeys.CREATE);
441
440
  }
441
+ /**
442
+ * @description Specifies the model property as a relation
443
+ * @summary Decorator that specifies the model property as a relation in the database
444
+ * @return {Function} A decorator function that can be applied to a class property
445
+ * @function relation
446
+ * @category Property Decorators
447
+ */
448
+ export function relation(relationKey, meta) {
449
+ function relation(relationKey, meta) {
450
+ return function relation(obj, attr) {
451
+ propMetadata(relationKey, meta)(obj, attr);
452
+ return propMetadata(Metadata.key(PersistenceKeys.RELATIONS, attr), Object.assign({}, meta, {
453
+ key: relationKey,
454
+ }))(obj, attr);
455
+ };
456
+ }
457
+ return Decoration.for(PersistenceKeys.RELATIONS)
458
+ .define({
459
+ decorator: relation,
460
+ args: [relationKey, meta],
461
+ })
462
+ .apply();
463
+ }
442
464
  //# sourceMappingURL=decorators.js.map