@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
@@ -0,0 +1,167 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ 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;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.Statement = void 0;
13
+ const decorator_validation_1 = require("@decaf-ts/decorator-validation");
14
+ const constants_1 = require("./constants.cjs");
15
+ const errors_1 = require("./errors.cjs");
16
+ const validators_1 = require("../validators/index.cjs");
17
+ const persistence_1 = require("../persistence/index.cjs");
18
+ const db_decorators_1 = require("@decaf-ts/db-decorators");
19
+ /**
20
+ * @summary Statement Class
21
+ * @description holds all the clauses until they can be processed
22
+ *
23
+ * @param {ModelArg} [statement]
24
+ *
25
+ * @class Statement
26
+ * @extends Model
27
+ * @implements Executor
28
+ * @implements RawExecutor
29
+ *
30
+ * @category Query
31
+ */
32
+ class Statement extends decorator_validation_1.Model {
33
+ constructor(db) {
34
+ super();
35
+ this.clauses = undefined;
36
+ this.target = undefined;
37
+ this.fullRecord = false;
38
+ this.type = undefined;
39
+ this.adapter = db;
40
+ }
41
+ build() {
42
+ if (!this.clauses)
43
+ throw new errors_1.QueryError((0, decorator_validation_1.sf)("Failed to build Statement:\n{0}", "No Clauses"));
44
+ this.clauses.sort((c1, c2) => {
45
+ return c1.getPriority() - c2.getPriority();
46
+ });
47
+ const errors = this.hasErrors();
48
+ if (errors)
49
+ throw new errors_1.QueryError((0, decorator_validation_1.sf)("Poorly built statement: {0}", errors.toString()));
50
+ let query;
51
+ try {
52
+ const iterator = function (clauses, previous = {}) {
53
+ const c = clauses.shift();
54
+ if (!c)
55
+ return previous;
56
+ const results = c.build(previous);
57
+ return iterator(clauses, results);
58
+ };
59
+ query = iterator(new Array(...this.clauses));
60
+ }
61
+ catch (e) {
62
+ throw new errors_1.QueryError(e);
63
+ }
64
+ return query;
65
+ }
66
+ /**
67
+ * @inheritDoc
68
+ */
69
+ async execute() {
70
+ const query = this.build();
71
+ try {
72
+ const results = (await this.raw(query));
73
+ if (!this.fullRecord)
74
+ return results;
75
+ return Array.isArray(results)
76
+ ? results.map((el) => new this.target(el))
77
+ : new this.target(results);
78
+ }
79
+ catch (e) {
80
+ throw new db_decorators_1.InternalError(e);
81
+ }
82
+ }
83
+ async raw(rawInput, ...args) {
84
+ const results = await this.adapter.raw(rawInput, ...args);
85
+ if (!this.fullRecord)
86
+ return results;
87
+ if (!this.target)
88
+ throw new db_decorators_1.InternalError("No target defined in statement. should never happen");
89
+ const pkAttr = (0, db_decorators_1.findPrimaryKey)(new this.target()).id;
90
+ const processor = function recordProcessor(r) {
91
+ const id = r[pkAttr];
92
+ return this.adapter.revert(r, this.target, pkAttr, id);
93
+ }.bind(this);
94
+ if (Array.isArray(results))
95
+ return results.map(processor);
96
+ return processor(results);
97
+ }
98
+ /**
99
+ * @inheritDoc
100
+ */
101
+ hasErrors(...exceptions) {
102
+ const errors = super.hasErrors(...exceptions);
103
+ if (errors)
104
+ return errors;
105
+ for (const i in this.clauses) {
106
+ const err = this.clauses[i].hasErrors();
107
+ if (err)
108
+ return err;
109
+ }
110
+ }
111
+ /**
112
+ * @summary Adds a clause to the Statement
113
+ * @param {Clause} clause
114
+ */
115
+ addClause(clause) {
116
+ if (!this.clauses)
117
+ this.clauses = [];
118
+ const priority = clause.getPriority();
119
+ const currentPriority = this.clauses
120
+ .map((c, i) => ({ index: i, clause: c }))
121
+ .find((c) => c.clause.getPriority() === priority);
122
+ if (currentPriority) {
123
+ this.clauses[currentPriority.index] = clause;
124
+ }
125
+ this.clauses.push(clause);
126
+ }
127
+ getAdapter() {
128
+ return this.adapter;
129
+ }
130
+ /**
131
+ * @summary Defines the output class (when existing)
132
+ * @param {Constructor} clazz
133
+ */
134
+ setTarget(clazz) {
135
+ if (this.target)
136
+ throw new errors_1.QueryError((0, decorator_validation_1.sf)("Output class already defined to {0}", this.target.name));
137
+ this.target = clazz;
138
+ }
139
+ setFullRecord() {
140
+ this.fullRecord = true;
141
+ }
142
+ setMode(type) {
143
+ this.type = type;
144
+ }
145
+ }
146
+ exports.Statement = Statement;
147
+ __decorate([
148
+ (0, decorator_validation_1.required)(),
149
+ (0, decorator_validation_1.minlength)(constants_1.MandatoryPriorities.length),
150
+ (0, validators_1.clauseSequence)(),
151
+ __metadata("design:type", Array)
152
+ ], Statement.prototype, "clauses", void 0);
153
+ __decorate([
154
+ (0, decorator_validation_1.required)(),
155
+ (0, decorator_validation_1.type)(["object"]),
156
+ __metadata("design:type", persistence_1.Adapter)
157
+ ], Statement.prototype, "adapter", void 0);
158
+ __decorate([
159
+ (0, decorator_validation_1.required)(),
160
+ __metadata("design:type", Object)
161
+ ], Statement.prototype, "target", void 0);
162
+ __decorate([
163
+ (0, decorator_validation_1.required)(),
164
+ __metadata("design:type", String)
165
+ ], Statement.prototype, "type", void 0);
166
+
167
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,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R0FBRyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztJQUN6QixDQUFDO0lBRUQsT0FBTyxDQUFDLElBQW1CO1FBQ3pCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ25CLENBQUM7Q0FDRjtBQXZKRCw4QkF1SkM7QUFoSlc7SUFIVCxJQUFBLCtCQUFRLEdBQUU7SUFDVixJQUFBLGdDQUFTLEVBQUMsK0JBQW1CLENBQUMsTUFBTSxDQUFDO0lBQ3JDLElBQUEsMkJBQWMsR0FBRTs7MENBQzZCO0FBR3BDO0lBRlQsSUFBQSwrQkFBUSxHQUFFO0lBQ1YsSUFBQSwyQkFBSSxFQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7OEJBQ0UscUJBQU87MENBQVM7QUFFekI7SUFEVCxJQUFBLCtCQUFRLEdBQUU7O3lDQUNxQztBQUt0QztJQURULElBQUEsK0JBQVEsR0FBRTs7dUNBQ3lCIiwiZmlsZSI6InF1ZXJ5L1N0YXRlbWVudC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbnN0cnVjdG9yLFxuICBtaW5sZW5ndGgsXG4gIE1vZGVsLFxuICBNb2RlbEVycm9yRGVmaW5pdGlvbixcbiAgcmVxdWlyZWQsXG4gIHR5cGUsXG4gIHNmLFxufSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBFeGVjdXRvciwgUmF3RXhlY3V0b3IgfSBmcm9tIFwiLi4vaW50ZXJmYWNlc1wiO1xuaW1wb3J0IHsgTWFuZGF0b3J5UHJpb3JpdGllcywgU3RhdGVtZW50VHlwZSB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgUXVlcnlFcnJvciB9IGZyb20gXCIuL2Vycm9yc1wiO1xuaW1wb3J0IHsgQ2xhdXNlIH0gZnJvbSBcIi4vQ2xhdXNlXCI7XG5pbXBvcnQgeyBjbGF1c2VTZXF1ZW5jZSB9IGZyb20gXCIuLi92YWxpZGF0b3JzXCI7XG5pbXBvcnQgeyBBZGFwdGVyIH0gZnJvbSBcIi4uL3BlcnNpc3RlbmNlXCI7XG5pbXBvcnQgeyBmaW5kUHJpbWFyeUtleSwgSW50ZXJuYWxFcnJvciB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuXG4vKipcbiAqIEBzdW1tYXJ5IFN0YXRlbWVudCBDbGFzc1xuICogQGRlc2NyaXB0aW9uIGhvbGRzIGFsbCB0aGUgY2xhdXNlcyB1bnRpbCB0aGV5IGNhbiBiZSBwcm9jZXNzZWRcbiAqXG4gKiBAcGFyYW0ge01vZGVsQXJnfSBbc3RhdGVtZW50XVxuICpcbiAqIEBjbGFzcyBTdGF0ZW1lbnRcbiAqIEBleHRlbmRzIE1vZGVsXG4gKiBAaW1wbGVtZW50cyBFeGVjdXRvclxuICogQGltcGxlbWVudHMgUmF3RXhlY3V0b3JcbiAqXG4gKiBAY2F0ZWdvcnkgUXVlcnlcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFN0YXRlbWVudDxRPlxuICBleHRlbmRzIE1vZGVsXG4gIGltcGxlbWVudHMgRXhlY3V0b3IsIFJhd0V4ZWN1dG9yPFE+XG57XG4gIEByZXF1aXJlZCgpXG4gIEBtaW5sZW5ndGgoTWFuZGF0b3J5UHJpb3JpdGllcy5sZW5ndGgpXG4gIEBjbGF1c2VTZXF1ZW5jZSgpXG4gIHByb3RlY3RlZCBjbGF1c2VzPzogQ2xhdXNlPGFueT5bXSA9IHVuZGVmaW5lZDtcbiAgQHJlcXVpcmVkKClcbiAgQHR5cGUoW1wib2JqZWN0XCJdKVxuICBwcm90ZWN0ZWQgYWRhcHRlcjogQWRhcHRlcjxhbnksIFE+O1xuICBAcmVxdWlyZWQoKVxuICBwcm90ZWN0ZWQgdGFyZ2V0PzogQ29uc3RydWN0b3I8YW55PiA9IHVuZGVmaW5lZDtcblxuICBwcm90ZWN0ZWQgZnVsbFJlY29yZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEByZXF1aXJlZCgpXG4gIHByb3RlY3RlZCB0eXBlPzogc3RyaW5nID0gdW5kZWZpbmVkO1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihkYjogQWRhcHRlcjxhbnksIFE+KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFkYXB0ZXIgPSBkYjtcbiAgfVxuXG4gIHByb3RlY3RlZCBidWlsZCgpOiBRIHtcbiAgICBpZiAoIXRoaXMuY2xhdXNlcylcbiAgICAgIHRocm93IG5ldyBRdWVyeUVycm9yKHNmKFwiRmFpbGVkIHRvIGJ1aWxkIFN0YXRlbWVudDpcXG57MH1cIiwgXCJObyBDbGF1c2VzXCIpKTtcblxuICAgIHRoaXMuY2xhdXNlcy5zb3J0KChjMSwgYzIpID0+IHtcbiAgICAgIHJldHVybiBjMS5nZXRQcmlvcml0eSgpIC0gYzIuZ2V0UHJpb3JpdHkoKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGVycm9ycyA9IHRoaXMuaGFzRXJyb3JzKCk7XG4gICAgaWYgKGVycm9ycylcbiAgICAgIHRocm93IG5ldyBRdWVyeUVycm9yKFxuICAgICAgICBzZihcIlBvb3JseSBidWlsdCBzdGF0ZW1lbnQ6IHswfVwiLCBlcnJvcnMudG9TdHJpbmcoKSksXG4gICAgICApO1xuXG4gICAgbGV0IHF1ZXJ5OiBRO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBpdGVyYXRvciA9IGZ1bmN0aW9uIChcbiAgICAgICAgY2xhdXNlczogQ2xhdXNlPGFueT5bXSxcbiAgICAgICAgcHJldmlvdXM6IGFueSA9IHt9LFxuICAgICAgKTogUSB7XG4gICAgICAgIGNvbnN0IGMgPSBjbGF1c2VzLnNoaWZ0KCk7XG4gICAgICAgIGlmICghYykgcmV0dXJuIHByZXZpb3VzIGFzIFE7XG4gICAgICAgIGNvbnN0IHJlc3VsdHMgPSBjLmJ1aWxkKHByZXZpb3VzKTtcbiAgICAgICAgcmV0dXJuIGl0ZXJhdG9yKGNsYXVzZXMsIHJlc3VsdHMgYXMgYW55KTtcbiAgICAgIH07XG5cbiAgICAgIHF1ZXJ5ID0gaXRlcmF0b3IobmV3IEFycmF5KC4uLih0aGlzLmNsYXVzZXMgYXMgQ2xhdXNlPFE+W10pKSkgYXMgUTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIHRocm93IG5ldyBRdWVyeUVycm9yKGUpO1xuICAgIH1cblxuICAgIHJldHVybiBxdWVyeTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW5oZXJpdERvY1xuICAgKi9cbiAgYXN5bmMgZXhlY3V0ZTxZPigpOiBQcm9taXNlPFk+IHtcbiAgICBjb25zdCBxdWVyeTogUSA9IHRoaXMuYnVpbGQoKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0czogWSA9IChhd2FpdCB0aGlzLnJhdyhxdWVyeSkpIGFzIFk7XG4gICAgICBpZiAoIXRoaXMuZnVsbFJlY29yZCkgcmV0dXJuIHJlc3VsdHM7XG4gICAgICByZXR1cm4gQXJyYXkuaXNBcnJheShyZXN1bHRzKVxuICAgICAgICA/IHJlc3VsdHMubWFwKChlbCkgPT4gbmV3ICh0aGlzLnRhcmdldCBhcyBDb25zdHJ1Y3Rvcjxhbnk+KShlbCkpXG4gICAgICAgIDogbmV3ICh0aGlzLnRhcmdldCBhcyBDb25zdHJ1Y3Rvcjxhbnk+KShyZXN1bHRzKTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKGUpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHJhdzxSPihyYXdJbnB1dDogUSwgLi4uYXJnczogYW55W10pOiBQcm9taXNlPFI+IHtcbiAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgdGhpcy5hZGFwdGVyLnJhdzxSPihyYXdJbnB1dCwgLi4uYXJncyk7XG4gICAgaWYgKCF0aGlzLmZ1bGxSZWNvcmQpIHJldHVybiByZXN1bHRzO1xuICAgIGlmICghdGhpcy50YXJnZXQpXG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgICAgXCJObyB0YXJnZXQgZGVmaW5lZCBpbiBzdGF0ZW1lbnQuIHNob3VsZCBuZXZlciBoYXBwZW5cIixcbiAgICAgICk7XG5cbiAgICBjb25zdCBwa0F0dHIgPSBmaW5kUHJpbWFyeUtleShuZXcgdGhpcy50YXJnZXQoKSBhcyBhbnkpLmlkO1xuXG4gICAgY29uc3QgcHJvY2Vzc29yID0gZnVuY3Rpb24gcmVjb3JkUHJvY2Vzc29yKHRoaXM6IFN0YXRlbWVudDxRPiwgcjogYW55KSB7XG4gICAgICBjb25zdCBpZCA9IHJbcGtBdHRyXTtcbiAgICAgIHJldHVybiB0aGlzLmFkYXB0ZXIucmV2ZXJ0KFxuICAgICAgICByLFxuICAgICAgICB0aGlzLnRhcmdldCBhcyBDb25zdHJ1Y3Rvcjxhbnk+LFxuICAgICAgICBwa0F0dHIsXG4gICAgICAgIGlkLFxuICAgICAgKSBhcyBhbnk7XG4gICAgfS5iaW5kKHRoaXMpO1xuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkocmVzdWx0cykpIHJldHVybiByZXN1bHRzLm1hcChwcm9jZXNzb3IpIGFzIFI7XG4gICAgcmV0dXJuIHByb2Nlc3NvcihyZXN1bHRzKSBhcyBSO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbmhlcml0RG9jXG4gICAqL1xuICBoYXNFcnJvcnMoLi4uZXhjZXB0aW9uczogc3RyaW5nW10pOiBNb2RlbEVycm9yRGVmaW5pdGlvbiB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgZXJyb3JzID0gc3VwZXIuaGFzRXJyb3JzKC4uLmV4Y2VwdGlvbnMpO1xuICAgIGlmIChlcnJvcnMpIHJldHVybiBlcnJvcnM7XG5cbiAgICBmb3IgKGNvbnN0IGkgaW4gdGhpcy5jbGF1c2VzKSB7XG4gICAgICBjb25zdCBlcnIgPSB0aGlzLmNsYXVzZXNbaSBhcyBhbnldLmhhc0Vycm9ycygpO1xuICAgICAgaWYgKGVycikgcmV0dXJuIGVycjtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgQWRkcyBhIGNsYXVzZSB0byB0aGUgU3RhdGVtZW50XG4gICAqIEBwYXJhbSB7Q2xhdXNlfSBjbGF1c2VcbiAgICovXG4gIGFkZENsYXVzZShjbGF1c2U6IENsYXVzZTxRPikge1xuICAgIGlmICghdGhpcy5jbGF1c2VzKSB0aGlzLmNsYXVzZXMgPSBbXTtcblxuICAgIGNvbnN0IHByaW9yaXR5ID0gY2xhdXNlLmdldFByaW9yaXR5KCk7XG4gICAgY29uc3QgY3VycmVudFByaW9yaXR5ID0gdGhpcy5jbGF1c2VzXG4gICAgICAubWFwKChjLCBpKSA9PiAoeyBpbmRleDogaSwgY2xhdXNlOiBjIH0pKVxuICAgICAgLmZpbmQoKGMpID0+IGMuY2xhdXNlLmdldFByaW9yaXR5KCkgPT09IHByaW9yaXR5KTtcbiAgICBpZiAoY3VycmVudFByaW9yaXR5KSB7XG4gICAgICB0aGlzLmNsYXVzZXNbY3VycmVudFByaW9yaXR5LmluZGV4XSA9IGNsYXVzZTtcbiAgICB9XG4gICAgdGhpcy5jbGF1c2VzLnB1c2goY2xhdXNlKTtcbiAgfVxuXG4gIGdldEFkYXB0ZXIoKTogQWRhcHRlcjxhbnksIFE+IHtcbiAgICByZXR1cm4gdGhpcy5hZGFwdGVyO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIG91dHB1dCBjbGFzcyAod2hlbiBleGlzdGluZylcbiAgICogQHBhcmFtIHtDb25zdHJ1Y3Rvcn0gY2xhenpcbiAgICovXG4gIHNldFRhcmdldChjbGF6ejogQ29uc3RydWN0b3I8YW55Pikge1xuICAgIGlmICh0aGlzLnRhcmdldClcbiAgICAgIHRocm93IG5ldyBRdWVyeUVycm9yKFxuICAgICAgICBzZihcIk91dHB1dCBjbGFzcyBhbHJlYWR5IGRlZmluZWQgdG8gezB9XCIsIHRoaXMudGFyZ2V0IS5uYW1lKSxcbiAgICAgICk7XG4gICAgdGhpcy50YXJnZXQgPSBjbGF6ejtcbiAgfVxuXG4gIHNldEZ1bGxSZWNvcmQoKSB7XG4gICAgdGhpcy5mdWxsUmVjb3JkID0gdHJ1ZTtcbiAgfVxuXG4gIHNldE1vZGUodHlwZTogU3RhdGVtZW50VHlwZSkge1xuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,49 @@
1
+ import { Constructor, Model, ModelErrorDefinition } from "@decaf-ts/decorator-validation";
2
+ import { Executor, RawExecutor } from "../interfaces";
3
+ import { StatementType } from "./constants";
4
+ import { Clause } from "./Clause";
5
+ import { Adapter } from "../persistence";
6
+ /**
7
+ * @summary Statement Class
8
+ * @description holds all the clauses until they can be processed
9
+ *
10
+ * @param {ModelArg} [statement]
11
+ *
12
+ * @class Statement
13
+ * @extends Model
14
+ * @implements Executor
15
+ * @implements RawExecutor
16
+ *
17
+ * @category Query
18
+ */
19
+ export declare abstract class Statement<Q> extends Model implements Executor, RawExecutor<Q> {
20
+ protected clauses?: Clause<any>[];
21
+ protected adapter: Adapter<any, Q>;
22
+ protected target?: Constructor<any>;
23
+ protected fullRecord: boolean;
24
+ protected type?: string;
25
+ protected constructor(db: Adapter<any, Q>);
26
+ protected build(): Q;
27
+ /**
28
+ * @inheritDoc
29
+ */
30
+ execute<Y>(): Promise<Y>;
31
+ raw<R>(rawInput: Q, ...args: any[]): Promise<R>;
32
+ /**
33
+ * @inheritDoc
34
+ */
35
+ hasErrors(...exceptions: string[]): ModelErrorDefinition | undefined;
36
+ /**
37
+ * @summary Adds a clause to the Statement
38
+ * @param {Clause} clause
39
+ */
40
+ addClause(clause: Clause<Q>): void;
41
+ getAdapter(): Adapter<any, Q>;
42
+ /**
43
+ * @summary Defines the output class (when existing)
44
+ * @param {Constructor} clazz
45
+ */
46
+ setTarget(clazz: Constructor<any>): void;
47
+ setFullRecord(): void;
48
+ setMode(type: StatementType): void;
49
+ }
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FromClause = void 0;
4
+ const constants_1 = require("../constants.cjs");
5
+ const SelectorBasedClause_1 = require("./SelectorBasedClause.cjs");
6
+ const errors_1 = require("../errors.cjs");
7
+ const decorator_validation_1 = require("@decaf-ts/decorator-validation");
8
+ /**
9
+ * @summary The FROM clause
10
+ *
11
+ * @param {ModelArg} [clause]
12
+ *
13
+ * @class FromClause
14
+ * @extends SelectorBasedClause
15
+ * @implements WhereOption
16
+ *
17
+ * @category Query
18
+ * @subcategory Clauses
19
+ */
20
+ class FromClause extends SelectorBasedClause_1.SelectorBasedClause {
21
+ constructor(clause) {
22
+ super(Object.assign({}, clause, { priority: constants_1.Priority.FROM }));
23
+ this.selector =
24
+ typeof this.selector === "string"
25
+ ? decorator_validation_1.Model.get(this.selector)
26
+ : this.selector;
27
+ if (!this.selector)
28
+ throw new errors_1.QueryError((0, decorator_validation_1.stringFormat)("Could not find selector model: {0}"));
29
+ this.statement.setTarget(this.selector);
30
+ }
31
+ /**
32
+ * @inheritDoc
33
+ */
34
+ where(condition) {
35
+ return this.Clauses.where(this.statement, condition);
36
+ }
37
+ /**
38
+ * @inheritDoc
39
+ */
40
+ orderBy(...selector) {
41
+ return this.Clauses.orderBy(this.statement, selector);
42
+ }
43
+ /**
44
+ * @inheritDoc
45
+ */
46
+ groupBy(selector) {
47
+ return this.Clauses.groupBy(this.statement, selector);
48
+ }
49
+ /**
50
+ * @inheritDoc
51
+ */
52
+ limit(selector) {
53
+ return this.Clauses.limit(this.statement, selector);
54
+ }
55
+ /**
56
+ * @inheritDoc
57
+ */
58
+ offset(selector) {
59
+ return this.Clauses.offset(this.statement, selector);
60
+ }
61
+ }
62
+ exports.FromClause = FromClause;
63
+
64
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9xdWVyeS9jbGF1c2VzL0Zyb21DbGF1c2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNENBQXdDO0FBY3hDLCtEQUE0RDtBQUU1RCxzQ0FBdUM7QUFFdkMseUVBS3dDO0FBRXhDOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBc0IsVUFDcEIsU0FBUSx5Q0FBdUM7SUFHL0MsWUFBc0IsTUFBbUM7UUFDdkQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLFFBQVEsRUFBRSxvQkFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM5RCxJQUFJLENBQUMsUUFBUTtZQUNYLE9BQU8sSUFBSSxDQUFDLFFBQVEsS0FBSyxRQUFRO2dCQUMvQixDQUFDLENBQUMsNEJBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztnQkFDMUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRO1lBQ2hCLE1BQU0sSUFBSSxtQkFBVSxDQUFDLElBQUEsbUNBQVksRUFBQyxvQ0FBb0MsQ0FBQyxDQUFDLENBQUM7UUFDM0UsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQTBCLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBT0Q7O09BRUc7SUFDSCxLQUFLLENBQUMsU0FBb0I7UUFDeEIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFDRDs7T0FFRztJQUNILE9BQU8sQ0FBQyxHQUFHLFFBQTJCO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBQ0Q7O09BRUc7SUFDSCxPQUFPLENBQUMsUUFBeUI7UUFDL0IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFDRDs7T0FFRztJQUNILEtBQUssQ0FBQyxRQUF1QjtRQUMzQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUNEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLFFBQXdCO1FBQzdCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUN2RCxDQUFDO0NBQ0Y7QUFsREQsZ0NBa0RDIiwiZmlsZSI6InF1ZXJ5L2NsYXVzZXMvRnJvbUNsYXVzZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByaW9yaXR5IH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuaW1wb3J0IHtcbiAgRnJvbVNlbGVjdG9yLFxuICBHcm91cEJ5U2VsZWN0b3IsXG4gIExpbWl0U2VsZWN0b3IsXG4gIE9mZnNldFNlbGVjdG9yLFxuICBPcmRlckJ5U2VsZWN0b3IsXG59IGZyb20gXCIuLi9zZWxlY3RvcnNcIjtcbmltcG9ydCB7XG4gIExpbWl0T3B0aW9uLFxuICBPZmZzZXRPcHRpb24sXG4gIE9yZGVyQW5kR3JvdXBPcHRpb24sXG4gIFdoZXJlT3B0aW9uLFxufSBmcm9tIFwiLi4vb3B0aW9uc1wiO1xuaW1wb3J0IHsgU2VsZWN0b3JCYXNlZENsYXVzZSB9IGZyb20gXCIuL1NlbGVjdG9yQmFzZWRDbGF1c2VcIjtcbmltcG9ydCB7IEV4ZWN1dG9yIH0gZnJvbSBcIi4uLy4uL2ludGVyZmFjZXNcIjtcbmltcG9ydCB7IFF1ZXJ5RXJyb3IgfSBmcm9tIFwiLi4vZXJyb3JzXCI7XG5pbXBvcnQgeyBDb25kaXRpb24gfSBmcm9tIFwiLi4vQ29uZGl0aW9uXCI7XG5pbXBvcnQge1xuICBDb25zdHJ1Y3RvcixcbiAgTW9kZWwsXG4gIE1vZGVsQXJnLFxuICBzdHJpbmdGb3JtYXQsXG59IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcblxuLyoqXG4gKiBAc3VtbWFyeSBUaGUgRlJPTSBjbGF1c2VcbiAqXG4gKiBAcGFyYW0ge01vZGVsQXJnfSBbY2xhdXNlXVxuICpcbiAqIEBjbGFzcyBGcm9tQ2xhdXNlXG4gKiBAZXh0ZW5kcyBTZWxlY3RvckJhc2VkQ2xhdXNlXG4gKiBAaW1wbGVtZW50cyBXaGVyZU9wdGlvblxuICpcbiAqIEBjYXRlZ29yeSBRdWVyeVxuICogQHN1YmNhdGVnb3J5IENsYXVzZXNcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEZyb21DbGF1c2U8USwgTSBleHRlbmRzIE1vZGVsPlxuICBleHRlbmRzIFNlbGVjdG9yQmFzZWRDbGF1c2U8USwgRnJvbVNlbGVjdG9yPE0+PlxuICBpbXBsZW1lbnRzIFdoZXJlT3B0aW9uXG57XG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihjbGF1c2U/OiBNb2RlbEFyZzxGcm9tQ2xhdXNlPFEsIE0+Pikge1xuICAgIHN1cGVyKE9iamVjdC5hc3NpZ24oe30sIGNsYXVzZSwgeyBwcmlvcml0eTogUHJpb3JpdHkuRlJPTSB9KSk7XG4gICAgdGhpcy5zZWxlY3RvciA9XG4gICAgICB0eXBlb2YgdGhpcy5zZWxlY3RvciA9PT0gXCJzdHJpbmdcIlxuICAgICAgICA/IE1vZGVsLmdldCh0aGlzLnNlbGVjdG9yKVxuICAgICAgICA6IHRoaXMuc2VsZWN0b3I7XG4gICAgaWYgKCF0aGlzLnNlbGVjdG9yKVxuICAgICAgdGhyb3cgbmV3IFF1ZXJ5RXJyb3Ioc3RyaW5nRm9ybWF0KFwiQ291bGQgbm90IGZpbmQgc2VsZWN0b3IgbW9kZWw6IHswfVwiKSk7XG4gICAgdGhpcy5zdGF0ZW1lbnQuc2V0VGFyZ2V0KHRoaXMuc2VsZWN0b3IgYXMgQ29uc3RydWN0b3I8TT4pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbmhlcml0RG9jXG4gICAqL1xuICBhYnN0cmFjdCBidWlsZChxdWVyeTogUSk6IFE7XG5cbiAgLyoqXG4gICAqIEBpbmhlcml0RG9jXG4gICAqL1xuICB3aGVyZShjb25kaXRpb246IENvbmRpdGlvbik6IE9yZGVyQW5kR3JvdXBPcHRpb24ge1xuICAgIHJldHVybiB0aGlzLkNsYXVzZXMud2hlcmUodGhpcy5zdGF0ZW1lbnQsIGNvbmRpdGlvbik7XG4gIH1cbiAgLyoqXG4gICAqIEBpbmhlcml0RG9jXG4gICAqL1xuICBvcmRlckJ5KC4uLnNlbGVjdG9yOiBPcmRlckJ5U2VsZWN0b3JbXSk6IExpbWl0T3B0aW9uICYgT2Zmc2V0T3B0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5DbGF1c2VzLm9yZGVyQnkodGhpcy5zdGF0ZW1lbnQsIHNlbGVjdG9yKTtcbiAgfVxuICAvKipcbiAgICogQGluaGVyaXREb2NcbiAgICovXG4gIGdyb3VwQnkoc2VsZWN0b3I6IEdyb3VwQnlTZWxlY3Rvcik6IEV4ZWN1dG9yIHtcbiAgICByZXR1cm4gdGhpcy5DbGF1c2VzLmdyb3VwQnkodGhpcy5zdGF0ZW1lbnQsIHNlbGVjdG9yKTtcbiAgfVxuICAvKipcbiAgICogQGluaGVyaXREb2NcbiAgICovXG4gIGxpbWl0KHNlbGVjdG9yOiBMaW1pdFNlbGVjdG9yKTogT2Zmc2V0T3B0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5DbGF1c2VzLmxpbWl0KHRoaXMuc3RhdGVtZW50LCBzZWxlY3Rvcik7XG4gIH1cbiAgLyoqXG4gICAqIEBpbmhlcml0RG9jXG4gICAqL1xuICBvZmZzZXQoc2VsZWN0b3I6IE9mZnNldFNlbGVjdG9yKTogRXhlY3V0b3Ige1xuICAgIHJldHVybiB0aGlzLkNsYXVzZXMub2Zmc2V0KHRoaXMuc3RhdGVtZW50LCBzZWxlY3Rvcik7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,45 @@
1
+ import { FromSelector, GroupBySelector, LimitSelector, OffsetSelector, OrderBySelector } from "../selectors";
2
+ import { LimitOption, OffsetOption, OrderAndGroupOption, WhereOption } from "../options";
3
+ import { SelectorBasedClause } from "./SelectorBasedClause";
4
+ import { Executor } from "../../interfaces";
5
+ import { Condition } from "../Condition";
6
+ import { Model, ModelArg } from "@decaf-ts/decorator-validation";
7
+ /**
8
+ * @summary The FROM clause
9
+ *
10
+ * @param {ModelArg} [clause]
11
+ *
12
+ * @class FromClause
13
+ * @extends SelectorBasedClause
14
+ * @implements WhereOption
15
+ *
16
+ * @category Query
17
+ * @subcategory Clauses
18
+ */
19
+ export declare abstract class FromClause<Q, M extends Model> extends SelectorBasedClause<Q, FromSelector<M>> implements WhereOption {
20
+ protected constructor(clause?: ModelArg<FromClause<Q, M>>);
21
+ /**
22
+ * @inheritDoc
23
+ */
24
+ abstract build(query: Q): Q;
25
+ /**
26
+ * @inheritDoc
27
+ */
28
+ where(condition: Condition): OrderAndGroupOption;
29
+ /**
30
+ * @inheritDoc
31
+ */
32
+ orderBy(...selector: OrderBySelector[]): LimitOption & OffsetOption;
33
+ /**
34
+ * @inheritDoc
35
+ */
36
+ groupBy(selector: GroupBySelector): Executor;
37
+ /**
38
+ * @inheritDoc
39
+ */
40
+ limit(selector: LimitSelector): OffsetOption;
41
+ /**
42
+ * @inheritDoc
43
+ */
44
+ offset(selector: OffsetSelector): Executor;
45
+ }
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GroupByClause = void 0;
4
+ const constants_1 = require("../constants.cjs");
5
+ const SelectorBasedClause_1 = require("./SelectorBasedClause.cjs");
6
+ /**
7
+ * @summary The GROUP BY clause
8
+ *
9
+ * @param {ClauseArg} [clause]
10
+ *
11
+ * @class GroupByClause
12
+ * @extends SelectorBasedClause
13
+ *
14
+ * @category Query
15
+ * @subcategory Clauses
16
+ */
17
+ class GroupByClause extends SelectorBasedClause_1.SelectorBasedClause {
18
+ constructor(clause) {
19
+ super(Object.assign({}, clause, { priority: constants_1.Priority.GROUP_BY }));
20
+ }
21
+ }
22
+ exports.GroupByClause = GroupByClause;
23
+
24
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9xdWVyeS9jbGF1c2VzL0dyb3VwQnlDbGF1c2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsNENBQXdDO0FBQ3hDLCtEQUE0RDtBQUU1RDs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBc0IsYUFBaUIsU0FBUSx5Q0FHOUM7SUFDQyxZQUFzQixNQUFtQztRQUN2RCxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsUUFBUSxFQUFFLG9CQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7Q0FLRjtBQVhELHNDQVdDIiwiZmlsZSI6InF1ZXJ5L2NsYXVzZXMvR3JvdXBCeUNsYXVzZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vZGVsQXJnIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgR3JvdXBCeVNlbGVjdG9yIH0gZnJvbSBcIi4uL3NlbGVjdG9yc1wiO1xuaW1wb3J0IHsgUHJpb3JpdHkgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBTZWxlY3RvckJhc2VkQ2xhdXNlIH0gZnJvbSBcIi4vU2VsZWN0b3JCYXNlZENsYXVzZVwiO1xuXG4vKipcbiAqIEBzdW1tYXJ5IFRoZSBHUk9VUCBCWSBjbGF1c2VcbiAqXG4gKiBAcGFyYW0ge0NsYXVzZUFyZ30gW2NsYXVzZV1cbiAqXG4gKiBAY2xhc3MgR3JvdXBCeUNsYXVzZVxuICogQGV4dGVuZHMgU2VsZWN0b3JCYXNlZENsYXVzZVxuICpcbiAqIEBjYXRlZ29yeSBRdWVyeVxuICogQHN1YmNhdGVnb3J5IENsYXVzZXNcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEdyb3VwQnlDbGF1c2U8UT4gZXh0ZW5kcyBTZWxlY3RvckJhc2VkQ2xhdXNlPFxuICBRLFxuICBHcm91cEJ5U2VsZWN0b3Jcbj4ge1xuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoY2xhdXNlPzogTW9kZWxBcmc8R3JvdXBCeUNsYXVzZTxRPj4pIHtcbiAgICBzdXBlcihPYmplY3QuYXNzaWduKHt9LCBjbGF1c2UsIHsgcHJpb3JpdHk6IFByaW9yaXR5LkdST1VQX0JZIH0pKTtcbiAgfVxuICAvKipcbiAgICogQGluaGVyaXREb2NcbiAgICovXG4gIGFic3RyYWN0IGJ1aWxkKHF1ZXJ5OiBRKTogUTtcbn1cbiJdfQ==
@@ -0,0 +1,21 @@
1
+ import { ModelArg } from "@decaf-ts/decorator-validation";
2
+ import { GroupBySelector } from "../selectors";
3
+ import { SelectorBasedClause } from "./SelectorBasedClause";
4
+ /**
5
+ * @summary The GROUP BY clause
6
+ *
7
+ * @param {ClauseArg} [clause]
8
+ *
9
+ * @class GroupByClause
10
+ * @extends SelectorBasedClause
11
+ *
12
+ * @category Query
13
+ * @subcategory Clauses
14
+ */
15
+ export declare abstract class GroupByClause<Q> extends SelectorBasedClause<Q, GroupBySelector> {
16
+ protected constructor(clause?: ModelArg<GroupByClause<Q>>);
17
+ /**
18
+ * @inheritDoc
19
+ */
20
+ abstract build(query: Q): Q;
21
+ }
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ 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;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.InsertClause = void 0;
13
+ const constants_1 = require("../constants.cjs");
14
+ const Clause_1 = require("../Clause.cjs");
15
+ const decorator_validation_1 = require("@decaf-ts/decorator-validation");
16
+ /**
17
+ * @summary The INSERT/INTO clause
18
+ *
19
+ * @param {ClauseArg} [clause]
20
+ *
21
+ * @class FromClause
22
+ * @extends Clause
23
+ * @implements IntoOption
24
+ *
25
+ * @category Query
26
+ * @subcategory Clauses
27
+ */
28
+ class InsertClause extends Clause_1.Clause {
29
+ constructor(clause) {
30
+ super(Object.assign({}, clause, { priority: constants_1.Priority.SELECT }));
31
+ this.table = undefined;
32
+ }
33
+ /**
34
+ * @inheritDoc
35
+ */
36
+ into(table) {
37
+ this.table = table.name; // TODO get mapped name
38
+ this.statement.setTarget(table);
39
+ return this;
40
+ }
41
+ /**
42
+ * @inheritDoc
43
+ */
44
+ values(...models) {
45
+ return this.Clauses.values(this.statement, models);
46
+ }
47
+ /**
48
+ * @inheritDoc
49
+ */
50
+ where(condition) {
51
+ return this.Clauses.where(this.statement, condition);
52
+ }
53
+ }
54
+ exports.InsertClause = InsertClause;
55
+ __decorate([
56
+ (0, decorator_validation_1.required)(),
57
+ __metadata("design:type", String)
58
+ ], InsertClause.prototype, "table", void 0);
59
+
60
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9xdWVyeS9jbGF1c2VzL0luc2VydENsYXVzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFFQSw0Q0FBd0M7QUFDeEMsc0NBQW1DO0FBQ25DLHlFQUt3QztBQUd4Qzs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQXNCLFlBQ3BCLFNBQVEsZUFBUztJQU1qQixZQUFzQixNQUFxQztRQUN6RCxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsUUFBUSxFQUFFLG9CQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBSHhELFVBQUssR0FBWSxTQUFTLENBQUM7SUFJckMsQ0FBQztJQU1EOztPQUVHO0lBQ0gsSUFBSSxDQUFDLEtBQXFCO1FBQ3hCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLHVCQUF1QjtRQUNoRCxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRDs7T0FFRztJQUNILE1BQU0sQ0FBQyxHQUFHLE1BQVc7UUFDbkIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFDRDs7T0FFRztJQUNILEtBQUssQ0FBQyxTQUFvQjtRQUN4QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDdkQsQ0FBQztDQUNGO0FBbkNELG9DQW1DQztBQTlCVztJQURULElBQUEsK0JBQVEsR0FBRTs7MkNBQzBCIiwiZmlsZSI6InF1ZXJ5L2NsYXVzZXMvSW5zZXJ0Q2xhdXNlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uZGl0aW9uIH0gZnJvbSBcIi4uL0NvbmRpdGlvblwiO1xuaW1wb3J0IHsgSW5zZXJ0T3B0aW9uLCBJbnRvT3B0aW9uLCBPcmRlckFuZEdyb3VwT3B0aW9uIH0gZnJvbSBcIi4uL29wdGlvbnNcIjtcbmltcG9ydCB7IFByaW9yaXR5IH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgQ2xhdXNlIH0gZnJvbSBcIi4uL0NsYXVzZVwiO1xuaW1wb3J0IHtcbiAgQ29uc3RydWN0b3IsXG4gIE1vZGVsLFxuICBNb2RlbEFyZyxcbiAgcmVxdWlyZWQsXG59IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IEV4ZWN1dG9yIH0gZnJvbSBcIi4uLy4uL2ludGVyZmFjZXNcIjtcblxuLyoqXG4gKiBAc3VtbWFyeSBUaGUgSU5TRVJUL0lOVE8gY2xhdXNlXG4gKlxuICogQHBhcmFtIHtDbGF1c2VBcmd9IFtjbGF1c2VdXG4gKlxuICogQGNsYXNzIEZyb21DbGF1c2VcbiAqIEBleHRlbmRzIENsYXVzZVxuICogQGltcGxlbWVudHMgSW50b09wdGlvblxuICpcbiAqIEBjYXRlZ29yeSBRdWVyeVxuICogQHN1YmNhdGVnb3J5IENsYXVzZXNcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEluc2VydENsYXVzZTxRLCBNIGV4dGVuZHMgTW9kZWw+XG4gIGV4dGVuZHMgQ2xhdXNlPFE+XG4gIGltcGxlbWVudHMgSW5zZXJ0T3B0aW9uPE0+LCBJbnRvT3B0aW9uPE0+XG57XG4gIEByZXF1aXJlZCgpXG4gIHByb3RlY3RlZCB0YWJsZT86IHN0cmluZyA9IHVuZGVmaW5lZDtcblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoY2xhdXNlPzogTW9kZWxBcmc8SW5zZXJ0Q2xhdXNlPFEsIE0+Pikge1xuICAgIHN1cGVyKE9iamVjdC5hc3NpZ24oe30sIGNsYXVzZSwgeyBwcmlvcml0eTogUHJpb3JpdHkuU0VMRUNUIH0pKTtcbiAgfVxuICAvKipcbiAgICogQGluaGVyaXREb2NcbiAgICovXG4gIGFic3RyYWN0IGJ1aWxkKHF1ZXJ5OiBRKTogUTtcblxuICAvKipcbiAgICogQGluaGVyaXREb2NcbiAgICovXG4gIGludG8odGFibGU6IENvbnN0cnVjdG9yPE0+KTogSW50b09wdGlvbjxNPiB7XG4gICAgdGhpcy50YWJsZSA9IHRhYmxlLm5hbWU7IC8vIFRPRE8gZ2V0IG1hcHBlZCBuYW1lXG4gICAgdGhpcy5zdGF0ZW1lbnQuc2V0VGFyZ2V0KHRhYmxlKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICAvKipcbiAgICogQGluaGVyaXREb2NcbiAgICovXG4gIHZhbHVlcyguLi5tb2RlbHM6IE1bXSk6IEV4ZWN1dG9yIHtcbiAgICByZXR1cm4gdGhpcy5DbGF1c2VzLnZhbHVlcyh0aGlzLnN0YXRlbWVudCwgbW9kZWxzKTtcbiAgfVxuICAvKipcbiAgICogQGluaGVyaXREb2NcbiAgICovXG4gIHdoZXJlKGNvbmRpdGlvbjogQ29uZGl0aW9uKTogT3JkZXJBbmRHcm91cE9wdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuQ2xhdXNlcy53aGVyZSh0aGlzLnN0YXRlbWVudCwgY29uZGl0aW9uKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,37 @@
1
+ import { Condition } from "../Condition";
2
+ import { InsertOption, IntoOption, OrderAndGroupOption } from "../options";
3
+ import { Clause } from "../Clause";
4
+ import { Constructor, Model, ModelArg } from "@decaf-ts/decorator-validation";
5
+ import { Executor } from "../../interfaces";
6
+ /**
7
+ * @summary The INSERT/INTO clause
8
+ *
9
+ * @param {ClauseArg} [clause]
10
+ *
11
+ * @class FromClause
12
+ * @extends Clause
13
+ * @implements IntoOption
14
+ *
15
+ * @category Query
16
+ * @subcategory Clauses
17
+ */
18
+ export declare abstract class InsertClause<Q, M extends Model> extends Clause<Q> implements InsertOption<M>, IntoOption<M> {
19
+ protected table?: string;
20
+ protected constructor(clause?: ModelArg<InsertClause<Q, M>>);
21
+ /**
22
+ * @inheritDoc
23
+ */
24
+ abstract build(query: Q): Q;
25
+ /**
26
+ * @inheritDoc
27
+ */
28
+ into(table: Constructor<M>): IntoOption<M>;
29
+ /**
30
+ * @inheritDoc
31
+ */
32
+ values(...models: M[]): Executor;
33
+ /**
34
+ * @inheritDoc
35
+ */
36
+ where(condition: Condition): OrderAndGroupOption;
37
+ }
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LimitClause = void 0;
4
+ const SelectorBasedClause_1 = require("./SelectorBasedClause.cjs");
5
+ const constants_1 = require("../constants.cjs");
6
+ /**
7
+ * @summary Limit Clause
8
+ * @description Limits the results
9
+ *
10
+ * @param {ClauseArg} [clause]
11
+ *
12
+ * @class LimitClause
13
+ * @extends SelectorBasedClause<T>
14
+ * @implements OffsetOption<T>
15
+ *
16
+ * @category Query
17
+ * @subcategory Clauses
18
+ */
19
+ class LimitClause extends SelectorBasedClause_1.SelectorBasedClause {
20
+ constructor(clause) {
21
+ super(Object.assign({}, clause, { priority: constants_1.Priority.GROUP_BY }));
22
+ }
23
+ /**
24
+ * @inheritDoc
25
+ */
26
+ offset(selector) {
27
+ return this.Clauses.offset(this.statement, selector);
28
+ }
29
+ }
30
+ exports.LimitClause = LimitClause;
31
+
32
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9xdWVyeS9jbGF1c2VzL0xpbWl0Q2xhdXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtEQUE0RDtBQUk1RCw0Q0FBd0M7QUFHeEM7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsTUFBc0IsV0FDcEIsU0FBUSx5Q0FBcUM7SUFHN0MsWUFBc0IsTUFBaUM7UUFDckQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLFFBQVEsRUFBRSxvQkFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBS0Q7O09BRUc7SUFDSCxNQUFNLENBQUMsUUFBd0I7UUFDN0IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7Q0FDRjtBQWpCRCxrQ0FpQkMiLCJmaWxlIjoicXVlcnkvY2xhdXNlcy9MaW1pdENsYXVzZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNlbGVjdG9yQmFzZWRDbGF1c2UgfSBmcm9tIFwiLi9TZWxlY3RvckJhc2VkQ2xhdXNlXCI7XG5pbXBvcnQgeyBPZmZzZXRPcHRpb24gfSBmcm9tIFwiLi4vb3B0aW9uc1wiO1xuaW1wb3J0IHsgRXhlY3V0b3IgfSBmcm9tIFwiLi4vLi4vaW50ZXJmYWNlc1wiO1xuaW1wb3J0IHsgTGltaXRTZWxlY3RvciwgT2Zmc2V0U2VsZWN0b3IgfSBmcm9tIFwiLi4vc2VsZWN0b3JzXCI7XG5pbXBvcnQgeyBQcmlvcml0eSB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IE1vZGVsQXJnIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuXG4vKipcbiAqIEBzdW1tYXJ5IExpbWl0IENsYXVzZVxuICogQGRlc2NyaXB0aW9uIExpbWl0cyB0aGUgcmVzdWx0c1xuICpcbiAqIEBwYXJhbSB7Q2xhdXNlQXJnfSBbY2xhdXNlXVxuICpcbiAqIEBjbGFzcyBMaW1pdENsYXVzZVxuICogQGV4dGVuZHMgU2VsZWN0b3JCYXNlZENsYXVzZTxUPlxuICogQGltcGxlbWVudHMgT2Zmc2V0T3B0aW9uPFQ+XG4gKlxuICogQGNhdGVnb3J5IFF1ZXJ5XG4gKiBAc3ViY2F0ZWdvcnkgQ2xhdXNlc1xuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTGltaXRDbGF1c2U8UT5cbiAgZXh0ZW5kcyBTZWxlY3RvckJhc2VkQ2xhdXNlPFEsIExpbWl0U2VsZWN0b3I+XG4gIGltcGxlbWVudHMgT2Zmc2V0T3B0aW9uXG57XG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihjbGF1c2U/OiBNb2RlbEFyZzxMaW1pdENsYXVzZTxRPj4pIHtcbiAgICBzdXBlcihPYmplY3QuYXNzaWduKHt9LCBjbGF1c2UsIHsgcHJpb3JpdHk6IFByaW9yaXR5LkdST1VQX0JZIH0pKTtcbiAgfVxuICAvKipcbiAgICogQGluaGVyaXREb2NcbiAgICovXG4gIGFic3RyYWN0IGJ1aWxkKHF1ZXJ5OiBRKTogUTtcbiAgLyoqXG4gICAqIEBpbmhlcml0RG9jXG4gICAqL1xuICBvZmZzZXQoc2VsZWN0b3I6IE9mZnNldFNlbGVjdG9yKTogRXhlY3V0b3Ige1xuICAgIHJldHVybiB0aGlzLkNsYXVzZXMub2Zmc2V0KHRoaXMuc3RhdGVtZW50LCBzZWxlY3Rvcik7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,29 @@
1
+ import { SelectorBasedClause } from "./SelectorBasedClause";
2
+ import { OffsetOption } from "../options";
3
+ import { Executor } from "../../interfaces";
4
+ import { LimitSelector, OffsetSelector } from "../selectors";
5
+ import { ModelArg } from "@decaf-ts/decorator-validation";
6
+ /**
7
+ * @summary Limit Clause
8
+ * @description Limits the results
9
+ *
10
+ * @param {ClauseArg} [clause]
11
+ *
12
+ * @class LimitClause
13
+ * @extends SelectorBasedClause<T>
14
+ * @implements OffsetOption<T>
15
+ *
16
+ * @category Query
17
+ * @subcategory Clauses
18
+ */
19
+ export declare abstract class LimitClause<Q> extends SelectorBasedClause<Q, LimitSelector> implements OffsetOption {
20
+ protected constructor(clause?: ModelArg<LimitClause<Q>>);
21
+ /**
22
+ * @inheritDoc
23
+ */
24
+ abstract build(query: Q): Q;
25
+ /**
26
+ * @inheritDoc
27
+ */
28
+ offset(selector: OffsetSelector): Executor;
29
+ }
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OffsetClause = void 0;
4
+ const SelectorBasedClause_1 = require("./SelectorBasedClause.cjs");
5
+ const constants_1 = require("../constants.cjs");
6
+ /**
7
+ * @summary The OFFSET clause
8
+ *
9
+ * @param {ClauseArg} [clause]
10
+ *
11
+ * @class FromClause
12
+ * @extends SelectorBasedClause
13
+ *
14
+ * @category Query
15
+ * @subcategory Clauses
16
+ */
17
+ class OffsetClause extends SelectorBasedClause_1.SelectorBasedClause {
18
+ constructor(clause) {
19
+ super(Object.assign({}, clause, { priority: constants_1.Priority.GROUP_BY }));
20
+ }
21
+ }
22
+ exports.OffsetClause = OffsetClause;
23
+
24
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9xdWVyeS9jbGF1c2VzL09mZnNldENsYXVzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrREFBNEQ7QUFFNUQsNENBQXdDO0FBR3hDOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFzQixZQUFnQixTQUFRLHlDQUc3QztJQUNDLFlBQXNCLE1BQWtDO1FBQ3RELEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxRQUFRLEVBQUUsb0JBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDcEUsQ0FBQztDQUtGO0FBWEQsb0NBV0MiLCJmaWxlIjoicXVlcnkvY2xhdXNlcy9PZmZzZXRDbGF1c2UuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZWxlY3RvckJhc2VkQ2xhdXNlIH0gZnJvbSBcIi4vU2VsZWN0b3JCYXNlZENsYXVzZVwiO1xuaW1wb3J0IHsgT2Zmc2V0U2VsZWN0b3IgfSBmcm9tIFwiLi4vc2VsZWN0b3JzXCI7XG5pbXBvcnQgeyBQcmlvcml0eSB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IE1vZGVsQXJnIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuXG4vKipcbiAqIEBzdW1tYXJ5IFRoZSBPRkZTRVQgY2xhdXNlXG4gKlxuICogQHBhcmFtIHtDbGF1c2VBcmd9IFtjbGF1c2VdXG4gKlxuICogQGNsYXNzIEZyb21DbGF1c2VcbiAqIEBleHRlbmRzIFNlbGVjdG9yQmFzZWRDbGF1c2VcbiAqXG4gKiBAY2F0ZWdvcnkgUXVlcnlcbiAqIEBzdWJjYXRlZ29yeSBDbGF1c2VzXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBPZmZzZXRDbGF1c2U8UT4gZXh0ZW5kcyBTZWxlY3RvckJhc2VkQ2xhdXNlPFxuICBRLFxuICBPZmZzZXRTZWxlY3RvclxuPiB7XG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihjbGF1c2U/OiBNb2RlbEFyZzxPZmZzZXRDbGF1c2U8UT4+KSB7XG4gICAgc3VwZXIoT2JqZWN0LmFzc2lnbih7fSwgY2xhdXNlLCB7IHByaW9yaXR5OiBQcmlvcml0eS5HUk9VUF9CWSB9KSk7XG4gIH1cbiAgLyoqXG4gICAqIEBpbmhlcml0RG9jXG4gICAqL1xuICBhYnN0cmFjdCBidWlsZChxdWVyeTogUSk6IFE7XG59XG4iXX0=
@@ -0,0 +1,21 @@
1
+ import { SelectorBasedClause } from "./SelectorBasedClause";
2
+ import { OffsetSelector } from "../selectors";
3
+ import { ModelArg } from "@decaf-ts/decorator-validation";
4
+ /**
5
+ * @summary The OFFSET clause
6
+ *
7
+ * @param {ClauseArg} [clause]
8
+ *
9
+ * @class FromClause
10
+ * @extends SelectorBasedClause
11
+ *
12
+ * @category Query
13
+ * @subcategory Clauses
14
+ */
15
+ export declare abstract class OffsetClause<Q> extends SelectorBasedClause<Q, OffsetSelector> {
16
+ protected constructor(clause?: ModelArg<OffsetClause<Q>>);
17
+ /**
18
+ * @inheritDoc
19
+ */
20
+ abstract build(query: Q): Q;
21
+ }