@decaf-ts/core 0.1.2 → 0.2.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 (208) hide show
  1. package/README.md +4 -4
  2. package/dist/core.bundle.min.js +1 -1
  3. package/dist/esm/core.bundle.min.esm.js +1 -1
  4. package/lib/esm/identity/decorators.d.ts +4 -10
  5. package/lib/esm/identity/decorators.js +57 -1
  6. package/lib/esm/identity/index.js +3 -1
  7. package/lib/esm/identity/utils.d.ts +2 -0
  8. package/lib/esm/identity/utils.js +6 -0
  9. package/lib/esm/index.d.ts +3 -1
  10. package/lib/esm/index.js +30 -1
  11. package/lib/esm/interfaces/Builder.js +3 -0
  12. package/lib/esm/interfaces/Executor.d.ts +3 -1
  13. package/lib/esm/interfaces/Executor.js +3 -0
  14. package/lib/esm/interfaces/Observable.js +3 -0
  15. package/lib/esm/interfaces/Observer.js +3 -0
  16. package/lib/esm/interfaces/Queriable.d.ts +6 -0
  17. package/lib/esm/interfaces/Queriable.js +3 -0
  18. package/lib/esm/interfaces/RawExecutor.d.ts +4 -3
  19. package/lib/esm/interfaces/RawExecutor.js +3 -0
  20. package/lib/esm/interfaces/Sequence.d.ts +3 -2
  21. package/lib/esm/interfaces/Sequence.js +10 -0
  22. package/lib/esm/interfaces/SequenceOptions.d.ts +9 -1
  23. package/lib/esm/interfaces/SequenceOptions.js +20 -0
  24. package/lib/esm/interfaces/index.d.ts +1 -0
  25. package/lib/esm/interfaces/index.js +10 -1
  26. package/lib/esm/model/BaseModel.d.ts +2 -3
  27. package/lib/esm/model/BaseModel.js +28 -1
  28. package/lib/esm/model/decorators.d.ts +6 -5
  29. package/lib/esm/model/decorators.js +55 -1
  30. package/lib/esm/model/index.js +4 -1
  31. package/lib/esm/persistence/Adapter.d.ts +43 -14
  32. package/lib/esm/persistence/Adapter.js +153 -1
  33. package/lib/esm/persistence/constants.d.ts +11 -1
  34. package/lib/esm/persistence/constants.js +14 -1
  35. package/lib/esm/persistence/decorators.d.ts +1 -2
  36. package/lib/esm/persistence/decorators.js +10 -1
  37. package/lib/esm/persistence/errors.d.ts +4 -0
  38. package/lib/esm/persistence/errors.js +8 -0
  39. package/lib/esm/persistence/index.d.ts +1 -0
  40. package/lib/esm/persistence/index.js +7 -1
  41. package/lib/esm/persistence/utils.d.ts +2 -2
  42. package/lib/esm/persistence/utils.js +12 -1
  43. package/lib/esm/query/Clause.d.ts +43 -0
  44. package/lib/esm/query/Clause.js +76 -0
  45. package/lib/esm/query/ClauseFactory.d.ts +71 -0
  46. package/lib/esm/query/ClauseFactory.js +7 -0
  47. package/lib/esm/query/Condition.d.ts +75 -0
  48. package/lib/esm/query/Condition.js +248 -0
  49. package/lib/esm/query/Query.d.ts +43 -0
  50. package/lib/esm/query/Query.js +55 -0
  51. package/lib/esm/query/Statement.d.ts +49 -0
  52. package/lib/esm/query/Statement.js +163 -0
  53. package/lib/esm/query/clauses/FromClause.d.ts +45 -0
  54. package/lib/esm/query/clauses/FromClause.js +60 -0
  55. package/lib/esm/query/clauses/GroupByClause.d.ts +21 -0
  56. package/lib/esm/query/clauses/GroupByClause.js +20 -0
  57. package/lib/esm/query/clauses/InsertClause.d.ts +37 -0
  58. package/lib/esm/query/clauses/InsertClause.js +56 -0
  59. package/lib/esm/query/clauses/LimitClause.d.ts +29 -0
  60. package/lib/esm/query/clauses/LimitClause.js +28 -0
  61. package/lib/esm/query/clauses/OffsetClause.d.ts +21 -0
  62. package/lib/esm/query/clauses/OffsetClause.js +20 -0
  63. package/lib/esm/query/clauses/OrderByClause.d.ts +37 -0
  64. package/lib/esm/query/clauses/OrderByClause.js +40 -0
  65. package/lib/esm/query/clauses/SelectClause.d.ts +47 -0
  66. package/lib/esm/query/clauses/SelectClause.js +63 -0
  67. package/lib/esm/query/clauses/SelectorBasedClause.d.ts +25 -0
  68. package/lib/esm/query/clauses/SelectorBasedClause.js +45 -0
  69. package/lib/esm/query/clauses/ValuesClause.d.ts +21 -0
  70. package/lib/esm/query/clauses/ValuesClause.js +37 -0
  71. package/lib/esm/query/clauses/WhereClause.d.ts +46 -0
  72. package/lib/esm/query/clauses/WhereClause.js +72 -0
  73. package/lib/esm/query/clauses/index.d.ts +10 -0
  74. package/lib/esm/query/clauses/index.js +12 -0
  75. package/lib/esm/query/constants.d.ts +79 -0
  76. package/lib/esm/query/constants.js +88 -0
  77. package/lib/esm/query/errors.d.ts +4 -0
  78. package/lib/esm/query/errors.js +8 -0
  79. package/lib/esm/query/index.d.ts +11 -0
  80. package/lib/esm/query/index.js +13 -0
  81. package/lib/esm/query/options.d.ts +371 -0
  82. package/lib/esm/query/options.js +3 -0
  83. package/lib/esm/query/selectors.d.ts +38 -0
  84. package/lib/esm/query/selectors.js +3 -0
  85. package/lib/esm/query/types.d.ts +2 -0
  86. package/lib/esm/query/types.js +3 -0
  87. package/lib/esm/repository/Repository.d.ts +27 -11
  88. package/lib/esm/repository/Repository.js +246 -1
  89. package/lib/esm/repository/constants.js +31 -1
  90. package/lib/esm/repository/decorators.d.ts +2 -3
  91. package/lib/esm/repository/decorators.js +27 -1
  92. package/lib/esm/repository/errors.js +16 -1
  93. package/lib/esm/repository/index.d.ts +1 -0
  94. package/lib/esm/repository/index.js +9 -1
  95. package/lib/esm/repository/injectables.d.ts +5 -0
  96. package/lib/esm/repository/injectables.js +32 -0
  97. package/lib/esm/repository/types.js +3 -0
  98. package/lib/esm/repository/utils.d.ts +4 -3
  99. package/lib/esm/repository/utils.js +45 -1
  100. package/lib/esm/validators/ClauseSequenceValidator.d.ts +28 -0
  101. package/lib/esm/validators/ClauseSequenceValidator.js +95 -0
  102. package/lib/esm/validators/decorators.d.ts +10 -0
  103. package/lib/esm/validators/decorators.js +25 -0
  104. package/lib/esm/validators/index.d.ts +2 -0
  105. package/lib/esm/validators/index.js +4 -0
  106. package/lib/identity/decorators.cjs +61 -1
  107. package/lib/identity/decorators.d.ts +4 -10
  108. package/lib/identity/index.cjs +19 -1
  109. package/lib/identity/utils.cjs +9 -0
  110. package/lib/identity/utils.d.ts +2 -0
  111. package/lib/index.cjs +47 -1
  112. package/lib/index.d.ts +3 -1
  113. package/lib/interfaces/Builder.cjs +4 -1
  114. package/lib/interfaces/Executor.cjs +4 -1
  115. package/lib/interfaces/Executor.d.ts +3 -1
  116. package/lib/interfaces/Observable.cjs +4 -1
  117. package/lib/interfaces/Observer.cjs +4 -1
  118. package/lib/interfaces/Queriable.cjs +4 -0
  119. package/lib/interfaces/Queriable.d.ts +6 -0
  120. package/lib/interfaces/RawExecutor.cjs +4 -1
  121. package/lib/interfaces/RawExecutor.d.ts +4 -3
  122. package/lib/interfaces/Sequence.cjs +11 -1
  123. package/lib/interfaces/Sequence.d.ts +3 -2
  124. package/lib/interfaces/SequenceOptions.cjs +23 -1
  125. package/lib/interfaces/SequenceOptions.d.ts +9 -1
  126. package/lib/interfaces/index.cjs +26 -1
  127. package/lib/interfaces/index.d.ts +1 -0
  128. package/lib/model/BaseModel.cjs +32 -1
  129. package/lib/model/BaseModel.d.ts +2 -3
  130. package/lib/model/decorators.cjs +62 -1
  131. package/lib/model/decorators.d.ts +6 -5
  132. package/lib/model/index.cjs +20 -1
  133. package/lib/persistence/Adapter.cjs +157 -1
  134. package/lib/persistence/Adapter.d.ts +43 -14
  135. package/lib/persistence/constants.cjs +17 -1
  136. package/lib/persistence/constants.d.ts +11 -1
  137. package/lib/persistence/decorators.cjs +13 -1
  138. package/lib/persistence/decorators.d.ts +1 -2
  139. package/lib/persistence/errors.cjs +12 -0
  140. package/lib/persistence/errors.d.ts +4 -0
  141. package/lib/persistence/index.cjs +23 -1
  142. package/lib/persistence/index.d.ts +1 -0
  143. package/lib/persistence/utils.cjs +16 -1
  144. package/lib/persistence/utils.d.ts +2 -2
  145. package/lib/query/Clause.cjs +80 -0
  146. package/lib/query/Clause.d.ts +43 -0
  147. package/lib/query/ClauseFactory.cjs +11 -0
  148. package/lib/query/ClauseFactory.d.ts +71 -0
  149. package/lib/query/Condition.cjs +252 -0
  150. package/lib/query/Condition.d.ts +75 -0
  151. package/lib/query/Query.cjs +59 -0
  152. package/lib/query/Query.d.ts +43 -0
  153. package/lib/query/Statement.cjs +167 -0
  154. package/lib/query/Statement.d.ts +49 -0
  155. package/lib/query/clauses/FromClause.cjs +64 -0
  156. package/lib/query/clauses/FromClause.d.ts +45 -0
  157. package/lib/query/clauses/GroupByClause.cjs +24 -0
  158. package/lib/query/clauses/GroupByClause.d.ts +21 -0
  159. package/lib/query/clauses/InsertClause.cjs +60 -0
  160. package/lib/query/clauses/InsertClause.d.ts +37 -0
  161. package/lib/query/clauses/LimitClause.cjs +32 -0
  162. package/lib/query/clauses/LimitClause.d.ts +29 -0
  163. package/lib/query/clauses/OffsetClause.cjs +24 -0
  164. package/lib/query/clauses/OffsetClause.d.ts +21 -0
  165. package/lib/query/clauses/OrderByClause.cjs +44 -0
  166. package/lib/query/clauses/OrderByClause.d.ts +37 -0
  167. package/lib/query/clauses/SelectClause.cjs +67 -0
  168. package/lib/query/clauses/SelectClause.d.ts +47 -0
  169. package/lib/query/clauses/SelectorBasedClause.cjs +49 -0
  170. package/lib/query/clauses/SelectorBasedClause.d.ts +25 -0
  171. package/lib/query/clauses/ValuesClause.cjs +41 -0
  172. package/lib/query/clauses/ValuesClause.d.ts +21 -0
  173. package/lib/query/clauses/WhereClause.cjs +76 -0
  174. package/lib/query/clauses/WhereClause.d.ts +46 -0
  175. package/lib/query/clauses/index.cjs +28 -0
  176. package/lib/query/clauses/index.d.ts +10 -0
  177. package/lib/query/constants.cjs +91 -0
  178. package/lib/query/constants.d.ts +79 -0
  179. package/lib/query/errors.cjs +12 -0
  180. package/lib/query/errors.d.ts +4 -0
  181. package/lib/query/index.cjs +29 -0
  182. package/lib/query/index.d.ts +11 -0
  183. package/lib/query/options.cjs +4 -0
  184. package/lib/query/options.d.ts +371 -0
  185. package/lib/query/selectors.cjs +4 -0
  186. package/lib/query/selectors.d.ts +38 -0
  187. package/lib/query/types.cjs +4 -0
  188. package/lib/query/types.d.ts +2 -0
  189. package/lib/repository/Repository.cjs +250 -1
  190. package/lib/repository/Repository.d.ts +27 -11
  191. package/lib/repository/constants.cjs +34 -1
  192. package/lib/repository/decorators.cjs +30 -1
  193. package/lib/repository/decorators.d.ts +2 -3
  194. package/lib/repository/errors.cjs +20 -1
  195. package/lib/repository/index.cjs +25 -1
  196. package/lib/repository/index.d.ts +1 -0
  197. package/lib/repository/injectables.cjs +36 -0
  198. package/lib/repository/injectables.d.ts +5 -0
  199. package/lib/repository/types.cjs +4 -1
  200. package/lib/repository/utils.cjs +50 -1
  201. package/lib/repository/utils.d.ts +6 -0
  202. package/lib/validators/ClauseSequenceValidator.cjs +98 -0
  203. package/lib/validators/ClauseSequenceValidator.d.ts +28 -0
  204. package/lib/validators/decorators.cjs +28 -0
  205. package/lib/validators/decorators.d.ts +10 -0
  206. package/lib/validators/index.cjs +20 -0
  207. package/lib/validators/index.d.ts +2 -0
  208. package/package.json +14 -11
@@ -1,15 +1,9 @@
1
- import { Constructor } from "@decaf-ts/decorator-validation";
1
+ import { Model } from "@decaf-ts/decorator-validation";
2
2
  import { SequenceOptions } from "../interfaces/SequenceOptions";
3
- import { Sequence } from "../interfaces/Sequence";
4
- import { DBModel } from "@decaf-ts/db-decorators";
5
3
  import { Repository } from "../repository/Repository";
6
- export type IdOnCreateData = {
7
- sequence?: Constructor<Sequence>;
8
- options?: SequenceOptions;
9
- };
10
4
  /**
11
5
  * @summary Primary Key Decorator
12
- * @description Marks the property as the {@link DBModel}s primary key.
6
+ * @description Marks the property as the {@link Model}s primary key.
13
7
  * Also marks the property as {@link unique} as {@required} and ensures the index is created properly according to the provided {@link Sequence}
14
8
  *
15
9
  *
@@ -25,5 +19,5 @@ export type IdOnCreateData = {
25
19
  * @param key
26
20
  * @param model
27
21
  */
28
- export declare function pkOnCreate<T extends DBModel, V extends Repository<T>>(this: V, data: IdOnCreateData, key: string, model: T): Promise<void>;
29
- export declare function pk(sequence?: Constructor<Sequence>, opts?: SequenceOptions): <TFunction extends Function, Y>(target: TFunction | object, propertyKey?: string | symbol, descriptor?: TypedPropertyDescriptor<Y>) => void;
22
+ export declare function pkOnCreate<M extends Model, V extends Repository<M, any>>(this: V, data: SequenceOptions, key: string, model: M): Promise<void>;
23
+ export declare function pk(opts?: Omit<SequenceOptions, "cycle" | "startWith" | "incrementBy">): (target: object, propertyKey?: any, descriptor?: any) => void;
@@ -1 +1,57 @@
1
- import{required}from"@decaf-ts/decorator-validation";import{DBKeys,getDBKey,InternalError,onCreate,readonly}from"@decaf-ts/db-decorators";import{apply,metadata}from"@decaf-ts/reflection";import{index}from"../model/decorators";async function pkOnCreate(t,r,a){if(t.sequence){let e;try{e=await this.adapter.getSequence(a,t.sequence,t.options)}catch(e){throw new InternalError(`Failed to instantiate Sequence ${t.sequence.name}: `+e)}t=await e.next();Object.defineProperty(a,r,{enumerable:!0,writable:!1,configurable:!0,value:t})}}function pk(e,t){return apply(index(),required(),readonly(),metadata(getDBKey(DBKeys.ID),{}),onCreate(pkOnCreate,{sequence:e,options:t}))}export{pkOnCreate,pk};
1
+ import { propMetadata, required } from "@decaf-ts/decorator-validation";
2
+ import { DefaultSequenceOptions, } from "../interfaces/SequenceOptions";
3
+ import { DBKeys, InternalError, onCreate, readonly, } from "@decaf-ts/db-decorators";
4
+ import { apply } from "@decaf-ts/reflection";
5
+ import { Repository } from "../repository/Repository";
6
+ import { index } from "../model/decorators";
7
+ import { sequenceNameForModel } from "./utils";
8
+ /**
9
+ * @summary Primary Key Decorator
10
+ * @description Marks the property as the {@link Model}s primary key.
11
+ * Also marks the property as {@link unique} as {@required} and ensures the index is created properly according to the provided {@link Sequence}
12
+ *
13
+ *
14
+ *
15
+ * @function pk
16
+ *
17
+ * @memberOf module:wallet-db.Decorators
18
+ *
19
+ * @see unique
20
+ * @see required
21
+ * @see on
22
+ * @param data
23
+ * @param key
24
+ * @param model
25
+ */
26
+ export async function pkOnCreate(data, key, model) {
27
+ if (!data.type || model[key]) {
28
+ return;
29
+ }
30
+ const setPrimaryKeyValue = function (target, propertyKey, value) {
31
+ Object.defineProperty(target, propertyKey, {
32
+ enumerable: true,
33
+ writable: false,
34
+ configurable: true,
35
+ value: value,
36
+ });
37
+ };
38
+ if (!data.name)
39
+ data.name = sequenceNameForModel(model, "pk");
40
+ let sequence;
41
+ try {
42
+ sequence = await this.adapter.Sequence(data);
43
+ }
44
+ catch (e) {
45
+ throw new InternalError(`Failed to instantiate Sequence ${data.name}: ${e}`);
46
+ }
47
+ const next = await sequence.next();
48
+ setPrimaryKeyValue(model, key, next);
49
+ }
50
+ export function pk(opts = DefaultSequenceOptions) {
51
+ opts = Object.assign({}, DefaultSequenceOptions, opts);
52
+ return apply(index(), required(), readonly(),
53
+ // type([String.name, Number.name, BigInt.name]),
54
+ propMetadata(Repository.key(DBKeys.ID), opts), onCreate(pkOnCreate, opts));
55
+ }
56
+
57
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9pZGVudGl0eS9kZWNvcmF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFTLE1BQU0sZ0NBQWdDLENBQUM7QUFDL0UsT0FBTyxFQUNMLHNCQUFzQixHQUV2QixNQUFNLCtCQUErQixDQUFDO0FBRXZDLE9BQU8sRUFDTCxNQUFNLEVBQ04sYUFBYSxFQUNiLFFBQVEsRUFDUixRQUFRLEdBQ1QsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFL0M7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxVQUFVLENBRTlCLElBQXFCLEVBQ3JCLEdBQVcsRUFDWCxLQUFRO0lBRVIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUssS0FBNkIsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3RELE9BQU87SUFDVCxDQUFDO0lBRUQsTUFBTSxrQkFBa0IsR0FBRyxVQUN6QixNQUFTLEVBQ1QsV0FBbUIsRUFDbkIsS0FBK0I7UUFFL0IsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFO1lBQ3pDLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLFFBQVEsRUFBRSxLQUFLO1lBQ2YsWUFBWSxFQUFFLElBQUk7WUFDbEIsS0FBSyxFQUFFLEtBQUs7U0FDYixDQUFDLENBQUM7SUFDTCxDQUFDLENBQUM7SUFDRixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUk7UUFBRSxJQUFJLENBQUMsSUFBSSxHQUFHLG9CQUFvQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM5RCxJQUFJLFFBQWtCLENBQUM7SUFDdkIsSUFBSSxDQUFDO1FBQ0gsUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUFDLE9BQU8sQ0FBTSxFQUFFLENBQUM7UUFDaEIsTUFBTSxJQUFJLGFBQWEsQ0FDckIsa0NBQWtDLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQ3BELENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbkMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN2QyxDQUFDO0FBRUQsTUFBTSxVQUFVLEVBQUUsQ0FDaEIsT0FHSSxzQkFBc0I7SUFFMUIsSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLHNCQUFzQixFQUFFLElBQUksQ0FBb0IsQ0FBQztJQUMxRSxPQUFPLEtBQUssQ0FDVixLQUFLLEVBQUUsRUFDUCxRQUFRLEVBQUUsRUFDVixRQUFRLEVBQUU7SUFDVixpREFBaUQ7SUFDakQsWUFBWSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQXVCLENBQUMsRUFDaEUsUUFBUSxDQUFDLFVBQVUsRUFBRSxJQUF1QixDQUFDLENBQzlDLENBQUM7QUFDSixDQUFDIiwiZmlsZSI6ImlkZW50aXR5L2RlY29yYXRvcnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwcm9wTWV0YWRhdGEsIHJlcXVpcmVkLCBNb2RlbCB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7XG4gIERlZmF1bHRTZXF1ZW5jZU9wdGlvbnMsXG4gIFNlcXVlbmNlT3B0aW9ucyxcbn0gZnJvbSBcIi4uL2ludGVyZmFjZXMvU2VxdWVuY2VPcHRpb25zXCI7XG5pbXBvcnQgeyBTZXF1ZW5jZSB9IGZyb20gXCIuLi9pbnRlcmZhY2VzL1NlcXVlbmNlXCI7XG5pbXBvcnQge1xuICBEQktleXMsXG4gIEludGVybmFsRXJyb3IsXG4gIG9uQ3JlYXRlLFxuICByZWFkb25seSxcbn0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBhcHBseSB9IGZyb20gXCJAZGVjYWYtdHMvcmVmbGVjdGlvblwiO1xuaW1wb3J0IHsgUmVwb3NpdG9yeSB9IGZyb20gXCIuLi9yZXBvc2l0b3J5L1JlcG9zaXRvcnlcIjtcbmltcG9ydCB7IGluZGV4IH0gZnJvbSBcIi4uL21vZGVsL2RlY29yYXRvcnNcIjtcbmltcG9ydCB7IHNlcXVlbmNlTmFtZUZvck1vZGVsIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuLyoqXG4gKiBAc3VtbWFyeSBQcmltYXJ5IEtleSBEZWNvcmF0b3JcbiAqIEBkZXNjcmlwdGlvbiBNYXJrcyB0aGUgcHJvcGVydHkgYXMgdGhlIHtAbGluayBNb2RlbH1zIHByaW1hcnkga2V5LlxuICogIEFsc28gbWFya3MgdGhlIHByb3BlcnR5IGFzIHtAbGluayB1bmlxdWV9IGFzIHtAcmVxdWlyZWR9IGFuZCBlbnN1cmVzIHRoZSBpbmRleCBpcyBjcmVhdGVkIHByb3Blcmx5IGFjY29yZGluZyB0byB0aGUgcHJvdmlkZWQge0BsaW5rIFNlcXVlbmNlfVxuICpcbiAqXG4gKlxuICogQGZ1bmN0aW9uIHBrXG4gKlxuICogQG1lbWJlck9mIG1vZHVsZTp3YWxsZXQtZGIuRGVjb3JhdG9yc1xuICpcbiAqIEBzZWUgdW5pcXVlXG4gKiBAc2VlIHJlcXVpcmVkXG4gKiBAc2VlIG9uXG4gKiBAcGFyYW0gZGF0YVxuICogQHBhcmFtIGtleVxuICogQHBhcmFtIG1vZGVsXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwa09uQ3JlYXRlPE0gZXh0ZW5kcyBNb2RlbCwgViBleHRlbmRzIFJlcG9zaXRvcnk8TSwgYW55Pj4oXG4gIHRoaXM6IFYsXG4gIGRhdGE6IFNlcXVlbmNlT3B0aW9ucyxcbiAga2V5OiBzdHJpbmcsXG4gIG1vZGVsOiBNXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKCFkYXRhLnR5cGUgfHwgKG1vZGVsIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW2tleV0pIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBzZXRQcmltYXJ5S2V5VmFsdWUgPSBmdW5jdGlvbiA8TSBleHRlbmRzIE1vZGVsPihcbiAgICB0YXJnZXQ6IE0sXG4gICAgcHJvcGVydHlLZXk6IHN0cmluZyxcbiAgICB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50XG4gICkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIHByb3BlcnR5S2V5LCB7XG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgd3JpdGFibGU6IGZhbHNlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgIH0pO1xuICB9O1xuICBpZiAoIWRhdGEubmFtZSkgZGF0YS5uYW1lID0gc2VxdWVuY2VOYW1lRm9yTW9kZWwobW9kZWwsIFwicGtcIik7XG4gIGxldCBzZXF1ZW5jZTogU2VxdWVuY2U7XG4gIHRyeSB7XG4gICAgc2VxdWVuY2UgPSBhd2FpdCB0aGlzLmFkYXB0ZXIuU2VxdWVuY2UoZGF0YSk7XG4gIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgYEZhaWxlZCB0byBpbnN0YW50aWF0ZSBTZXF1ZW5jZSAke2RhdGEubmFtZX06ICR7ZX1gXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IG5leHQgPSBhd2FpdCBzZXF1ZW5jZS5uZXh0KCk7XG4gIHNldFByaW1hcnlLZXlWYWx1ZShtb2RlbCwga2V5LCBuZXh0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBrKFxuICBvcHRzOiBPbWl0PFxuICAgIFNlcXVlbmNlT3B0aW9ucyxcbiAgICBcImN5Y2xlXCIgfCBcInN0YXJ0V2l0aFwiIHwgXCJpbmNyZW1lbnRCeVwiXG4gID4gPSBEZWZhdWx0U2VxdWVuY2VPcHRpb25zXG4pIHtcbiAgb3B0cyA9IE9iamVjdC5hc3NpZ24oe30sIERlZmF1bHRTZXF1ZW5jZU9wdGlvbnMsIG9wdHMpIGFzIFNlcXVlbmNlT3B0aW9ucztcbiAgcmV0dXJuIGFwcGx5KFxuICAgIGluZGV4KCksXG4gICAgcmVxdWlyZWQoKSxcbiAgICByZWFkb25seSgpLFxuICAgIC8vIHR5cGUoW1N0cmluZy5uYW1lLCBOdW1iZXIubmFtZSwgQmlnSW50Lm5hbWVdKSxcbiAgICBwcm9wTWV0YWRhdGEoUmVwb3NpdG9yeS5rZXkoREJLZXlzLklEKSwgb3B0cyBhcyBTZXF1ZW5jZU9wdGlvbnMpLFxuICAgIG9uQ3JlYXRlKHBrT25DcmVhdGUsIG9wdHMgYXMgU2VxdWVuY2VPcHRpb25zKVxuICApO1xufVxuIl19
@@ -1 +1,3 @@
1
- export*from"./decorators";
1
+ export * from "./decorators";
2
+
3
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9pZGVudGl0eS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGNBQWMsQ0FBQyIsImZpbGUiOiJpZGVudGl0eS9pbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2RlY29yYXRvcnNcIjtcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ import { Model } from "@decaf-ts/decorator-validation";
2
+ export declare function sequenceNameForModel<M extends Model>(model: M, ...args: string[]): string;
@@ -0,0 +1,6 @@
1
+ import { getTableName } from "../repository";
2
+ export function sequenceNameForModel(model, ...args) {
3
+ return [getTableName(model), ...args].join("_");
4
+ }
5
+
6
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9pZGVudGl0eS91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTdDLE1BQU0sVUFBVSxvQkFBb0IsQ0FDbEMsS0FBUSxFQUNSLEdBQUcsSUFBYztJQUVqQixPQUFPLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2xELENBQUMiLCJmaWxlIjoiaWRlbnRpdHkvdXRpbHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb2RlbCB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IGdldFRhYmxlTmFtZSB9IGZyb20gXCIuLi9yZXBvc2l0b3J5XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXF1ZW5jZU5hbWVGb3JNb2RlbDxNIGV4dGVuZHMgTW9kZWw+KFxuICBtb2RlbDogTSxcbiAgLi4uYXJnczogc3RyaW5nW11cbikge1xuICByZXR1cm4gW2dldFRhYmxlTmFtZShtb2RlbCksIC4uLmFyZ3NdLmpvaW4oXCJfXCIpO1xufVxuIl19
@@ -13,11 +13,13 @@ export * from "./identity";
13
13
  export * from "./interfaces";
14
14
  export * from "./model";
15
15
  export * from "./persistence";
16
+ export * from "./query";
16
17
  export * from "./repository";
18
+ export * from "./validators";
17
19
  /**
18
20
  * @summary stores the current package version
19
21
  * @description this is how you should document a constant
20
22
  * @const VERSION
21
23
  * @memberOf module:ts-workspace
22
24
  */
23
- export declare const VERSION = "0.1.1";
25
+ export declare const VERSION = "0.1.3";
package/lib/esm/index.js CHANGED
@@ -1 +1,30 @@
1
- export*from"./identity";export*from"./interfaces";export*from"./model";export*from"./persistence";export*from"./repository";let VERSION="0.1.1";export{VERSION};
1
+ import { InjectablesRegistry } from "./repository";
2
+ import { Injectables } from "@decaf-ts/injectable-decorators";
3
+ /**
4
+ * @summary Module summary
5
+ * @description Module description
6
+ * @module ts-workspace
7
+ */
8
+ /**
9
+ * @summary Namespace summary
10
+ * @description Namespace description
11
+ * @namespace Namespace
12
+ * @memberOf module:ts-workspace
13
+ */
14
+ export * from "./identity";
15
+ export * from "./interfaces";
16
+ export * from "./model";
17
+ export * from "./persistence";
18
+ export * from "./query";
19
+ export * from "./repository";
20
+ export * from "./validators";
21
+ Injectables.setRegistry(new InjectablesRegistry());
22
+ /**
23
+ * @summary stores the current package version
24
+ * @description this is how you should document a constant
25
+ * @const VERSION
26
+ * @memberOf module:ts-workspace
27
+ */
28
+ export const VERSION = "0.1.3";
29
+
30
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRTlEOzs7O0dBSUc7QUFFSDs7Ozs7R0FLRztBQUVILGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsY0FBYyxDQUFDO0FBRTdCLFdBQVcsQ0FBQyxXQUFXLENBQUMsSUFBSSxtQkFBbUIsRUFBRSxDQUFDLENBQUM7QUFFbkQ7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZXNSZWdpc3RyeSB9IGZyb20gXCIuL3JlcG9zaXRvcnlcIjtcbmltcG9ydCB7IEluamVjdGFibGVzIH0gZnJvbSBcIkBkZWNhZi10cy9pbmplY3RhYmxlLWRlY29yYXRvcnNcIjtcblxuLyoqXG4gKiBAc3VtbWFyeSBNb2R1bGUgc3VtbWFyeVxuICogQGRlc2NyaXB0aW9uIE1vZHVsZSBkZXNjcmlwdGlvblxuICogQG1vZHVsZSB0cy13b3Jrc3BhY2VcbiAqL1xuXG4vKipcbiAqIEBzdW1tYXJ5IE5hbWVzcGFjZSBzdW1tYXJ5XG4gKiBAZGVzY3JpcHRpb24gTmFtZXNwYWNlIGRlc2NyaXB0aW9uXG4gKiBAbmFtZXNwYWNlIE5hbWVzcGFjZVxuICogQG1lbWJlck9mIG1vZHVsZTp0cy13b3Jrc3BhY2VcbiAqL1xuXG5leHBvcnQgKiBmcm9tIFwiLi9pZGVudGl0eVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vaW50ZXJmYWNlc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vbW9kZWxcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3BlcnNpc3RlbmNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9xdWVyeVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcmVwb3NpdG9yeVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdmFsaWRhdG9yc1wiO1xuXG5JbmplY3RhYmxlcy5zZXRSZWdpc3RyeShuZXcgSW5qZWN0YWJsZXNSZWdpc3RyeSgpKTtcblxuLyoqXG4gKiBAc3VtbWFyeSBzdG9yZXMgdGhlIGN1cnJlbnQgcGFja2FnZSB2ZXJzaW9uXG4gKiBAZGVzY3JpcHRpb24gdGhpcyBpcyBob3cgeW91IHNob3VsZCBkb2N1bWVudCBhIGNvbnN0YW50XG4gKiBAY29uc3QgVkVSU0lPTlxuICogQG1lbWJlck9mIG1vZHVsZTp0cy13b3Jrc3BhY2VcbiAqL1xuZXhwb3J0IGNvbnN0IFZFUlNJT04gPSBcIjAuMS4zXCI7XG4iXX0=
@@ -0,0 +1,3 @@
1
+ export {};
2
+
3
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9pbnRlcmZhY2VzL0J1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJpbnRlcmZhY2VzL0J1aWxkZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBzdW1tYXJ5IFN0YW5kYXJkIEJ1aWxkZXIgQVBpIGZvciB0aGUgQnVpbGRlciBkZXNpZ24gcGF0dGVyblxuICogQGRlc2NyaXB0aW9uIEV4cG9zZSB0aGUgYnVpbGQgbWV0aG9kXG4gKlxuICogQGludGVyZmFjZSBCdWlsZGVyXG4gKlxuICogQGNhdGVnb3J5IENvbnN0cnVjdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkZXI8VD4ge1xuICAvKipcbiAgICogQHN1bW1hcnkgQnVpbGQgdGhlIE9iamVjdFxuICAgKlxuICAgKiBAbWV0aG9kXG4gICAqL1xuICBidWlsZCguLi5hcmdzOiBhbnlbXSk6IFQ7XG59XG4iXX0=
@@ -1,6 +1,8 @@
1
1
  /**
2
2
  * @summary processes query objects
3
3
  *
4
+ * @typedef V the output
5
+ *
4
6
  * @interface Executor
5
7
  *
6
8
  * @category Query
@@ -13,5 +15,5 @@ export interface Executor {
13
15
  *
14
16
  * @method
15
17
  */
16
- execute<V>(...args: any): Promise<V[]>;
18
+ execute<V>(...args: any): Promise<V>;
17
19
  }
@@ -0,0 +1,3 @@
1
+ export {};
2
+
3
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9pbnRlcmZhY2VzL0V4ZWN1dG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJmaWxlIjoiaW50ZXJmYWNlcy9FeGVjdXRvci5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHN1bW1hcnkgcHJvY2Vzc2VzIHF1ZXJ5IG9iamVjdHNcbiAqXG4gKiBAdHlwZWRlZiBWIHRoZSBvdXRwdXRcbiAqXG4gKiBAaW50ZXJmYWNlIEV4ZWN1dG9yXG4gKlxuICogQGNhdGVnb3J5IFF1ZXJ5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXhlY3V0b3Ige1xuICAvKipcbiAgICogQHN1bW1hcnkgUHJvY2Vzc2VzIGl0c2VsZlxuICAgKlxuICAgKiBAcGFyYW0ge2FueVtdfSBhcmdzXG4gICAqXG4gICAqIEBtZXRob2RcbiAgICovXG4gIGV4ZWN1dGU8Vj4oLi4uYXJnczogYW55KTogUHJvbWlzZTxWPjtcbn1cbiJdfQ==
@@ -0,0 +1,3 @@
1
+ export {};
2
+
3
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9pbnRlcmZhY2VzL09ic2VydmFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJpbnRlcmZhY2VzL09ic2VydmFibGUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZlciB9IGZyb20gXCIuL09ic2VydmVyXCI7XG5cbi8qKlxuICogQHN1bW1hcnkgT2JzZXJ2YWJsZSBBcGlcbiAqIEBkZXNjcmlwdGlvbiBtYW5hZ2UgYW5kIHVwZGF0ZSB7QGxpbmsgT2JzZXJ2ZXJ9c1xuICpcbiAqIEBpbnRlcmZhY2UgT2JzZXJ2YWJsZVxuICpcbiAqIEBjYXRlZ29yeSBPYnNlcnZhYmxlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIE9ic2VydmFibGUge1xuICAvKipcbiAgICogQHN1bW1hcnkgUmVnaXN0ZXIgbmV3IHtAbGluayBPYnNlcnZlcn1zXG4gICAqIEBwYXJhbSB7T2JzZXJ2ZXJ9IG9ic2VydmVyXG4gICAqXG4gICAqIEBtZXRob2RcbiAgICovXG4gIG9ic2VydmUob2JzZXJ2ZXI6IE9ic2VydmVyKTogdm9pZDtcbiAgLyoqXG4gICAqIEBzdW1tYXJ5IFVucmVnaXN0ZXIgbmV3IHtAbGluayBPYnNlcnZlcn1zXG4gICAqIEBwYXJhbSB7T2JzZXJ2ZXJ9IG9ic2VydmVyXG4gICAqXG4gICAqIEBtZXRob2RcbiAgICovXG4gIHVuT2JzZXJ2ZShvYnNlcnZlcjogT2JzZXJ2ZXIpOiB2b2lkO1xuICAvKipcbiAgICogQHN1bW1hcnkgaGF2ZSByZWdpc3RlcmVkIHtAbGluayBPYnNlcnZlcn1zIHVwZGF0ZSB0aGVtc2VsdmVzXG4gICAqIEBwYXJhbSB7YW55W119IGFyZ3NcbiAgICogQG1ldGhvZFxuICAgKi9cbiAgdXBkYXRlT2JzZXJ2ZXJzKC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTx2b2lkPjtcbn1cbiJdfQ==
@@ -0,0 +1,3 @@
1
+ export {};
2
+
3
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9pbnRlcmZhY2VzL09ic2VydmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJmaWxlIjoiaW50ZXJmYWNlcy9PYnNlcnZlci5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHN1bW1hcnkgT2JzZXJ2ZXIgQXBpXG4gKiBAZGVzY3JpcHRpb24gd2lsbCBiZSBjYWxsZWQgYnkgdGhlIHtAbGluayBPYnNlcnZhYmxlfVxuICpcbiAqIEBpbnRlcmZhY2UgT2JzZXJ2ZXJcbiAqXG4gKiBAY2F0ZWdvcnkgT2JzZXJ2YWJsZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPYnNlcnZlciB7XG4gIC8qKlxuICAgKiBAc3VtbWFyeSBSZWZyZXNoZXMgdGhlIE9ic2VydmVyXG4gICAqIEBwYXJhbSB7YW55W119IGFyZ3NcbiAgICogQG1ldGhvZFxuICAgKi9cbiAgcmVmcmVzaCguLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8dm9pZD47XG59XG4iXX0=
@@ -0,0 +1,6 @@
1
+ import { Condition, SelectSelector, WhereOption } from "../query";
2
+ import { OrderDirection } from "../repository";
3
+ export interface Queriable {
4
+ select(selector?: SelectSelector): WhereOption;
5
+ query<V>(condition: Condition, orderBy: string, order: OrderDirection, limit?: number, skip?: number): Promise<V>;
6
+ }
@@ -0,0 +1,3 @@
1
+ export {};
2
+
3
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9pbnRlcmZhY2VzL1F1ZXJpYWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwiZmlsZSI6ImludGVyZmFjZXMvUXVlcmlhYmxlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uZGl0aW9uLCBTZWxlY3RTZWxlY3RvciwgV2hlcmVPcHRpb24gfSBmcm9tIFwiLi4vcXVlcnlcIjtcbmltcG9ydCB7IE9yZGVyRGlyZWN0aW9uIH0gZnJvbSBcIi4uL3JlcG9zaXRvcnlcIjtcblxuZXhwb3J0IGludGVyZmFjZSBRdWVyaWFibGUge1xuICBzZWxlY3Qoc2VsZWN0b3I/OiBTZWxlY3RTZWxlY3Rvcik6IFdoZXJlT3B0aW9uO1xuXG4gIHF1ZXJ5PFY+KFxuICAgIGNvbmRpdGlvbjogQ29uZGl0aW9uLFxuICAgIG9yZGVyQnk6IHN0cmluZyxcbiAgICBvcmRlcjogT3JkZXJEaXJlY3Rpb24sXG4gICAgbGltaXQ/OiBudW1iZXIsXG4gICAgc2tpcD86IG51bWJlcixcbiAgKTogUHJvbWlzZTxWPjtcbn1cbiJdfQ==
@@ -1,11 +1,12 @@
1
1
  /**
2
2
  * @summary Executes a raw instruction in the Database
3
- * @typeDef T The input type
3
+ * @typeDef Q The input type
4
+ * @typeDef R The result type
4
5
  *
5
6
  * @interface RawExecutor
6
7
  * @category Query
7
8
  */
8
- export interface RawExecutor<T> {
9
+ export interface RawExecutor<Q> {
9
10
  /**
10
11
  * @summary Executes a raw instruction in the Database
11
12
  *
@@ -15,5 +16,5 @@ export interface RawExecutor<T> {
15
16
  *
16
17
  * @method
17
18
  */
18
- raw<V>(rawInput: T, ...args: any[]): Promise<V>;
19
+ raw<R>(rawInput: Q, ...args: any[]): Promise<R>;
19
20
  }
@@ -0,0 +1,3 @@
1
+ export {};
2
+
3
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9pbnRlcmZhY2VzL1Jhd0V4ZWN1dG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJmaWxlIjoiaW50ZXJmYWNlcy9SYXdFeGVjdXRvci5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHN1bW1hcnkgRXhlY3V0ZXMgYSByYXcgaW5zdHJ1Y3Rpb24gaW4gdGhlIERhdGFiYXNlXG4gKiBAdHlwZURlZiBRIFRoZSBpbnB1dCB0eXBlXG4gKiBAdHlwZURlZiBSIFRoZSByZXN1bHQgdHlwZVxuICpcbiAqIEBpbnRlcmZhY2UgUmF3RXhlY3V0b3JcbiAqIEBjYXRlZ29yeSBRdWVyeVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJhd0V4ZWN1dG9yPFE+IHtcbiAgLyoqXG4gICAqIEBzdW1tYXJ5IEV4ZWN1dGVzIGEgcmF3IGluc3RydWN0aW9uIGluIHRoZSBEYXRhYmFzZVxuICAgKlxuICAgKiBAdHlwZURlZiBWIHRoZSBleHBlY3RlZCBvdXRjb21lIG9mIHRoZSBpbnN0cnVjdGlvblxuICAgKiBAcGFyYW0gcmF3SW5wdXRcbiAgICogQHBhcmFtIGFyZ3NcbiAgICpcbiAgICogQG1ldGhvZFxuICAgKi9cbiAgcmF3PFI+KHJhd0lucHV0OiBRLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8Uj47XG59XG4iXX0=
@@ -11,6 +11,7 @@ export interface Sequence {
11
11
  *
12
12
  * @method
13
13
  */
14
- next(): Promise<string | number>;
15
- current(): Promise<string | number>;
14
+ next(): Promise<string | number | bigint>;
15
+ current(): Promise<string | number | bigint>;
16
+ range(count: number): Promise<(number | string | bigint)[]>;
16
17
  }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @summary Sequence
3
+ *
4
+ * @interface Sequence
5
+ *
6
+ * @category Sequences
7
+ */
8
+ export {};
9
+
10
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9pbnRlcmZhY2VzL1NlcXVlbmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRyIsImZpbGUiOiJpbnRlcmZhY2VzL1NlcXVlbmNlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAc3VtbWFyeSBTZXF1ZW5jZVxuICpcbiAqIEBpbnRlcmZhY2UgU2VxdWVuY2VcbiAqXG4gKiBAY2F0ZWdvcnkgU2VxdWVuY2VzXG4gKi9cblxuZXhwb3J0IGludGVyZmFjZSBTZXF1ZW5jZSB7XG4gIC8qKlxuICAgKiBAc3VtbWFyeSBnZW5lcmF0ZXMgdGhlIG5leHQgdmFsdWUgaW4gdGhlIHNlcXVlbmNlXG4gICAqXG4gICAqIEBtZXRob2RcbiAgICovXG4gIG5leHQoKTogUHJvbWlzZTxzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnQ+O1xuICBjdXJyZW50KCk6IFByb21pc2U8c3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50PjtcbiAgcmFuZ2UoY291bnQ6IG51bWJlcik6IFByb21pc2U8KG51bWJlciB8IHN0cmluZyB8IGJpZ2ludClbXT47XG59XG4iXX0=
@@ -7,5 +7,13 @@
7
7
  */
8
8
  export interface SequenceOptions {
9
9
  name?: string;
10
- startingValue?: string | number;
10
+ type: "Number" | "BigInt" | undefined;
11
+ startWith: number;
12
+ incrementBy: number;
13
+ minValue?: number;
14
+ maxValue?: number;
15
+ cycle: boolean;
11
16
  }
17
+ export declare const DefaultSequenceOptions: SequenceOptions;
18
+ export declare const NumericSequence: SequenceOptions;
19
+ export declare const BigIntSequence: SequenceOptions;
@@ -0,0 +1,20 @@
1
+ export const DefaultSequenceOptions = {
2
+ type: "Number",
3
+ startWith: 0,
4
+ incrementBy: 1,
5
+ cycle: false,
6
+ };
7
+ export const NumericSequence = {
8
+ type: "Number",
9
+ startWith: 0,
10
+ incrementBy: 1,
11
+ cycle: false,
12
+ };
13
+ export const BigIntSequence = {
14
+ type: "BigInt",
15
+ startWith: 0,
16
+ incrementBy: 1,
17
+ cycle: false,
18
+ };
19
+
20
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9pbnRlcmZhY2VzL1NlcXVlbmNlT3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFpQkEsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQW9CO0lBQ3JELElBQUksRUFBRSxRQUFRO0lBQ2QsU0FBUyxFQUFFLENBQUM7SUFDWixXQUFXLEVBQUUsQ0FBQztJQUNkLEtBQUssRUFBRSxLQUFLO0NBQ2IsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBb0I7SUFDOUMsSUFBSSxFQUFFLFFBQVE7SUFDZCxTQUFTLEVBQUUsQ0FBQztJQUNaLFdBQVcsRUFBRSxDQUFDO0lBQ2QsS0FBSyxFQUFFLEtBQUs7Q0FDYixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFvQjtJQUM3QyxJQUFJLEVBQUUsUUFBUTtJQUNkLFNBQVMsRUFBRSxDQUFDO0lBQ1osV0FBVyxFQUFFLENBQUM7SUFDZCxLQUFLLEVBQUUsS0FBSztDQUNiLENBQUMiLCJmaWxlIjoiaW50ZXJmYWNlcy9TZXF1ZW5jZU9wdGlvbnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEB0eXBlZGVmIFNlcXVlbmNlT3B0aW9uc1xuICpcbiAqIEBwcm9wIHtzdHJpbmcgfCBudW1iZXJ9IFtzdGFydGluZ1ZhbHVlXSBkZWZpbmVzIHRoZSBzdGFydGluZyB2YWx1ZSB3aGVuIHNlcXVlbmNlIGRvZXN0IG5vdCBleGlzdFxuICpcbiAqIEBjYXRlZ29yeSBTZXF1ZW5jZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXF1ZW5jZU9wdGlvbnMge1xuICBuYW1lPzogc3RyaW5nO1xuICB0eXBlOiBcIk51bWJlclwiIHwgXCJCaWdJbnRcIiB8IHVuZGVmaW5lZDtcbiAgc3RhcnRXaXRoOiBudW1iZXI7XG4gIGluY3JlbWVudEJ5OiBudW1iZXI7XG4gIG1pblZhbHVlPzogbnVtYmVyO1xuICBtYXhWYWx1ZT86IG51bWJlcjtcbiAgY3ljbGU6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBEZWZhdWx0U2VxdWVuY2VPcHRpb25zOiBTZXF1ZW5jZU9wdGlvbnMgPSB7XG4gIHR5cGU6IFwiTnVtYmVyXCIsXG4gIHN0YXJ0V2l0aDogMCxcbiAgaW5jcmVtZW50Qnk6IDEsXG4gIGN5Y2xlOiBmYWxzZSxcbn07XG5cbmV4cG9ydCBjb25zdCBOdW1lcmljU2VxdWVuY2U6IFNlcXVlbmNlT3B0aW9ucyA9IHtcbiAgdHlwZTogXCJOdW1iZXJcIixcbiAgc3RhcnRXaXRoOiAwLFxuICBpbmNyZW1lbnRCeTogMSxcbiAgY3ljbGU6IGZhbHNlLFxufTtcblxuZXhwb3J0IGNvbnN0IEJpZ0ludFNlcXVlbmNlOiBTZXF1ZW5jZU9wdGlvbnMgPSB7XG4gIHR5cGU6IFwiQmlnSW50XCIsXG4gIHN0YXJ0V2l0aDogMCxcbiAgaW5jcmVtZW50Qnk6IDEsXG4gIGN5Y2xlOiBmYWxzZSxcbn07XG4iXX0=
@@ -2,6 +2,7 @@ export * from "./Builder";
2
2
  export * from "./Executor";
3
3
  export * from "./Observable";
4
4
  export * from "./Observer";
5
+ export * from "./Queriable";
5
6
  export * from "./RawExecutor";
6
7
  export * from "./Sequence";
7
8
  export * from "./SequenceOptions";
@@ -1 +1,10 @@
1
- export*from"./Builder";export*from"./Executor";export*from"./Observable";export*from"./Observer";export*from"./RawExecutor";export*from"./Sequence";export*from"./SequenceOptions";
1
+ export * from "./Builder";
2
+ export * from "./Executor";
3
+ export * from "./Observable";
4
+ export * from "./Observer";
5
+ export * from "./Queriable";
6
+ export * from "./RawExecutor";
7
+ export * from "./Sequence";
8
+ export * from "./SequenceOptions";
9
+
10
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9pbnRlcmZhY2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsbUJBQW1CLENBQUMiLCJmaWxlIjoiaW50ZXJmYWNlcy9pbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL0J1aWxkZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL0V4ZWN1dG9yXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9PYnNlcnZhYmxlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9PYnNlcnZlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vUXVlcmlhYmxlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9SYXdFeGVjdXRvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vU2VxdWVuY2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL1NlcXVlbmNlT3B0aW9uc1wiO1xuIl19
@@ -1,6 +1,5 @@
1
- import { DBModel } from "@decaf-ts/db-decorators";
2
- import { ModelArg } from "@decaf-ts/decorator-validation";
3
- export declare abstract class BaseModel extends DBModel {
1
+ import { ModelArg, Model } from "@decaf-ts/decorator-validation";
2
+ export declare abstract class BaseModel extends Model {
4
3
  createdOn?: Date;
5
4
  updatedOn?: Date;
6
5
  protected constructor(arg?: ModelArg<BaseModel>);
@@ -1 +1,28 @@
1
- var __decorate=this&&this.__decorate||function(e,t,a,o){var d,r=arguments.length,c=r<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,a):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)c=Reflect.decorate(e,t,a,o);else for(var i=e.length-1;0<=i;i--)(d=e[i])&&(c=(r<3?d(c):3<r?d(t,a,c):d(t,a))||c);return 3<r&&c&&Object.defineProperty(t,a,c),c},__metadata=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};import{DBModel,DBOperations,timestamp}from"@decaf-ts/db-decorators";class BaseModel extends DBModel{constructor(e){super(e),this.createdOn=void 0,this.updatedOn=void 0}}__decorate([timestamp(DBOperations.CREATE),__metadata("design:type",Date)],BaseModel.prototype,"createdOn",void 0),__decorate([timestamp(),__metadata("design:type",Date)],BaseModel.prototype,"updatedOn",void 0);export{BaseModel};
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { DBOperations, timestamp } from "@decaf-ts/db-decorators";
11
+ import { Model } from "@decaf-ts/decorator-validation";
12
+ export class BaseModel extends Model {
13
+ constructor(arg) {
14
+ super(arg);
15
+ this.createdOn = undefined;
16
+ this.updatedOn = undefined;
17
+ }
18
+ }
19
+ __decorate([
20
+ timestamp(DBOperations.CREATE),
21
+ __metadata("design:type", Date)
22
+ ], BaseModel.prototype, "createdOn", void 0);
23
+ __decorate([
24
+ timestamp(),
25
+ __metadata("design:type", Date)
26
+ ], BaseModel.prototype, "updatedOn", void 0);
27
+
28
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9tb2RlbC9CYXNlTW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNsRSxPQUFPLEVBQVksS0FBSyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFakUsTUFBTSxPQUFnQixTQUFVLFNBQVEsS0FBSztJQU0zQyxZQUFzQixHQUF5QjtRQUM3QyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFMYixjQUFTLEdBQVUsU0FBUyxDQUFDO1FBRTdCLGNBQVMsR0FBVSxTQUFTLENBQUM7SUFJN0IsQ0FBQztDQUNGO0FBUEM7SUFEQyxTQUFTLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQzs4QkFDbkIsSUFBSTs0Q0FBYTtBQUU3QjtJQURDLFNBQVMsRUFBRTs4QkFDQSxJQUFJOzRDQUFhIiwiZmlsZSI6Im1vZGVsL0Jhc2VNb2RlbC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERCT3BlcmF0aW9ucywgdGltZXN0YW1wIH0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBNb2RlbEFyZywgTW9kZWwgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlTW9kZWwgZXh0ZW5kcyBNb2RlbCB7XG4gIEB0aW1lc3RhbXAoREJPcGVyYXRpb25zLkNSRUFURSlcbiAgY3JlYXRlZE9uPzogRGF0ZSA9IHVuZGVmaW5lZDtcbiAgQHRpbWVzdGFtcCgpXG4gIHVwZGF0ZWRPbj86IERhdGUgPSB1bmRlZmluZWQ7XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKGFyZz86IE1vZGVsQXJnPEJhc2VNb2RlbD4pIHtcbiAgICBzdXBlcihhcmcpO1xuICB9XG59XG4iXX0=
@@ -1,7 +1,8 @@
1
- import { DBModel, IRepository } from "@decaf-ts/db-decorators";
1
+ import { IRepository } from "@decaf-ts/db-decorators";
2
2
  import { OrderDirection } from "../repository/constants";
3
+ import { Model } from "@decaf-ts/decorator-validation";
3
4
  export declare function table(tableName: string): import("@decaf-ts/reflection").CustomDecorator<V>;
4
- export declare function column(columnName: string): import("@decaf-ts/reflection").CustomDecorator<V>;
5
+ export declare function column(columnName: string): PropertyDecorator;
5
6
  /**
6
7
  * @summary Index Decorator
7
8
  * @description properties decorated will the index in the
@@ -12,8 +13,8 @@ export declare function column(columnName: string): import("@decaf-ts/reflection
12
13
  *
13
14
  * @function index
14
15
  */
15
- export declare function index(compositions?: string[], directions?: OrderDirection[]): import("@decaf-ts/reflection").CustomDecorator<V>;
16
- export declare function uniqueOnCreateUpdate<T extends DBModel, V extends IRepository<T>, Y = any>(this: V, data: Y, key: string, model: T): Promise<void>;
16
+ export declare function index(compositions?: string[], directions?: OrderDirection[]): PropertyDecorator;
17
+ export declare function uniqueOnCreateUpdate<T extends Model, V extends IRepository<T>, Y = any>(this: V, data: Y, key: string, model: T): Promise<void>;
17
18
  /**
18
19
  * @summary Unique Decorator
19
20
  * @description Tags a property as unique.
@@ -23,4 +24,4 @@ export declare function uniqueOnCreateUpdate<T extends DBModel, V extends IRepos
23
24
  *
24
25
  * @memberOf module:wallet-db.Decorators
25
26
  */
26
- export declare function unique(): <TFunction extends Function, Y>(target: TFunction | object, propertyKey?: string | symbol, descriptor?: TypedPropertyDescriptor<Y>) => void;
27
+ export declare function unique(): (target: object, propertyKey?: any, descriptor?: any) => void;
@@ -1 +1,55 @@
1
- import{ConflictError,getDBKey,NotFoundError}from"@decaf-ts/db-decorators";import{apply,metadata}from"@decaf-ts/reflection";import{PersistenceKeys}from"../persistence/constants";import{getPersistenceKey}from"../persistence/decorators";function table(e){return metadata(getPersistenceKey(PersistenceKeys.TABLE),e)}function column(e){return metadata(getPersistenceKey(PersistenceKeys.COLUMN),e)}function index(e,t){return metadata(getDBKey(""+PersistenceKeys.INDEX+(e&&e.length?"."+e.join("."):"")),{directions:t,compositions:e})}async function uniqueOnCreateUpdate(e,t,r){if(r[t]){try{await this.read(r[t])}catch(e){if(e instanceof NotFoundError)return}throw new ConflictError(`model already exists with ${t} equal to `+JSON.stringify(r[t],void 0,2))}}function unique(){return apply(metadata(getDBKey(PersistenceKeys.UNIQUE),{}))}export{table,column,index,uniqueOnCreateUpdate,unique};
1
+ import { ConflictError, NotFoundError, Repository, } from "@decaf-ts/db-decorators";
2
+ import { apply, metadata } from "@decaf-ts/reflection";
3
+ import { PersistenceKeys } from "../persistence/constants";
4
+ import { propMetadata } from "@decaf-ts/decorator-validation";
5
+ import { Adapter } from "../persistence";
6
+ export function table(tableName) {
7
+ return metadata(Adapter.key(PersistenceKeys.TABLE), tableName);
8
+ }
9
+ export function column(columnName) {
10
+ return propMetadata(Adapter.key(PersistenceKeys.COLUMN), columnName);
11
+ }
12
+ /**
13
+ * @summary Index Decorator
14
+ * @description properties decorated will the index in the
15
+ * DB for performance in queries
16
+ *
17
+ * @param {OrderDirection[]} [directions]
18
+ * @param {string[]} [compositions]
19
+ *
20
+ * @function index
21
+ */
22
+ export function index(compositions, directions) {
23
+ return propMetadata(Repository.key(`${PersistenceKeys.INDEX}${compositions && compositions.length ? `.${compositions.join(".")}` : ""}`), {
24
+ directions: directions,
25
+ compositions: compositions,
26
+ });
27
+ }
28
+ export async function uniqueOnCreateUpdate(data, key, model) {
29
+ if (!model[key])
30
+ return;
31
+ try {
32
+ await this.read(model[key]);
33
+ }
34
+ catch (e) {
35
+ if (e instanceof NotFoundError)
36
+ return;
37
+ }
38
+ throw new ConflictError(`model already exists with ${key} equal to ${JSON.stringify(model[key], undefined, 2)}`);
39
+ }
40
+ /**
41
+ * @summary Unique Decorator
42
+ * @description Tags a property as unique.
43
+ * No other elements in that table can have the same property value
44
+ *
45
+ * @function unique
46
+ *
47
+ * @memberOf module:wallet-db.Decorators
48
+ */
49
+ export function unique() {
50
+ return apply(
51
+ // onCreateUpdate(uniqueOnCreateUpdate),
52
+ propMetadata(Repository.key(PersistenceKeys.UNIQUE), {}));
53
+ }
54
+
55
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9tb2RlbC9kZWNvcmF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxhQUFhLEVBRWIsYUFBYSxFQUNiLFVBQVUsR0FDWCxNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRzNELE9BQU8sRUFBUyxZQUFZLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFekMsTUFBTSxVQUFVLEtBQUssQ0FBQyxTQUFpQjtJQUNyQyxPQUFPLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUNqRSxDQUFDO0FBRUQsTUFBTSxVQUFVLE1BQU0sQ0FBQyxVQUFrQjtJQUN2QyxPQUFPLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUN2RSxDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxVQUFVLEtBQUssQ0FBQyxZQUF1QixFQUFFLFVBQTZCO0lBQzFFLE9BQU8sWUFBWSxDQUNqQixVQUFVLENBQUMsR0FBRyxDQUNaLEdBQUcsZUFBZSxDQUFDLEtBQUssR0FBRyxZQUFZLElBQUksWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNyRyxFQUNEO1FBQ0UsVUFBVSxFQUFFLFVBQVU7UUFDdEIsWUFBWSxFQUFFLFlBQVk7S0FDVixDQUNuQixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sQ0FBQyxLQUFLLFVBQVUsb0JBQW9CLENBSS9CLElBQU8sRUFBRSxHQUFXLEVBQUUsS0FBUTtJQUN2QyxJQUFJLENBQUUsS0FBYSxDQUFDLEdBQUcsQ0FBQztRQUFFLE9BQU87SUFDakMsSUFBSSxDQUFDO1FBQ0gsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFFLEtBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFBQyxPQUFPLENBQU0sRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxZQUFZLGFBQWE7WUFBRSxPQUFPO0lBQ3pDLENBQUM7SUFDRCxNQUFNLElBQUksYUFBYSxDQUNyQiw2QkFBNkIsR0FBRyxhQUFhLElBQUksQ0FBQyxTQUFTLENBQUUsS0FBYSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUNqRyxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLE1BQU07SUFDcEIsT0FBTyxLQUFLO0lBQ1Ysd0NBQXdDO0lBQ3hDLFlBQVksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FDekQsQ0FBQztBQUNKLENBQUMiLCJmaWxlIjoibW9kZWwvZGVjb3JhdG9ycy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbmZsaWN0RXJyb3IsXG4gIElSZXBvc2l0b3J5LFxuICBOb3RGb3VuZEVycm9yLFxuICBSZXBvc2l0b3J5LFxufSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbmltcG9ydCB7IGFwcGx5LCBtZXRhZGF0YSB9IGZyb20gXCJAZGVjYWYtdHMvcmVmbGVjdGlvblwiO1xuaW1wb3J0IHsgUGVyc2lzdGVuY2VLZXlzIH0gZnJvbSBcIi4uL3BlcnNpc3RlbmNlL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgSW5kZXhNZXRhZGF0YSB9IGZyb20gXCIuLi9yZXBvc2l0b3J5L3R5cGVzXCI7XG5pbXBvcnQgeyBPcmRlckRpcmVjdGlvbiB9IGZyb20gXCIuLi9yZXBvc2l0b3J5L2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgTW9kZWwsIHByb3BNZXRhZGF0YSB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IEFkYXB0ZXIgfSBmcm9tIFwiLi4vcGVyc2lzdGVuY2VcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmxlKHRhYmxlTmFtZTogc3RyaW5nKSB7XG4gIHJldHVybiBtZXRhZGF0YShBZGFwdGVyLmtleShQZXJzaXN0ZW5jZUtleXMuVEFCTEUpLCB0YWJsZU5hbWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29sdW1uKGNvbHVtbk5hbWU6IHN0cmluZykge1xuICByZXR1cm4gcHJvcE1ldGFkYXRhKEFkYXB0ZXIua2V5KFBlcnNpc3RlbmNlS2V5cy5DT0xVTU4pLCBjb2x1bW5OYW1lKTtcbn1cblxuLyoqXG4gKiBAc3VtbWFyeSBJbmRleCBEZWNvcmF0b3JcbiAqIEBkZXNjcmlwdGlvbiBwcm9wZXJ0aWVzIGRlY29yYXRlZCB3aWxsIHRoZSBpbmRleCBpbiB0aGVcbiAqIERCIGZvciBwZXJmb3JtYW5jZSBpbiBxdWVyaWVzXG4gKlxuICogQHBhcmFtIHtPcmRlckRpcmVjdGlvbltdfSBbZGlyZWN0aW9uc11cbiAqIEBwYXJhbSB7c3RyaW5nW119IFtjb21wb3NpdGlvbnNdXG4gKlxuICogQGZ1bmN0aW9uIGluZGV4XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbmRleChjb21wb3NpdGlvbnM/OiBzdHJpbmdbXSwgZGlyZWN0aW9ucz86IE9yZGVyRGlyZWN0aW9uW10pIHtcbiAgcmV0dXJuIHByb3BNZXRhZGF0YShcbiAgICBSZXBvc2l0b3J5LmtleShcbiAgICAgIGAke1BlcnNpc3RlbmNlS2V5cy5JTkRFWH0ke2NvbXBvc2l0aW9ucyAmJiBjb21wb3NpdGlvbnMubGVuZ3RoID8gYC4ke2NvbXBvc2l0aW9ucy5qb2luKFwiLlwiKX1gIDogXCJcIn1gXG4gICAgKSxcbiAgICB7XG4gICAgICBkaXJlY3Rpb25zOiBkaXJlY3Rpb25zLFxuICAgICAgY29tcG9zaXRpb25zOiBjb21wb3NpdGlvbnMsXG4gICAgfSBhcyBJbmRleE1ldGFkYXRhXG4gICk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB1bmlxdWVPbkNyZWF0ZVVwZGF0ZTxcbiAgVCBleHRlbmRzIE1vZGVsLFxuICBWIGV4dGVuZHMgSVJlcG9zaXRvcnk8VD4sXG4gIFkgPSBhbnksXG4+KHRoaXM6IFYsIGRhdGE6IFksIGtleTogc3RyaW5nLCBtb2RlbDogVCk6IFByb21pc2U8dm9pZD4ge1xuICBpZiAoIShtb2RlbCBhcyBhbnkpW2tleV0pIHJldHVybjtcbiAgdHJ5IHtcbiAgICBhd2FpdCB0aGlzLnJlYWQoKG1vZGVsIGFzIGFueSlba2V5XSk7XG4gIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgIGlmIChlIGluc3RhbmNlb2YgTm90Rm91bmRFcnJvcikgcmV0dXJuO1xuICB9XG4gIHRocm93IG5ldyBDb25mbGljdEVycm9yKFxuICAgIGBtb2RlbCBhbHJlYWR5IGV4aXN0cyB3aXRoICR7a2V5fSBlcXVhbCB0byAke0pTT04uc3RyaW5naWZ5KChtb2RlbCBhcyBhbnkpW2tleV0sIHVuZGVmaW5lZCwgMil9YFxuICApO1xufVxuXG4vKipcbiAqIEBzdW1tYXJ5IFVuaXF1ZSBEZWNvcmF0b3JcbiAqIEBkZXNjcmlwdGlvbiBUYWdzIGEgcHJvcGVydHkgYXMgdW5pcXVlLlxuICogIE5vIG90aGVyIGVsZW1lbnRzIGluIHRoYXQgdGFibGUgY2FuIGhhdmUgdGhlIHNhbWUgcHJvcGVydHkgdmFsdWVcbiAqXG4gKiBAZnVuY3Rpb24gdW5pcXVlXG4gKlxuICogQG1lbWJlck9mIG1vZHVsZTp3YWxsZXQtZGIuRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdW5pcXVlKCkge1xuICByZXR1cm4gYXBwbHkoXG4gICAgLy8gb25DcmVhdGVVcGRhdGUodW5pcXVlT25DcmVhdGVVcGRhdGUpLFxuICAgIHByb3BNZXRhZGF0YShSZXBvc2l0b3J5LmtleShQZXJzaXN0ZW5jZUtleXMuVU5JUVVFKSwge30pXG4gICk7XG59XG4iXX0=
@@ -1 +1,4 @@
1
- export*from"./BaseModel";export*from"./decorators";
1
+ export * from "./BaseModel";
2
+ export * from "./decorators";
3
+
4
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9tb2RlbC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGNBQWMsQ0FBQyIsImZpbGUiOiJtb2RlbC9pbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL0Jhc2VNb2RlbFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZGVjb3JhdG9yc1wiO1xuIl19
@@ -1,31 +1,59 @@
1
- import { BaseError, DBModel } from "@decaf-ts/db-decorators";
1
+ import { BaseError } from "@decaf-ts/db-decorators";
2
2
  import { Observer } from "../interfaces/Observer";
3
3
  import { Sequence } from "../interfaces/Sequence";
4
- import { Constructor } from "@decaf-ts/decorator-validation";
4
+ import { Constructor, Model } from "@decaf-ts/decorator-validation";
5
5
  import { SequenceOptions } from "../interfaces/SequenceOptions";
6
6
  import { RawExecutor } from "../interfaces/RawExecutor";
7
7
  import { Observable } from "../interfaces/Observable";
8
- export declare abstract class Adapter<Y, T = string> implements RawExecutor<T>, Observable {
8
+ import { Query } from "../query/Query";
9
+ import { Statement } from "../query/Statement";
10
+ import { ClauseFactory } from "../query/ClauseFactory";
11
+ import { Condition } from "../query";
12
+ /**
13
+ * @summary Abstract Decaf-ts Persistence Adapter Class
14
+ * @description Offers the base implementation for all Adapter Classes
15
+ * and manages them various registered {@link Adapter}s
16
+ *
17
+ * @typedef Y the underlying persistence object type
18
+ * @typedef Q The query object the adapter uses
19
+ *
20
+ * @param {Y} native the underlying persistence object
21
+ * @param {string} flavour the under witch the persistence adapter should be stored
22
+ *
23
+ * @class Adapter
24
+ * @implements RawExecutor
25
+ * @implements Observable
26
+ */
27
+ export declare abstract class Adapter<Y, Q> implements RawExecutor<Q>, Observable {
28
+ readonly flavour: string;
9
29
  private static _current;
10
30
  private static _cache;
11
- private observers;
31
+ private readonly _observers;
12
32
  private readonly _native;
13
33
  get native(): Y;
14
- constructor(native: Y, flavour: string);
34
+ protected constructor(native: Y, flavour: string);
35
+ Query<M extends Model>(): Query<Q, M>;
36
+ abstract parseCondition(condition: Condition): Q;
37
+ abstract get Statement(): Statement<Q>;
38
+ abstract get Clauses(): ClauseFactory<Y, Q>;
15
39
  protected isReserved(attr: string): boolean;
16
40
  protected abstract parseError(err: Error): BaseError;
17
- abstract createIndex(...args: any[]): Promise<any>;
18
- abstract getSequence<V extends DBModel>(model: V, sequence: Constructor<Sequence>, options?: SequenceOptions): Promise<Sequence>;
19
- prepare<V extends DBModel>(model: V, pk: string | number): Promise<{
41
+ abstract createIndex<M extends Model>(...models: M[]): Promise<any>;
42
+ abstract Sequence(options: SequenceOptions): Promise<Sequence>;
43
+ prepare<M extends Model>(model: M, pk: string | number): {
20
44
  record: Record<string, any>;
21
45
  id: string;
22
- }>;
23
- revert<V extends DBModel>(obj: Record<string, any>, clazz: string | Constructor<V>, pk: string, id: string | number): Promise<V>;
46
+ };
47
+ revert<M extends Model>(obj: Record<string, any>, clazz: string | Constructor<M>, pk: string, id: string | number | bigint): M;
24
48
  abstract create(tableName: string, id: string | number, model: Record<string, any>, ...args: any[]): Promise<Record<string, any>>;
25
- abstract read(tableName: string, id: string | number, ...args: any[]): Promise<Record<string, any>>;
49
+ createAll(tableName: string, id: (string | number)[], model: Record<string, any>[], ...args: any[]): Promise<Record<string, any>[]>;
50
+ abstract read(tableName: string, id: string | number | bigint, ...args: any[]): Promise<Record<string, any>>;
51
+ readAll(tableName: string, id: (string | number | bigint)[], ...args: any[]): Promise<Record<string, any>[]>;
26
52
  abstract update(tableName: string, id: string | number, model: Record<string, any>, ...args: any[]): Promise<Record<string, any>>;
27
- abstract delete(tableName: string, id: string | number, ...args: any[]): Promise<Record<string, any>>;
28
- abstract raw<V>(rawInput: T, ...args: any[]): Promise<V>;
53
+ updateAll(tableName: string, id: string[] | number[], model: Record<string, any>[], ...args: any[]): Promise<Record<string, any>[]>;
54
+ abstract delete(tableName: string, id: string | number | bigint, ...args: any[]): Promise<Record<string, any>>;
55
+ deleteAll(tableName: string, id: (string | number | bigint)[], ...args: any[]): Promise<Record<string, any>[]>;
56
+ abstract raw<R>(rawInput: Q, ...args: any[]): Promise<R>;
29
57
  /**
30
58
  * @summary Registers an {@link Observer}
31
59
  * @param {Observer} observer
@@ -46,6 +74,7 @@ export declare abstract class Adapter<Y, T = string> implements RawExecutor<T>,
46
74
  */
47
75
  updateObservers(...args: any[]): Promise<void>;
48
76
  static get current(): Adapter<any, any>;
49
- static get(flavour: any): Adapter<any> | undefined;
77
+ static get<Y, Q>(flavour: any): Adapter<Y, Q> | undefined;
50
78
  static setCurrent(flavour: string): void;
79
+ static key(key: string): string;
51
80
  }