@decaf-ts/core 0.4.1 → 0.5.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 (169) hide show
  1. package/dist/core.cjs +179 -168
  2. package/dist/core.esm.cjs +134 -134
  3. package/lib/esm/identity/decorators.d.ts +3 -2
  4. package/lib/esm/identity/decorators.js +7 -5
  5. package/lib/esm/index.d.ts +1 -1
  6. package/lib/esm/index.js +1 -1
  7. package/lib/esm/interfaces/ErrorParser.d.ts +4 -0
  8. package/lib/esm/interfaces/ErrorParser.js +2 -0
  9. package/lib/esm/interfaces/index.d.ts +1 -0
  10. package/lib/esm/interfaces/index.js +2 -1
  11. package/lib/esm/model/construction.d.ts +13 -10
  12. package/lib/esm/model/construction.js +8 -3
  13. package/lib/esm/model/decorators.d.ts +9 -8
  14. package/lib/esm/model/decorators.js +34 -14
  15. package/lib/esm/model/index.d.ts +1 -1
  16. package/lib/esm/model/index.js +3 -2
  17. package/lib/esm/persistence/Adapter.d.ts +14 -13
  18. package/lib/esm/persistence/Adapter.js +37 -26
  19. package/lib/esm/query/Clause.d.ts +2 -2
  20. package/lib/esm/query/ClauseFactory.d.ts +3 -3
  21. package/lib/esm/query/ClauseFactory.js +1 -1
  22. package/lib/esm/query/Paginator.d.ts +2 -2
  23. package/lib/esm/query/Paginator.js +4 -3
  24. package/lib/esm/query/Query.d.ts +1 -1
  25. package/lib/esm/query/Query.js +1 -1
  26. package/lib/esm/query/Statement.d.ts +3 -3
  27. package/lib/esm/query/Statement.js +1 -1
  28. package/lib/esm/query/errors.js +3 -3
  29. package/lib/esm/ram/RamAdapter.d.ts +41 -0
  30. package/lib/esm/ram/RamAdapter.js +230 -0
  31. package/lib/esm/ram/RamClauseFactory.d.ts +17 -0
  32. package/lib/esm/ram/RamClauseFactory.js +92 -0
  33. package/lib/esm/ram/RamContext.d.ts +5 -0
  34. package/lib/esm/ram/RamContext.js +7 -0
  35. package/lib/esm/ram/RamPaginator.d.ts +7 -0
  36. package/lib/esm/ram/RamPaginator.js +20 -0
  37. package/lib/esm/ram/RamSequence.d.ts +50 -0
  38. package/lib/esm/ram/RamSequence.js +130 -0
  39. package/lib/esm/ram/RamStatement.d.ts +8 -0
  40. package/lib/esm/ram/RamStatement.js +18 -0
  41. package/lib/esm/ram/clauses/FromClause.d.ts +7 -0
  42. package/lib/esm/ram/clauses/FromClause.js +11 -0
  43. package/lib/esm/ram/clauses/InsertClause.d.ts +7 -0
  44. package/lib/esm/ram/clauses/InsertClause.js +13 -0
  45. package/lib/esm/ram/clauses/OrderByClause.d.ts +7 -0
  46. package/lib/esm/ram/clauses/OrderByClause.js +39 -0
  47. package/lib/esm/ram/clauses/SelectClause.d.ts +7 -0
  48. package/lib/esm/ram/clauses/SelectClause.js +16 -0
  49. package/lib/esm/ram/clauses/ValuesClause.d.ts +7 -0
  50. package/lib/esm/ram/clauses/ValuesClause.js +12 -0
  51. package/lib/esm/ram/clauses/WhereClause.d.ts +7 -0
  52. package/lib/esm/ram/clauses/WhereClause.js +11 -0
  53. package/lib/esm/ram/clauses/index.d.ts +6 -0
  54. package/lib/esm/ram/clauses/index.js +7 -0
  55. package/lib/esm/ram/index.d.ts +9 -0
  56. package/lib/esm/ram/index.js +10 -0
  57. package/lib/esm/ram/model/RamSequence.d.ts +20 -0
  58. package/lib/esm/ram/model/RamSequence.js +33 -0
  59. package/lib/esm/ram/model/index.d.ts +1 -0
  60. package/lib/esm/ram/model/index.js +2 -0
  61. package/lib/esm/ram/types.d.ts +17 -0
  62. package/lib/esm/ram/types.js +2 -0
  63. package/lib/esm/repository/Repository.d.ts +6 -3
  64. package/lib/esm/repository/Repository.js +27 -15
  65. package/lib/esm/repository/errors.d.ts +6 -0
  66. package/lib/esm/repository/errors.js +12 -2
  67. package/lib/esm/repository/index.d.ts +0 -1
  68. package/lib/esm/repository/index.js +1 -2
  69. package/lib/identity/decorators.cjs +10 -8
  70. package/lib/identity/decorators.d.ts +3 -2
  71. package/lib/identity/index.cjs +1 -1
  72. package/lib/identity/utils.cjs +3 -3
  73. package/lib/index.cjs +2 -2
  74. package/lib/index.d.ts +1 -1
  75. package/lib/interfaces/ErrorParser.cjs +3 -0
  76. package/lib/interfaces/ErrorParser.d.ts +4 -0
  77. package/lib/interfaces/index.cjs +2 -1
  78. package/lib/interfaces/index.d.ts +1 -0
  79. package/lib/model/IdentifiedBaseModel.cjs +1 -1
  80. package/lib/model/construction.cjs +11 -6
  81. package/lib/model/construction.d.ts +13 -10
  82. package/lib/model/decorators.cjs +39 -19
  83. package/lib/model/decorators.d.ts +9 -8
  84. package/lib/model/index.cjs +3 -2
  85. package/lib/model/index.d.ts +1 -1
  86. package/lib/persistence/Adapter.cjs +37 -26
  87. package/lib/persistence/Adapter.d.ts +14 -13
  88. package/lib/persistence/Sequence.cjs +2 -2
  89. package/lib/persistence/decorators.cjs +1 -1
  90. package/lib/persistence/index.cjs +1 -1
  91. package/lib/query/Clause.cjs +1 -1
  92. package/lib/query/Clause.d.ts +2 -2
  93. package/lib/query/ClauseFactory.cjs +1 -1
  94. package/lib/query/ClauseFactory.d.ts +3 -3
  95. package/lib/query/Condition.cjs +1 -1
  96. package/lib/query/Paginator.cjs +4 -3
  97. package/lib/query/Paginator.d.ts +2 -2
  98. package/lib/query/Query.cjs +1 -1
  99. package/lib/query/Query.d.ts +1 -1
  100. package/lib/query/Statement.cjs +3 -3
  101. package/lib/query/Statement.d.ts +3 -3
  102. package/lib/query/clauses/FromClause.cjs +3 -3
  103. package/lib/query/clauses/GroupByClause.cjs +2 -2
  104. package/lib/query/clauses/InsertClause.cjs +3 -3
  105. package/lib/query/clauses/LimitClause.cjs +2 -2
  106. package/lib/query/clauses/OffsetClause.cjs +2 -2
  107. package/lib/query/clauses/OrderByClause.cjs +2 -2
  108. package/lib/query/clauses/SelectClause.cjs +2 -2
  109. package/lib/query/clauses/SelectorBasedClause.cjs +2 -2
  110. package/lib/query/clauses/ValuesClause.cjs +3 -3
  111. package/lib/query/clauses/WhereClause.cjs +4 -4
  112. package/lib/query/clauses/index.cjs +1 -1
  113. package/lib/query/errors.cjs +3 -3
  114. package/lib/query/index.cjs +1 -1
  115. package/lib/ram/RamAdapter.cjs +268 -0
  116. package/lib/ram/RamAdapter.d.ts +41 -0
  117. package/lib/ram/RamClauseFactory.cjs +96 -0
  118. package/lib/ram/RamClauseFactory.d.ts +17 -0
  119. package/lib/ram/RamContext.cjs +11 -0
  120. package/lib/ram/RamContext.d.ts +5 -0
  121. package/lib/ram/RamPaginator.cjs +24 -0
  122. package/lib/ram/RamPaginator.d.ts +7 -0
  123. package/lib/ram/RamSequence.cjs +135 -0
  124. package/lib/ram/RamSequence.d.ts +50 -0
  125. package/lib/ram/RamStatement.cjs +22 -0
  126. package/lib/ram/RamStatement.d.ts +8 -0
  127. package/lib/ram/clauses/FromClause.cjs +15 -0
  128. package/lib/ram/clauses/FromClause.d.ts +7 -0
  129. package/lib/ram/clauses/InsertClause.cjs +17 -0
  130. package/lib/ram/clauses/InsertClause.d.ts +7 -0
  131. package/lib/ram/clauses/OrderByClause.cjs +43 -0
  132. package/lib/ram/clauses/OrderByClause.d.ts +7 -0
  133. package/lib/ram/clauses/SelectClause.cjs +20 -0
  134. package/lib/ram/clauses/SelectClause.d.ts +7 -0
  135. package/lib/ram/clauses/ValuesClause.cjs +16 -0
  136. package/lib/ram/clauses/ValuesClause.d.ts +7 -0
  137. package/lib/ram/clauses/WhereClause.cjs +15 -0
  138. package/lib/ram/clauses/WhereClause.d.ts +7 -0
  139. package/lib/ram/clauses/index.cjs +23 -0
  140. package/lib/ram/clauses/index.d.ts +6 -0
  141. package/lib/ram/index.cjs +26 -0
  142. package/lib/ram/index.d.ts +9 -0
  143. package/lib/ram/model/RamSequence.cjs +36 -0
  144. package/lib/ram/model/RamSequence.d.ts +20 -0
  145. package/lib/ram/model/index.cjs +18 -0
  146. package/lib/ram/model/index.d.ts +1 -0
  147. package/lib/ram/types.cjs +3 -0
  148. package/lib/ram/types.d.ts +17 -0
  149. package/lib/repository/Repository.cjs +32 -20
  150. package/lib/repository/Repository.d.ts +6 -3
  151. package/lib/repository/decorators.cjs +1 -1
  152. package/lib/repository/errors.cjs +15 -3
  153. package/lib/repository/errors.d.ts +6 -0
  154. package/lib/repository/index.cjs +1 -2
  155. package/lib/repository/index.d.ts +0 -1
  156. package/lib/repository/injectables.cjs +3 -3
  157. package/lib/repository/utils.cjs +3 -3
  158. package/lib/validators/ClauseSequenceValidator.cjs +5 -5
  159. package/lib/validators/decorators.cjs +2 -2
  160. package/lib/validators/index.cjs +1 -1
  161. package/package.json +10 -3
  162. package/lib/esm/model/User.d.ts +0 -9
  163. package/lib/esm/model/User.js +0 -34
  164. package/lib/esm/repository/Context.d.ts +0 -10
  165. package/lib/esm/repository/Context.js +0 -12
  166. package/lib/model/User.cjs +0 -37
  167. package/lib/model/User.d.ts +0 -9
  168. package/lib/repository/Context.cjs +0 -16
  169. package/lib/repository/Context.d.ts +0 -10
@@ -0,0 +1,130 @@
1
+ import { Sequence as Seq } from "./model/RamSequence";
2
+ import { InternalError, NotFoundError } from "@decaf-ts/db-decorators";
3
+ import { Sequence } from "../persistence";
4
+ import { Repository } from "../repository";
5
+ export function parseSequenceValue(type, value) {
6
+ switch (type) {
7
+ case "Number":
8
+ return typeof value === "string"
9
+ ? parseInt(value)
10
+ : typeof value === "number"
11
+ ? value
12
+ : BigInt(value);
13
+ case "BigInt":
14
+ return BigInt(value);
15
+ default:
16
+ throw new InternalError("Should never happen");
17
+ }
18
+ }
19
+ /**
20
+ * @summary Abstract implementation of a Sequence
21
+ * @description provides the basic functionality for {@link Sequence}s
22
+ *
23
+ * @param {SequenceOptions} options
24
+ *
25
+ * @class CouchDBSequence
26
+ * @implements Sequence
27
+ *
28
+ * @category Sequences
29
+ */
30
+ export class RamSequence extends Sequence {
31
+ constructor(options, adapter) {
32
+ super(options);
33
+ this.repo = Repository.forModel(Seq, adapter.flavour);
34
+ }
35
+ /**
36
+ * @summary Retrieves the current value for the sequence
37
+ * @protected
38
+ */
39
+ async current() {
40
+ const { name, startWith } = this.options;
41
+ try {
42
+ const sequence = await this.repo.read(name);
43
+ return this.parse(sequence.current);
44
+ }
45
+ catch (e) {
46
+ if (e instanceof NotFoundError) {
47
+ if (typeof startWith === "undefined")
48
+ throw new InternalError("Starting value is not defined for a non existing sequence");
49
+ try {
50
+ return this.parse(startWith);
51
+ }
52
+ catch (e) {
53
+ throw new InternalError(`Failed to parse initial value for sequence ${startWith}: ${e}`);
54
+ }
55
+ }
56
+ throw new InternalError(`Failed to retrieve current value for sequence ${name}: ${e}`);
57
+ }
58
+ }
59
+ /**
60
+ * @summary Parses the {@link Sequence} value
61
+ *
62
+ * @protected
63
+ * @param value
64
+ */
65
+ parse(value) {
66
+ return parseSequenceValue(this.options.type, value);
67
+ }
68
+ /**
69
+ * @summary increments the sequence
70
+ * @description Sequence specific implementation
71
+ *
72
+ * @param {string | number | bigint} current
73
+ * @param count
74
+ * @protected
75
+ */
76
+ async increment(current, count) {
77
+ const { type, incrementBy, name } = this.options;
78
+ let next;
79
+ const toIncrementBy = count || incrementBy;
80
+ if (toIncrementBy % incrementBy !== 0)
81
+ throw new InternalError(`Value to increment does not consider the incrementBy setting: ${incrementBy}`);
82
+ switch (type) {
83
+ case "Number":
84
+ next = this.parse(current) + toIncrementBy;
85
+ break;
86
+ case "BigInt":
87
+ next = this.parse(current) + BigInt(toIncrementBy);
88
+ break;
89
+ default:
90
+ throw new InternalError("Should never happen");
91
+ }
92
+ let seq;
93
+ const repo = this.repo.override({
94
+ ignoredValidationProperties: ["updatedOn"],
95
+ });
96
+ try {
97
+ seq = await repo.update(new Seq({ id: name, current: next }));
98
+ }
99
+ catch (e) {
100
+ if (!(e instanceof NotFoundError)) {
101
+ throw e;
102
+ }
103
+ seq = await repo.create(new Seq({ id: name, current: next }));
104
+ }
105
+ return seq.current;
106
+ }
107
+ /**
108
+ * @summary Generates the next value in th sequence
109
+ * @description calls {@link Sequence#parse} on the current value
110
+ * followed by {@link Sequence#increment}
111
+ *
112
+ */
113
+ async next() {
114
+ const current = await this.current();
115
+ return this.increment(current);
116
+ }
117
+ async range(count) {
118
+ const current = (await this.current());
119
+ const incrementBy = this.parse(this.options.incrementBy);
120
+ const next = await this.increment(current, this.parse(count) * incrementBy);
121
+ const range = [];
122
+ for (let i = 1; i <= count; i++) {
123
+ range.push(current + incrementBy * this.parse(i));
124
+ }
125
+ if (range[range.length - 1] !== next)
126
+ throw new InternalError("Miscalculation of range");
127
+ return range;
128
+ }
129
+ }
130
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmFtU2VxdWVuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcmFtL1JhbVNlcXVlbmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLElBQUksR0FBRyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHMUMsT0FBTyxFQUFRLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRCxNQUFNLFVBQVUsa0JBQWtCLENBQ2hDLElBQXFDLEVBQ3JDLEtBQStCO0lBRS9CLFFBQVEsSUFBSSxFQUFFLENBQUM7UUFDYixLQUFLLFFBQVE7WUFDWCxPQUFPLE9BQU8sS0FBSyxLQUFLLFFBQVE7Z0JBQzlCLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO2dCQUNqQixDQUFDLENBQUMsT0FBTyxLQUFLLEtBQUssUUFBUTtvQkFDekIsQ0FBQyxDQUFDLEtBQUs7b0JBQ1AsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QixLQUFLLFFBQVE7WUFDWCxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QjtZQUNFLE1BQU0sSUFBSSxhQUFhLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUNuRCxDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLE9BQU8sV0FBWSxTQUFRLFFBQVE7SUFHdkMsWUFBWSxPQUF3QixFQUFFLE9BQW1CO1FBQ3ZELEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRDs7O09BR0c7SUFD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RSxDQUFDO1FBRUQsT0FBTyxHQUFHLENBQUMsT0FBbUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsSUFBSTtRQUNSLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFhO1FBQ3ZCLE1BQU0sT0FBTyxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQVcsQ0FBQztRQUNqRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFXLENBQUM7UUFDbkUsTUFBTSxJQUFJLEdBQTZCLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FDekQsT0FBTyxFQUNOLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFZLEdBQUcsV0FBVyxDQUM1QyxDQUFDO1FBQ0YsTUFBTSxLQUFLLEdBQWlDLEVBQUUsQ0FBQztRQUMvQyxLQUFLLElBQUksQ0FBQyxHQUFXLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDeEMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsV0FBVyxHQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFZLENBQUMsQ0FBQztRQUNoRSxDQUFDO1FBQ0QsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxJQUFJO1lBQ2xDLE1BQU0sSUFBSSxhQUFhLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUNyRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNlcXVlbmNlIGFzIFNlcSB9IGZyb20gXCIuL21vZGVsL1JhbVNlcXVlbmNlXCI7XG5pbXBvcnQgeyBJbnRlcm5hbEVycm9yLCBOb3RGb3VuZEVycm9yIH0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBTZXF1ZW5jZSB9IGZyb20gXCIuLi9wZXJzaXN0ZW5jZVwiO1xuaW1wb3J0IHsgU2VxdWVuY2VPcHRpb25zIH0gZnJvbSBcIi4uL2ludGVyZmFjZXNcIjtcbmltcG9ydCB7IFJhbUFkYXB0ZXIgfSBmcm9tIFwiLi9SYW1BZGFwdGVyXCI7XG5pbXBvcnQgeyBSZXBvLCBSZXBvc2l0b3J5IH0gZnJvbSBcIi4uL3JlcG9zaXRvcnlcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlU2VxdWVuY2VWYWx1ZShcbiAgdHlwZTogXCJOdW1iZXJcIiB8IFwiQmlnSW50XCIgfCB1bmRlZmluZWQsXG4gIHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnRcbik6IHN0cmluZyB8IG51bWJlciB8IGJpZ2ludCB7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgXCJOdW1iZXJcIjpcbiAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCJcbiAgICAgICAgPyBwYXJzZUludCh2YWx1ZSlcbiAgICAgICAgOiB0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCJcbiAgICAgICAgICA/IHZhbHVlXG4gICAgICAgICAgOiBCaWdJbnQodmFsdWUpO1xuICAgIGNhc2UgXCJCaWdJbnRcIjpcbiAgICAgIHJldHVybiBCaWdJbnQodmFsdWUpO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcIlNob3VsZCBuZXZlciBoYXBwZW5cIik7XG4gIH1cbn1cblxuLyoqXG4gKiBAc3VtbWFyeSBBYnN0cmFjdCBpbXBsZW1lbnRhdGlvbiBvZiBhIFNlcXVlbmNlXG4gKiBAZGVzY3JpcHRpb24gcHJvdmlkZXMgdGhlIGJhc2ljIGZ1bmN0aW9uYWxpdHkgZm9yIHtAbGluayBTZXF1ZW5jZX1zXG4gKlxuICogQHBhcmFtIHtTZXF1ZW5jZU9wdGlvbnN9IG9wdGlvbnNcbiAqXG4gKiBAY2xhc3MgQ291Y2hEQlNlcXVlbmNlXG4gKiBAaW1wbGVtZW50cyBTZXF1ZW5jZVxuICpcbiAqIEBjYXRlZ29yeSBTZXF1ZW5jZXNcbiAqL1xuZXhwb3J0IGNsYXNzIFJhbVNlcXVlbmNlIGV4dGVuZHMgU2VxdWVuY2Uge1xuICBwcm90ZWN0ZWQgcmVwbzogUmVwbzxTZXE+O1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFNlcXVlbmNlT3B0aW9ucywgYWRhcHRlcjogUmFtQWRhcHRlcikge1xuICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgIHRoaXMucmVwbyA9IFJlcG9zaXRvcnkuZm9yTW9kZWwoU2VxLCBhZGFwdGVyLmZsYXZvdXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IFJldHJpZXZlcyB0aGUgY3VycmVudCB2YWx1ZSBmb3IgdGhlIHNlcXVlbmNlXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIGFzeW5jIGN1cnJlbnQoKTogUHJvbWlzZTxzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnQ+IHtcbiAgICBjb25zdCB7IG5hbWUsIHN0YXJ0V2l0aCB9ID0gdGhpcy5vcHRpb25zO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBzZXF1ZW5jZTogU2VxID0gYXdhaXQgdGhpcy5yZXBvLnJlYWQobmFtZSBhcyBzdHJpbmcpO1xuICAgICAgcmV0dXJuIHRoaXMucGFyc2Uoc2VxdWVuY2UuY3VycmVudCBhcyBzdHJpbmcgfCBudW1iZXIpO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgaWYgKGUgaW5zdGFuY2VvZiBOb3RGb3VuZEVycm9yKSB7XG4gICAgICAgIGlmICh0eXBlb2Ygc3RhcnRXaXRoID09PSBcInVuZGVmaW5lZFwiKVxuICAgICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgICAgICAgXCJTdGFydGluZyB2YWx1ZSBpcyBub3QgZGVmaW5lZCBmb3IgYSBub24gZXhpc3Rpbmcgc2VxdWVuY2VcIlxuICAgICAgICAgICk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2Uoc3RhcnRXaXRoKTtcbiAgICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICAgICAgICBgRmFpbGVkIHRvIHBhcnNlIGluaXRpYWwgdmFsdWUgZm9yIHNlcXVlbmNlICR7c3RhcnRXaXRofTogJHtlfWBcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgICAgYEZhaWxlZCB0byByZXRyaWV2ZSBjdXJyZW50IHZhbHVlIGZvciBzZXF1ZW5jZSAke25hbWV9OiAke2V9YFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgUGFyc2VzIHRoZSB7QGxpbmsgU2VxdWVuY2V9IHZhbHVlXG4gICAqXG4gICAqIEBwcm90ZWN0ZWRcbiAgICogQHBhcmFtIHZhbHVlXG4gICAqL1xuICBwcml2YXRlIHBhcnNlKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnQpOiBzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnQge1xuICAgIHJldHVybiBwYXJzZVNlcXVlbmNlVmFsdWUodGhpcy5vcHRpb25zLnR5cGUsIHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBpbmNyZW1lbnRzIHRoZSBzZXF1ZW5jZVxuICAgKiBAZGVzY3JpcHRpb24gU2VxdWVuY2Ugc3BlY2lmaWMgaW1wbGVtZW50YXRpb25cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnR9IGN1cnJlbnRcbiAgICogQHBhcmFtIGNvdW50XG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgaW5jcmVtZW50KFxuICAgIGN1cnJlbnQ6IHN0cmluZyB8IG51bWJlciB8IGJpZ2ludCxcbiAgICBjb3VudD86IG51bWJlclxuICApOiBQcm9taXNlPHN0cmluZyB8IG51bWJlciB8IGJpZ2ludD4ge1xuICAgIGNvbnN0IHsgdHlwZSwgaW5jcmVtZW50QnksIG5hbWUgfSA9IHRoaXMub3B0aW9ucztcbiAgICBsZXQgbmV4dDogc3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50O1xuICAgIGNvbnN0IHRvSW5jcmVtZW50QnkgPSBjb3VudCB8fCBpbmNyZW1lbnRCeTtcbiAgICBpZiAodG9JbmNyZW1lbnRCeSAlIGluY3JlbWVudEJ5ICE9PSAwKVxuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICAgIGBWYWx1ZSB0byBpbmNyZW1lbnQgZG9lcyBub3QgY29uc2lkZXIgdGhlIGluY3JlbWVudEJ5IHNldHRpbmc6ICR7aW5jcmVtZW50Qnl9YFxuICAgICAgKTtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgXCJOdW1iZXJcIjpcbiAgICAgICAgbmV4dCA9ICh0aGlzLnBhcnNlKGN1cnJlbnQpIGFzIG51bWJlcikgKyB0b0luY3JlbWVudEJ5O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJCaWdJbnRcIjpcbiAgICAgICAgbmV4dCA9ICh0aGlzLnBhcnNlKGN1cnJlbnQpIGFzIGJpZ2ludCkgKyBCaWdJbnQodG9JbmNyZW1lbnRCeSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXCJTaG91bGQgbmV2ZXIgaGFwcGVuXCIpO1xuICAgIH1cbiAgICBsZXQgc2VxOiBTZXE7XG4gICAgY29uc3QgcmVwbyA9IHRoaXMucmVwby5vdmVycmlkZSh7XG4gICAgICBpZ25vcmVkVmFsaWRhdGlvblByb3BlcnRpZXM6IFtcInVwZGF0ZWRPblwiXSxcbiAgICB9KTtcbiAgICB0cnkge1xuICAgICAgc2VxID0gYXdhaXQgcmVwby51cGRhdGUobmV3IFNlcSh7IGlkOiBuYW1lLCBjdXJyZW50OiBuZXh0IH0pKTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBOb3RGb3VuZEVycm9yKSkge1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgICAgc2VxID0gYXdhaXQgcmVwby5jcmVhdGUobmV3IFNlcSh7IGlkOiBuYW1lLCBjdXJyZW50OiBuZXh0IH0pKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2VxLmN1cnJlbnQgYXMgc3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50O1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IEdlbmVyYXRlcyB0aGUgbmV4dCB2YWx1ZSBpbiB0aCBzZXF1ZW5jZVxuICAgKiBAZGVzY3JpcHRpb24gY2FsbHMge0BsaW5rIFNlcXVlbmNlI3BhcnNlfSBvbiB0aGUgY3VycmVudCB2YWx1ZVxuICAgKiBmb2xsb3dlZCBieSB7QGxpbmsgU2VxdWVuY2UjaW5jcmVtZW50fVxuICAgKlxuICAgKi9cbiAgYXN5bmMgbmV4dCgpOiBQcm9taXNlPG51bWJlciB8IHN0cmluZyB8IGJpZ2ludD4ge1xuICAgIGNvbnN0IGN1cnJlbnQgPSBhd2FpdCB0aGlzLmN1cnJlbnQoKTtcbiAgICByZXR1cm4gdGhpcy5pbmNyZW1lbnQoY3VycmVudCk7XG4gIH1cblxuICBhc3luYyByYW5nZShjb3VudDogbnVtYmVyKTogUHJvbWlzZTwobnVtYmVyIHwgc3RyaW5nIHwgYmlnaW50KVtdPiB7XG4gICAgY29uc3QgY3VycmVudCA9IChhd2FpdCB0aGlzLmN1cnJlbnQoKSkgYXMgbnVtYmVyO1xuICAgIGNvbnN0IGluY3JlbWVudEJ5ID0gdGhpcy5wYXJzZSh0aGlzLm9wdGlvbnMuaW5jcmVtZW50QnkpIGFzIG51bWJlcjtcbiAgICBjb25zdCBuZXh0OiBzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnQgPSBhd2FpdCB0aGlzLmluY3JlbWVudChcbiAgICAgIGN1cnJlbnQsXG4gICAgICAodGhpcy5wYXJzZShjb3VudCkgYXMgbnVtYmVyKSAqIGluY3JlbWVudEJ5XG4gICAgKTtcbiAgICBjb25zdCByYW5nZTogKG51bWJlciB8IHN0cmluZyB8IGJpZ2ludClbXSA9IFtdO1xuICAgIGZvciAobGV0IGk6IG51bWJlciA9IDE7IGkgPD0gY291bnQ7IGkrKykge1xuICAgICAgcmFuZ2UucHVzaChjdXJyZW50ICsgaW5jcmVtZW50QnkgKiAodGhpcy5wYXJzZShpKSBhcyBudW1iZXIpKTtcbiAgICB9XG4gICAgaWYgKHJhbmdlW3JhbmdlLmxlbmd0aCAtIDFdICE9PSBuZXh0KVxuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXCJNaXNjYWxjdWxhdGlvbiBvZiByYW5nZVwiKTtcbiAgICByZXR1cm4gcmFuZ2U7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,8 @@
1
+ import { Paginator, Statement } from "../query";
2
+ import { RamQuery } from "./types";
3
+ import { Model } from "@decaf-ts/decorator-validation";
4
+ import { Adapter } from "../persistence";
5
+ export declare class RamStatement<M extends Model> extends Statement<RamQuery<M>> {
6
+ constructor(db: Adapter<any, RamQuery<M>, any, any>);
7
+ paginate<V>(size: number): Promise<Paginator<V, RamQuery<M>>>;
8
+ }
@@ -0,0 +1,18 @@
1
+ import { Statement } from "../query";
2
+ import { RamPaginator } from "./RamPaginator";
3
+ import { InternalError } from "@decaf-ts/db-decorators";
4
+ export class RamStatement extends Statement {
5
+ constructor(db) {
6
+ super(db);
7
+ }
8
+ paginate(size) {
9
+ try {
10
+ const query = this.build();
11
+ return new RamPaginator(this, size, query);
12
+ }
13
+ catch (e) {
14
+ throw new InternalError(e);
15
+ }
16
+ }
17
+ }
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmFtU3RhdGVtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3JhbS9SYW1TdGF0ZW1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFhLFNBQVMsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUloRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRXhELE1BQU0sT0FBTyxZQUE4QixTQUFRLFNBQXNCO0lBQ3ZFLFlBQVksRUFBdUM7UUFDakQsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ1osQ0FBQztJQUVELFFBQVEsQ0FBSSxJQUFZO1FBQ3RCLElBQUksQ0FBQztZQUNILE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUMzQixPQUFPLElBQUksWUFBWSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFRLENBQUM7UUFDcEQsQ0FBQztRQUFDLE9BQU8sQ0FBTSxFQUFFLENBQUM7WUFDaEIsTUFBTSxJQUFJLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3QixDQUFDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGFnaW5hdG9yLCBTdGF0ZW1lbnQgfSBmcm9tIFwiLi4vcXVlcnlcIjtcbmltcG9ydCB7IFJhbVF1ZXJ5IH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IE1vZGVsIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgQWRhcHRlciB9IGZyb20gXCIuLi9wZXJzaXN0ZW5jZVwiO1xuaW1wb3J0IHsgUmFtUGFnaW5hdG9yIH0gZnJvbSBcIi4vUmFtUGFnaW5hdG9yXCI7XG5pbXBvcnQgeyBJbnRlcm5hbEVycm9yIH0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5cbmV4cG9ydCBjbGFzcyBSYW1TdGF0ZW1lbnQ8TSBleHRlbmRzIE1vZGVsPiBleHRlbmRzIFN0YXRlbWVudDxSYW1RdWVyeTxNPj4ge1xuICBjb25zdHJ1Y3RvcihkYjogQWRhcHRlcjxhbnksIFJhbVF1ZXJ5PE0+LCBhbnksIGFueT4pIHtcbiAgICBzdXBlcihkYik7XG4gIH1cblxuICBwYWdpbmF0ZTxWPihzaXplOiBudW1iZXIpOiBQcm9taXNlPFBhZ2luYXRvcjxWLCBSYW1RdWVyeTxNPj4+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcXVlcnkgPSB0aGlzLmJ1aWxkKCk7XG4gICAgICByZXR1cm4gbmV3IFJhbVBhZ2luYXRvcih0aGlzLCBzaXplLCBxdWVyeSkgYXMgYW55O1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoZSk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -0,0 +1,7 @@
1
+ import { ModelArg, Model } from "@decaf-ts/decorator-validation";
2
+ import { RamQuery } from "../types";
3
+ import { FromClause } from "../../query";
4
+ export declare class RamFromClause<M extends Model> extends FromClause<RamQuery<any>, M> {
5
+ constructor(clause: ModelArg<FromClause<RamQuery<any>, M>>);
6
+ build(previous: RamQuery<any>): RamQuery<any>;
7
+ }
@@ -0,0 +1,11 @@
1
+ import { FromClause } from "../../query";
2
+ export class RamFromClause extends FromClause {
3
+ constructor(clause) {
4
+ super(clause);
5
+ }
6
+ build(previous) {
7
+ previous.from = this.selector;
8
+ return previous;
9
+ }
10
+ }
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRnJvbUNsYXVzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9yYW0vY2xhdXNlcy9Gcm9tQ2xhdXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFekMsTUFBTSxPQUFPLGFBQStCLFNBQVEsVUFHbkQ7SUFDQyxZQUFZLE1BQThDO1FBQ3hELEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQXVCO1FBQzNCLFFBQVEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUM5QixPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb2RlbEFyZywgTW9kZWwgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBSYW1RdWVyeSB9IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgRnJvbUNsYXVzZSB9IGZyb20gXCIuLi8uLi9xdWVyeVwiO1xuXG5leHBvcnQgY2xhc3MgUmFtRnJvbUNsYXVzZTxNIGV4dGVuZHMgTW9kZWw+IGV4dGVuZHMgRnJvbUNsYXVzZTxcbiAgUmFtUXVlcnk8YW55PixcbiAgTVxuPiB7XG4gIGNvbnN0cnVjdG9yKGNsYXVzZTogTW9kZWxBcmc8RnJvbUNsYXVzZTxSYW1RdWVyeTxhbnk+LCBNPj4pIHtcbiAgICBzdXBlcihjbGF1c2UpO1xuICB9XG5cbiAgYnVpbGQocHJldmlvdXM6IFJhbVF1ZXJ5PGFueT4pOiBSYW1RdWVyeTxhbnk+IHtcbiAgICBwcmV2aW91cy5mcm9tID0gdGhpcy5zZWxlY3RvcjtcbiAgICByZXR1cm4gcHJldmlvdXM7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,7 @@
1
+ import { ModelArg, Model } from "@decaf-ts/decorator-validation";
2
+ import { RamQuery } from "../types";
3
+ import { InsertClause } from "../../query";
4
+ export declare class RamInsertClause<M extends Model> extends InsertClause<RamQuery<any>, M> {
5
+ constructor(clause: ModelArg<InsertClause<RamQuery<any>, M>>);
6
+ build(query: RamQuery<any>): RamQuery<any>;
7
+ }
@@ -0,0 +1,13 @@
1
+ import { InternalError } from "@decaf-ts/db-decorators";
2
+ import { InsertClause } from "../../query";
3
+ // noinspection JSAnnotator
4
+ export class RamInsertClause extends InsertClause {
5
+ constructor(clause) {
6
+ super(clause);
7
+ }
8
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
9
+ build(query) {
10
+ throw new InternalError("Not supported");
11
+ }
12
+ }
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW5zZXJ0Q2xhdXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3JhbS9jbGF1c2VzL0luc2VydENsYXVzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUUzQywyQkFBMkI7QUFDM0IsTUFBTSxPQUFPLGVBQWlDLFNBQVEsWUFHckQ7SUFDQyxZQUFZLE1BQWdEO1FBQzFELEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBRUQsNkRBQTZEO0lBQzdELEtBQUssQ0FBQyxLQUFvQjtRQUN4QixNQUFNLElBQUksYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzNDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vZGVsQXJnLCBNb2RlbCB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IEludGVybmFsRXJyb3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbmltcG9ydCB7IFJhbVF1ZXJ5IH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5pbXBvcnQgeyBJbnNlcnRDbGF1c2UgfSBmcm9tIFwiLi4vLi4vcXVlcnlcIjtcblxuLy8gbm9pbnNwZWN0aW9uIEpTQW5ub3RhdG9yXG5leHBvcnQgY2xhc3MgUmFtSW5zZXJ0Q2xhdXNlPE0gZXh0ZW5kcyBNb2RlbD4gZXh0ZW5kcyBJbnNlcnRDbGF1c2U8XG4gIFJhbVF1ZXJ5PGFueT4sXG4gIE1cbj4ge1xuICBjb25zdHJ1Y3RvcihjbGF1c2U6IE1vZGVsQXJnPEluc2VydENsYXVzZTxSYW1RdWVyeTxhbnk+LCBNPj4pIHtcbiAgICBzdXBlcihjbGF1c2UpO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICBidWlsZChxdWVyeTogUmFtUXVlcnk8YW55Pik6IFJhbVF1ZXJ5PGFueT4ge1xuICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFwiTm90IHN1cHBvcnRlZFwiKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,7 @@
1
+ import { RamQuery } from "../types";
2
+ import { OrderByClause } from "../../query";
3
+ import { ModelArg } from "@decaf-ts/decorator-validation";
4
+ export declare class RamOrderByClause extends OrderByClause<RamQuery<any>> {
5
+ constructor(clause: ModelArg<OrderByClause<RamQuery<any>>>);
6
+ build(query: RamQuery<any>): RamQuery<any>;
7
+ }
@@ -0,0 +1,39 @@
1
+ import { OrderByClause, QueryError } from "../../query";
2
+ import { Reflection } from "@decaf-ts/reflection";
3
+ export class RamOrderByClause extends OrderByClause {
4
+ constructor(clause) {
5
+ super(clause);
6
+ }
7
+ build(query) {
8
+ query.sort = (el1, el2) => {
9
+ const selectors = this.selector;
10
+ const [key, direction] = selectors[0];
11
+ const type = Reflection.getTypeFromDecorator(el1, key);
12
+ if (!type)
13
+ throw new QueryError(`type not compatible with sorting: ${type}`);
14
+ switch (type) {
15
+ case "string":
16
+ case "String":
17
+ return ((direction === "asc" ? 1 : -1) *
18
+ el1[key].localeCompare(el2[key]));
19
+ case "number":
20
+ case "Number":
21
+ return ((direction === "asc" ? 1 : -1) *
22
+ (el1[key] -
23
+ el2[key]));
24
+ case "object":
25
+ case "Object":
26
+ if (el1[key] instanceof Date &&
27
+ el2[key] instanceof Date)
28
+ return ((direction === "asc" ? 1 : -1) *
29
+ (el1[key].valueOf() -
30
+ el2[key].valueOf()));
31
+ throw new QueryError(`Sorting not supported for not date classes`);
32
+ default:
33
+ throw new QueryError(`sorting not supported for type ${type}`);
34
+ }
35
+ };
36
+ return query;
37
+ }
38
+ }
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3JkZXJCeUNsYXVzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9yYW0vY2xhdXNlcy9PcmRlckJ5Q2xhdXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxhQUFhLEVBQW1CLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV6RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFbEQsTUFBTSxPQUFPLGdCQUFpQixTQUFRLGFBQTRCO0lBQ2hFLFlBQVksTUFBOEM7UUFDeEQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxLQUFLLENBQUMsS0FBb0I7UUFDeEIsS0FBSyxDQUFDLElBQUksR0FBRyxDQUFDLEdBQVUsRUFBRSxHQUFVLEVBQUUsRUFBRTtZQUN0QyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBNkIsQ0FBQztZQUNyRCxNQUFNLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0QyxNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsb0JBQW9CLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZELElBQUksQ0FBQyxJQUFJO2dCQUNQLE1BQU0sSUFBSSxVQUFVLENBQUMscUNBQXFDLElBQUksRUFBRSxDQUFDLENBQUM7WUFFcEUsUUFBUSxJQUFJLEVBQUUsQ0FBQztnQkFDYixLQUFLLFFBQVEsQ0FBQztnQkFDZCxLQUFLLFFBQVE7b0JBQ1gsT0FBTyxDQUNMLENBQUMsU0FBUyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDN0IsR0FBRyxDQUFDLEdBQWtCLENBQXVCLENBQUMsYUFBYSxDQUMxRCxHQUFHLENBQUMsR0FBa0IsQ0FBc0IsQ0FDN0MsQ0FDRixDQUFDO2dCQUNKLEtBQUssUUFBUSxDQUFDO2dCQUNkLEtBQUssUUFBUTtvQkFDWCxPQUFPLENBQ0wsQ0FBQyxTQUFTLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUM5QixDQUFFLEdBQUcsQ0FBQyxHQUFrQixDQUF1Qjs0QkFDNUMsR0FBRyxDQUFDLEdBQWtCLENBQXVCLENBQUMsQ0FDbEQsQ0FBQztnQkFDSixLQUFLLFFBQVEsQ0FBQztnQkFDZCxLQUFLLFFBQVE7b0JBQ1gsSUFDRSxHQUFHLENBQUMsR0FBa0IsQ0FBQyxZQUFZLElBQUk7d0JBQ3ZDLEdBQUcsQ0FBQyxHQUFrQixDQUFDLFlBQVksSUFBSTt3QkFFdkMsT0FBTyxDQUNMLENBQUMsU0FBUyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs0QkFDOUIsQ0FBRSxHQUFHLENBQUMsR0FBa0IsQ0FBcUIsQ0FBQyxPQUFPLEVBQUU7Z0NBQ3BELEdBQUcsQ0FBQyxHQUFrQixDQUFxQixDQUFDLE9BQU8sRUFBRSxDQUFDLENBQzFELENBQUM7b0JBQ0osTUFBTSxJQUFJLFVBQVUsQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO2dCQUNyRTtvQkFDRSxNQUFNLElBQUksVUFBVSxDQUFDLGtDQUFrQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ25FLENBQUM7UUFDSCxDQUFDLENBQUM7UUFDRixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJhbVF1ZXJ5IH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5pbXBvcnQgeyBPcmRlckJ5Q2xhdXNlLCBPcmRlckJ5U2VsZWN0b3IsIFF1ZXJ5RXJyb3IgfSBmcm9tIFwiLi4vLi4vcXVlcnlcIjtcbmltcG9ydCB7IE1vZGVsLCBNb2RlbEFyZyB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IFJlZmxlY3Rpb24gfSBmcm9tIFwiQGRlY2FmLXRzL3JlZmxlY3Rpb25cIjtcblxuZXhwb3J0IGNsYXNzIFJhbU9yZGVyQnlDbGF1c2UgZXh0ZW5kcyBPcmRlckJ5Q2xhdXNlPFJhbVF1ZXJ5PGFueT4+IHtcbiAgY29uc3RydWN0b3IoY2xhdXNlOiBNb2RlbEFyZzxPcmRlckJ5Q2xhdXNlPFJhbVF1ZXJ5PGFueT4+Pikge1xuICAgIHN1cGVyKGNsYXVzZSk7XG4gIH1cblxuICBidWlsZChxdWVyeTogUmFtUXVlcnk8YW55Pik6IFJhbVF1ZXJ5PGFueT4ge1xuICAgIHF1ZXJ5LnNvcnQgPSAoZWwxOiBNb2RlbCwgZWwyOiBNb2RlbCkgPT4ge1xuICAgICAgY29uc3Qgc2VsZWN0b3JzID0gdGhpcy5zZWxlY3RvciBhcyBPcmRlckJ5U2VsZWN0b3JbXTtcbiAgICAgIGNvbnN0IFtrZXksIGRpcmVjdGlvbl0gPSBzZWxlY3RvcnNbMF07XG4gICAgICBjb25zdCB0eXBlID0gUmVmbGVjdGlvbi5nZXRUeXBlRnJvbURlY29yYXRvcihlbDEsIGtleSk7XG4gICAgICBpZiAoIXR5cGUpXG4gICAgICAgIHRocm93IG5ldyBRdWVyeUVycm9yKGB0eXBlIG5vdCBjb21wYXRpYmxlIHdpdGggc29ydGluZzogJHt0eXBlfWApO1xuXG4gICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgY2FzZSBcInN0cmluZ1wiOlxuICAgICAgICBjYXNlIFwiU3RyaW5nXCI6XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIChkaXJlY3Rpb24gPT09IFwiYXNjXCIgPyAxIDogLTEpICpcbiAgICAgICAgICAgIChlbDFba2V5IGFzIGtleW9mIE1vZGVsXSBhcyB1bmtub3duIGFzIHN0cmluZykubG9jYWxlQ29tcGFyZShcbiAgICAgICAgICAgICAgZWwyW2tleSBhcyBrZXlvZiBNb2RlbF0gYXMgdW5rbm93biBhcyBzdHJpbmdcbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgICBjYXNlIFwibnVtYmVyXCI6XG4gICAgICAgIGNhc2UgXCJOdW1iZXJcIjpcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgKGRpcmVjdGlvbiA9PT0gXCJhc2NcIiA/IDEgOiAtMSkgKlxuICAgICAgICAgICAgKChlbDFba2V5IGFzIGtleW9mIE1vZGVsXSBhcyB1bmtub3duIGFzIG51bWJlcikgLVxuICAgICAgICAgICAgICAoZWwyW2tleSBhcyBrZXlvZiBNb2RlbF0gYXMgdW5rbm93biBhcyBudW1iZXIpKVxuICAgICAgICAgICk7XG4gICAgICAgIGNhc2UgXCJvYmplY3RcIjpcbiAgICAgICAgY2FzZSBcIk9iamVjdFwiOlxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGVsMVtrZXkgYXMga2V5b2YgTW9kZWxdIGluc3RhbmNlb2YgRGF0ZSAmJlxuICAgICAgICAgICAgZWwyW2tleSBhcyBrZXlvZiBNb2RlbF0gaW5zdGFuY2VvZiBEYXRlXG4gICAgICAgICAgKVxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgKGRpcmVjdGlvbiA9PT0gXCJhc2NcIiA/IDEgOiAtMSkgKlxuICAgICAgICAgICAgICAoKGVsMVtrZXkgYXMga2V5b2YgTW9kZWxdIGFzIHVua25vd24gYXMgRGF0ZSkudmFsdWVPZigpIC1cbiAgICAgICAgICAgICAgICAoZWwyW2tleSBhcyBrZXlvZiBNb2RlbF0gYXMgdW5rbm93biBhcyBEYXRlKS52YWx1ZU9mKCkpXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHRocm93IG5ldyBRdWVyeUVycm9yKGBTb3J0aW5nIG5vdCBzdXBwb3J0ZWQgZm9yIG5vdCBkYXRlIGNsYXNzZXNgKTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgUXVlcnlFcnJvcihgc29ydGluZyBub3Qgc3VwcG9ydGVkIGZvciB0eXBlICR7dHlwZX1gKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBxdWVyeTtcbiAgfVxufVxuIl19
@@ -0,0 +1,7 @@
1
+ import { ModelArg, Model } from "@decaf-ts/decorator-validation";
2
+ import { RamQuery } from "../types";
3
+ import { SelectClause } from "../../query";
4
+ export declare class RamSelectClause<M extends Model> extends SelectClause<RamQuery<any>, M> {
5
+ constructor(clause: ModelArg<SelectClause<RamQuery<any>, M>>);
6
+ build(query: RamQuery<any>): RamQuery<any>;
7
+ }
@@ -0,0 +1,16 @@
1
+ import { Const, SelectClause } from "../../query";
2
+ export class RamSelectClause extends SelectClause {
3
+ constructor(clause) {
4
+ super(clause);
5
+ }
6
+ build(query) {
7
+ if (!this.selector || this.selector === Const.FULL_RECORD) {
8
+ query.select = undefined;
9
+ return query;
10
+ }
11
+ const selector = typeof this.selector === "string" ? [this.selector] : this.selector;
12
+ query.select = selector;
13
+ return query;
14
+ }
15
+ }
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VsZWN0Q2xhdXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3JhbS9jbGF1c2VzL1NlbGVjdENsYXVzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVsRCxNQUFNLE9BQU8sZUFBaUMsU0FBUSxZQUdyRDtJQUNDLFlBQVksTUFBZ0Q7UUFDMUQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxLQUFLLENBQUMsS0FBb0I7UUFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDMUQsS0FBSyxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUM7WUFDekIsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsTUFBTSxRQUFRLEdBQ1osT0FBTyxJQUFJLENBQUMsUUFBUSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDdEUsS0FBSyxDQUFDLE1BQU0sR0FBRyxRQUF1QixDQUFDO1FBQ3ZDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9kZWxBcmcsIE1vZGVsIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgUmFtUXVlcnkgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IENvbnN0LCBTZWxlY3RDbGF1c2UgfSBmcm9tIFwiLi4vLi4vcXVlcnlcIjtcblxuZXhwb3J0IGNsYXNzIFJhbVNlbGVjdENsYXVzZTxNIGV4dGVuZHMgTW9kZWw+IGV4dGVuZHMgU2VsZWN0Q2xhdXNlPFxuICBSYW1RdWVyeTxhbnk+LFxuICBNXG4+IHtcbiAgY29uc3RydWN0b3IoY2xhdXNlOiBNb2RlbEFyZzxTZWxlY3RDbGF1c2U8UmFtUXVlcnk8YW55PiwgTT4+KSB7XG4gICAgc3VwZXIoY2xhdXNlKTtcbiAgfVxuXG4gIGJ1aWxkKHF1ZXJ5OiBSYW1RdWVyeTxhbnk+KTogUmFtUXVlcnk8YW55PiB7XG4gICAgaWYgKCF0aGlzLnNlbGVjdG9yIHx8IHRoaXMuc2VsZWN0b3IgPT09IENvbnN0LkZVTExfUkVDT1JEKSB7XG4gICAgICBxdWVyeS5zZWxlY3QgPSB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4gcXVlcnk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2VsZWN0b3IgPVxuICAgICAgdHlwZW9mIHRoaXMuc2VsZWN0b3IgPT09IFwic3RyaW5nXCIgPyBbdGhpcy5zZWxlY3Rvcl0gOiB0aGlzLnNlbGVjdG9yO1xuICAgIHF1ZXJ5LnNlbGVjdCA9IHNlbGVjdG9yIGFzIChrZXlvZiBNKVtdO1xuICAgIHJldHVybiBxdWVyeTtcbiAgfVxufVxuIl19
@@ -0,0 +1,7 @@
1
+ import { ModelArg, Model } from "@decaf-ts/decorator-validation";
2
+ import { RamQuery } from "../types";
3
+ import { ValuesClause } from "../../query";
4
+ export declare class RamValuesClause<M extends Model> extends ValuesClause<RamQuery<any>, M> {
5
+ constructor(clause: ModelArg<ValuesClause<RamQuery<any>, M>>);
6
+ build(previous: RamQuery<any>): RamQuery<any>;
7
+ }
@@ -0,0 +1,12 @@
1
+ import { InternalError } from "@decaf-ts/db-decorators";
2
+ import { ValuesClause } from "../../query";
3
+ export class RamValuesClause extends ValuesClause {
4
+ constructor(clause) {
5
+ super(clause);
6
+ }
7
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
8
+ build(previous) {
9
+ throw new InternalError("Not implemented");
10
+ }
11
+ }
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmFsdWVzQ2xhdXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3JhbS9jbGF1c2VzL1ZhbHVlc0NsYXVzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUUzQyxNQUFNLE9BQU8sZUFBaUMsU0FBUSxZQUdyRDtJQUNDLFlBQVksTUFBZ0Q7UUFDMUQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCw2REFBNkQ7SUFDN0QsS0FBSyxDQUFDLFFBQXVCO1FBQzNCLE1BQU0sSUFBSSxhQUFhLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb2RlbEFyZywgTW9kZWwgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBJbnRlcm5hbEVycm9yIH0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBSYW1RdWVyeSB9IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgVmFsdWVzQ2xhdXNlIH0gZnJvbSBcIi4uLy4uL3F1ZXJ5XCI7XG5cbmV4cG9ydCBjbGFzcyBSYW1WYWx1ZXNDbGF1c2U8TSBleHRlbmRzIE1vZGVsPiBleHRlbmRzIFZhbHVlc0NsYXVzZTxcbiAgUmFtUXVlcnk8YW55PixcbiAgTVxuPiB7XG4gIGNvbnN0cnVjdG9yKGNsYXVzZTogTW9kZWxBcmc8VmFsdWVzQ2xhdXNlPFJhbVF1ZXJ5PGFueT4sIE0+Pikge1xuICAgIHN1cGVyKGNsYXVzZSk7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIGJ1aWxkKHByZXZpb3VzOiBSYW1RdWVyeTxhbnk+KTogUmFtUXVlcnk8YW55PiB7XG4gICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXCJOb3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,7 @@
1
+ import { ModelArg } from "@decaf-ts/decorator-validation";
2
+ import { RamQuery } from "../types";
3
+ import { WhereClause } from "../../query";
4
+ export declare class RamWhereClause extends WhereClause<RamQuery<any>> {
5
+ constructor(clause: ModelArg<WhereClause<RamQuery<any>>>);
6
+ build(query: RamQuery<any>): RamQuery<any>;
7
+ }
@@ -0,0 +1,11 @@
1
+ import { WhereClause } from "../../query";
2
+ export class RamWhereClause extends WhereClause {
3
+ constructor(clause) {
4
+ super(clause);
5
+ }
6
+ build(query) {
7
+ query.where = this.adapter.parseCondition(this.condition).where;
8
+ return query;
9
+ }
10
+ }
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2hlcmVDbGF1c2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcmFtL2NsYXVzZXMvV2hlcmVDbGF1c2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFhLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVyRCxNQUFNLE9BQU8sY0FBZSxTQUFRLFdBQTBCO0lBQzVELFlBQVksTUFBNEM7UUFDdEQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxLQUFLLENBQUMsS0FBb0I7UUFDeEIsS0FBSyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FDdkMsSUFBSSxDQUFDLFNBQXNCLENBQzVCLENBQUMsS0FBSyxDQUFDO1FBQ1IsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb2RlbEFyZyB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IFJhbVF1ZXJ5IH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5pbXBvcnQgeyBDb25kaXRpb24sIFdoZXJlQ2xhdXNlIH0gZnJvbSBcIi4uLy4uL3F1ZXJ5XCI7XG5cbmV4cG9ydCBjbGFzcyBSYW1XaGVyZUNsYXVzZSBleHRlbmRzIFdoZXJlQ2xhdXNlPFJhbVF1ZXJ5PGFueT4+IHtcbiAgY29uc3RydWN0b3IoY2xhdXNlOiBNb2RlbEFyZzxXaGVyZUNsYXVzZTxSYW1RdWVyeTxhbnk+Pj4pIHtcbiAgICBzdXBlcihjbGF1c2UpO1xuICB9XG5cbiAgYnVpbGQocXVlcnk6IFJhbVF1ZXJ5PGFueT4pOiBSYW1RdWVyeTxhbnk+IHtcbiAgICBxdWVyeS53aGVyZSA9IHRoaXMuYWRhcHRlci5wYXJzZUNvbmRpdGlvbihcbiAgICAgIHRoaXMuY29uZGl0aW9uIGFzIENvbmRpdGlvblxuICAgICkud2hlcmU7XG4gICAgcmV0dXJuIHF1ZXJ5O1xuICB9XG59XG4iXX0=
@@ -0,0 +1,6 @@
1
+ export * from "./FromClause";
2
+ export * from "./InsertClause";
3
+ export * from "./OrderByClause";
4
+ export * from "./SelectClause";
5
+ export * from "./ValuesClause";
6
+ export * from "./WhereClause";
@@ -0,0 +1,7 @@
1
+ export * from "./FromClause";
2
+ export * from "./InsertClause";
3
+ export * from "./OrderByClause";
4
+ export * from "./SelectClause";
5
+ export * from "./ValuesClause";
6
+ export * from "./WhereClause";
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcmFtL2NsYXVzZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGVBQWUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL0Zyb21DbGF1c2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL0luc2VydENsYXVzZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vT3JkZXJCeUNsYXVzZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vU2VsZWN0Q2xhdXNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9WYWx1ZXNDbGF1c2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL1doZXJlQ2xhdXNlXCI7XG4iXX0=
@@ -0,0 +1,9 @@
1
+ export * from "./clauses";
2
+ export * from "./model";
3
+ export * from "./RamAdapter";
4
+ export * from "./RamClauseFactory";
5
+ export * from "./RamContext";
6
+ export * from "./RamPaginator";
7
+ export * from "./RamSequence";
8
+ export * from "./RamStatement";
9
+ export * from "./types";
@@ -0,0 +1,10 @@
1
+ export * from "./clauses";
2
+ export * from "./model";
3
+ export * from "./RamAdapter";
4
+ export * from "./RamClauseFactory";
5
+ export * from "./RamContext";
6
+ export * from "./RamPaginator";
7
+ export * from "./RamSequence";
8
+ export * from "./RamStatement";
9
+ export * from "./types";
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcmFtL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vY2xhdXNlc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vbW9kZWxcIjtcbmV4cG9ydCAqIGZyb20gXCIuL1JhbUFkYXB0ZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL1JhbUNsYXVzZUZhY3RvcnlcIjtcbmV4cG9ydCAqIGZyb20gXCIuL1JhbUNvbnRleHRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL1JhbVBhZ2luYXRvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vUmFtU2VxdWVuY2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL1JhbVN0YXRlbWVudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdHlwZXNcIjtcbiJdfQ==
@@ -0,0 +1,20 @@
1
+ import type { ModelArg } from "@decaf-ts/decorator-validation";
2
+ import { BaseModel } from "../../model";
3
+ export declare class Sequence extends BaseModel {
4
+ /**
5
+ * @summary the Primary key for the DBSequence
6
+ * @prop name
7
+ *
8
+ * @see pk
9
+ */
10
+ id: string;
11
+ /**
12
+ * @summary the current value for the DBSequence
13
+ * @prop current
14
+ *
15
+ * @see required
16
+ * @see index
17
+ */
18
+ current: string | number;
19
+ constructor(seq?: ModelArg<Sequence>);
20
+ }
@@ -0,0 +1,33 @@
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 { model, required } from "@decaf-ts/decorator-validation";
11
+ import { BaseModel, index, table } from "../../model";
12
+ import { pk } from "../../identity";
13
+ let Sequence = class Sequence extends BaseModel {
14
+ constructor(seq) {
15
+ super(seq);
16
+ }
17
+ };
18
+ __decorate([
19
+ pk(),
20
+ __metadata("design:type", String)
21
+ ], Sequence.prototype, "id", void 0);
22
+ __decorate([
23
+ required(),
24
+ index(),
25
+ __metadata("design:type", Object)
26
+ ], Sequence.prototype, "current", void 0);
27
+ Sequence = __decorate([
28
+ table("__RamSequence"),
29
+ model(),
30
+ __metadata("design:paramtypes", [Object])
31
+ ], Sequence);
32
+ export { Sequence };
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmFtU2VxdWVuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcmFtL21vZGVsL1JhbVNlcXVlbmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUk3QixJQUFNLFFBQVEsR0FBZCxNQUFNLFFBQVMsU0FBUSxTQUFTO0lBb0JyQyxZQUFZLEdBQXdCO1FBQ2xDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNiLENBQUM7Q0FDRixDQUFBO0FBZkM7SUFEQyxFQUFFLEVBQUU7O29DQUNPO0FBVVo7SUFGQyxRQUFRLEVBQUU7SUFDVixLQUFLLEVBQUU7O3lDQUNrQjtBQWxCZixRQUFRO0lBRnBCLEtBQUssQ0FBQyxlQUFlLENBQUM7SUFDdEIsS0FBSyxFQUFFOztHQUNLLFFBQVEsQ0F1QnBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbW9kZWwsIHJlcXVpcmVkIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHR5cGUgeyBNb2RlbEFyZyB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IEJhc2VNb2RlbCwgaW5kZXgsIHRhYmxlIH0gZnJvbSBcIi4uLy4uL21vZGVsXCI7XG5pbXBvcnQgeyBwayB9IGZyb20gXCIuLi8uLi9pZGVudGl0eVwiO1xuXG5AdGFibGUoXCJfX1JhbVNlcXVlbmNlXCIpXG5AbW9kZWwoKVxuZXhwb3J0IGNsYXNzIFNlcXVlbmNlIGV4dGVuZHMgQmFzZU1vZGVsIHtcbiAgLyoqXG4gICAqIEBzdW1tYXJ5IHRoZSBQcmltYXJ5IGtleSBmb3IgdGhlIERCU2VxdWVuY2VcbiAgICogQHByb3AgbmFtZVxuICAgKlxuICAgKiBAc2VlIHBrXG4gICAqL1xuICBAcGsoKVxuICBpZCE6IHN0cmluZztcbiAgLyoqXG4gICAqIEBzdW1tYXJ5IHRoZSBjdXJyZW50IHZhbHVlIGZvciB0aGUgREJTZXF1ZW5jZVxuICAgKiBAcHJvcCBjdXJyZW50XG4gICAqXG4gICAqIEBzZWUgcmVxdWlyZWRcbiAgICogQHNlZSBpbmRleFxuICAgKi9cbiAgQHJlcXVpcmVkKClcbiAgQGluZGV4KClcbiAgY3VycmVudCE6IHN0cmluZyB8IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihzZXE/OiBNb2RlbEFyZzxTZXF1ZW5jZT4pIHtcbiAgICBzdXBlcihzZXEpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1 @@
1
+ export * from "./RamSequence";
@@ -0,0 +1,2 @@
1
+ export * from "./RamSequence";
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcmFtL21vZGVsL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vUmFtU2VxdWVuY2VcIjtcbiJdfQ==
@@ -0,0 +1,17 @@
1
+ import { Constructor, Model } from "@decaf-ts/decorator-validation";
2
+ import { Repository } from "../repository";
3
+ import { Context, RepositoryFlags } from "@decaf-ts/db-decorators";
4
+ import { RamAdapter } from "./RamAdapter";
5
+ export type RamStorage = Record<string, Record<string, any>>;
6
+ export type RamQuery<M extends Model> = {
7
+ select: undefined | keyof M | (keyof M)[];
8
+ from: string | M | Constructor<M>;
9
+ where: (el: M) => boolean;
10
+ sort?: (el: M, el2: M) => number;
11
+ limit?: number;
12
+ skip?: number;
13
+ };
14
+ export interface RamFlags extends RepositoryFlags {
15
+ UUID: string;
16
+ }
17
+ export type RamRepository<M extends Model> = Repository<M, RamQuery<M>, RamAdapter, RamFlags, Context<RamFlags>>;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcmFtL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdHJ1Y3RvciwgTW9kZWwgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBSZXBvc2l0b3J5IH0gZnJvbSBcIi4uL3JlcG9zaXRvcnlcIjtcbmltcG9ydCB7IENvbnRleHQsIFJlcG9zaXRvcnlGbGFncyB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgUmFtQWRhcHRlciB9IGZyb20gXCIuL1JhbUFkYXB0ZXJcIjtcblxuZXhwb3J0IHR5cGUgUmFtU3RvcmFnZSA9IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIGFueT4+O1xuXG5leHBvcnQgdHlwZSBSYW1RdWVyeTxNIGV4dGVuZHMgTW9kZWw+ID0ge1xuICBzZWxlY3Q6IHVuZGVmaW5lZCB8IGtleW9mIE0gfCAoa2V5b2YgTSlbXTtcbiAgZnJvbTogc3RyaW5nIHwgTSB8IENvbnN0cnVjdG9yPE0+O1xuICB3aGVyZTogKGVsOiBNKSA9PiBib29sZWFuO1xuICBzb3J0PzogKGVsOiBNLCBlbDI6IE0pID0+IG51bWJlcjtcbiAgbGltaXQ/OiBudW1iZXI7XG4gIHNraXA/OiBudW1iZXI7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFJhbUZsYWdzIGV4dGVuZHMgUmVwb3NpdG9yeUZsYWdzIHtcbiAgVVVJRDogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBSYW1SZXBvc2l0b3J5PE0gZXh0ZW5kcyBNb2RlbD4gPSBSZXBvc2l0b3J5PFxuICBNLFxuICBSYW1RdWVyeTxNPixcbiAgUmFtQWRhcHRlcixcbiAgUmFtRmxhZ3MsXG4gIENvbnRleHQ8UmFtRmxhZ3M+XG4+O1xuIl19
@@ -1,4 +1,4 @@
1
- import { IRepository, Repository as Rep } from "@decaf-ts/db-decorators";
1
+ import { Context, IRepository, Repository as Rep, RepositoryFlags } from "@decaf-ts/db-decorators";
2
2
  import { Observable } from "../interfaces/Observable";
3
3
  import { Observer } from "../interfaces/Observer";
4
4
  import { Adapter } from "../persistence/Adapter";
@@ -10,17 +10,20 @@ import { IndexMetadata } from "./types";
10
10
  import { Condition } from "../query/Condition";
11
11
  import { WhereOption } from "../query/options";
12
12
  import { SelectSelector } from "../query/selectors";
13
- export type Repo<M extends Model, Q = any, A extends Adapter<any, Q> = Adapter<any, Q>> = Repository<M, Q, A>;
14
- export declare class Repository<M extends Model, Q, A extends Adapter<any, Q>> extends Rep<M> implements Observable, Queriable, IRepository<M> {
13
+ export type Repo<M extends Model, Q = any, F extends RepositoryFlags = RepositoryFlags, C extends Context<F> = Context<F>, A extends Adapter<any, Q, F, C> = Adapter<any, Q, F, C>> = Repository<M, Q, A, F, C>;
14
+ export declare class Repository<M extends Model, Q, A extends Adapter<any, Q, F, C>, F extends RepositoryFlags = RepositoryFlags, C extends Context<F> = Context<F>> extends Rep<M, F, C> implements Observable, Queriable, IRepository<M, F, C> {
15
15
  private static _cache;
16
16
  protected observers: Observer[];
17
17
  private readonly _adapter;
18
18
  private _tableName;
19
+ private _overrides?;
19
20
  protected get adapter(): A;
20
21
  protected get tableName(): string;
21
22
  constructor(adapter?: A, clazz?: Constructor<M>);
23
+ override(flags: Partial<F>): this;
22
24
  protected createPrefix(model: M, ...args: any[]): Promise<[M, ...any[]]>;
23
25
  create(model: M, ...args: any[]): Promise<M>;
26
+ createSuffix(model: M, context: C): Promise<M>;
24
27
  createAll(models: M[], ...args: any[]): Promise<M[]>;
25
28
  protected createAllPrefix(models: M[], ...args: any[]): Promise<any[]>;
26
29
  protected readPrefix(key: string, ...args: any[]): Promise<any[]>;