@decaf-ts/core 0.1.3 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (210) 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 +52 -1
  30. package/lib/esm/model/index.js +4 -1
  31. package/lib/esm/persistence/Adapter.d.ts +45 -14
  32. package/lib/esm/persistence/Adapter.js +178 -1
  33. package/lib/esm/persistence/constants.d.ts +10 -1
  34. package/lib/esm/persistence/constants.js +13 -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 -1
  40. package/lib/esm/persistence/index.js +6 -1
  41. package/lib/esm/query/Clause.d.ts +43 -0
  42. package/lib/esm/query/Clause.js +76 -0
  43. package/lib/esm/query/ClauseFactory.d.ts +71 -0
  44. package/lib/esm/query/ClauseFactory.js +7 -0
  45. package/lib/esm/query/Condition.d.ts +75 -0
  46. package/lib/esm/query/Condition.js +248 -0
  47. package/lib/esm/query/Query.d.ts +43 -0
  48. package/lib/esm/query/Query.js +55 -0
  49. package/lib/esm/query/Statement.d.ts +49 -0
  50. package/lib/esm/query/Statement.js +158 -0
  51. package/lib/esm/query/clauses/FromClause.d.ts +45 -0
  52. package/lib/esm/query/clauses/FromClause.js +60 -0
  53. package/lib/esm/query/clauses/GroupByClause.d.ts +21 -0
  54. package/lib/esm/query/clauses/GroupByClause.js +20 -0
  55. package/lib/esm/query/clauses/InsertClause.d.ts +37 -0
  56. package/lib/esm/query/clauses/InsertClause.js +56 -0
  57. package/lib/esm/query/clauses/LimitClause.d.ts +29 -0
  58. package/lib/esm/query/clauses/LimitClause.js +28 -0
  59. package/lib/esm/query/clauses/OffsetClause.d.ts +21 -0
  60. package/lib/esm/query/clauses/OffsetClause.js +20 -0
  61. package/lib/esm/query/clauses/OrderByClause.d.ts +37 -0
  62. package/lib/esm/query/clauses/OrderByClause.js +40 -0
  63. package/lib/esm/query/clauses/SelectClause.d.ts +47 -0
  64. package/lib/esm/query/clauses/SelectClause.js +63 -0
  65. package/lib/esm/query/clauses/SelectorBasedClause.d.ts +25 -0
  66. package/lib/esm/query/clauses/SelectorBasedClause.js +45 -0
  67. package/lib/esm/query/clauses/ValuesClause.d.ts +21 -0
  68. package/lib/esm/query/clauses/ValuesClause.js +37 -0
  69. package/lib/esm/query/clauses/WhereClause.d.ts +46 -0
  70. package/lib/esm/query/clauses/WhereClause.js +72 -0
  71. package/lib/esm/query/clauses/index.d.ts +10 -0
  72. package/lib/esm/query/clauses/index.js +12 -0
  73. package/lib/esm/query/constants.d.ts +79 -0
  74. package/lib/esm/query/constants.js +88 -0
  75. package/lib/esm/query/errors.d.ts +4 -0
  76. package/lib/esm/query/errors.js +8 -0
  77. package/lib/esm/query/index.d.ts +11 -0
  78. package/lib/esm/query/index.js +13 -0
  79. package/lib/esm/query/options.d.ts +371 -0
  80. package/lib/esm/query/options.js +3 -0
  81. package/lib/esm/query/selectors.d.ts +38 -0
  82. package/lib/esm/query/selectors.js +3 -0
  83. package/lib/esm/query/types.d.ts +2 -0
  84. package/lib/esm/query/types.js +3 -0
  85. package/lib/esm/repository/Repository.d.ts +31 -11
  86. package/lib/esm/repository/Repository.js +275 -1
  87. package/lib/esm/repository/constants.js +31 -1
  88. package/lib/esm/repository/decorators.d.ts +2 -3
  89. package/lib/esm/repository/decorators.js +23 -1
  90. package/lib/esm/repository/errors.js +16 -1
  91. package/lib/esm/repository/index.d.ts +1 -0
  92. package/lib/esm/repository/index.js +9 -1
  93. package/lib/esm/repository/injectables.d.ts +5 -0
  94. package/lib/esm/repository/injectables.js +32 -0
  95. package/lib/esm/repository/types.d.ts +3 -0
  96. package/lib/esm/repository/types.js +3 -0
  97. package/lib/esm/repository/utils.d.ts +2 -4
  98. package/lib/esm/repository/utils.js +17 -1
  99. package/lib/esm/validators/ClauseSequenceValidator.d.ts +28 -0
  100. package/lib/esm/validators/ClauseSequenceValidator.js +96 -0
  101. package/lib/esm/validators/decorators.d.ts +10 -0
  102. package/lib/esm/validators/decorators.js +25 -0
  103. package/lib/esm/validators/index.d.ts +2 -0
  104. package/lib/esm/validators/index.js +4 -0
  105. package/lib/identity/decorators.cjs +61 -1
  106. package/lib/identity/decorators.d.ts +4 -10
  107. package/lib/identity/index.cjs +19 -1
  108. package/lib/identity/utils.cjs +9 -0
  109. package/lib/identity/utils.d.ts +2 -0
  110. package/lib/index.cjs +47 -1
  111. package/lib/index.d.ts +3 -1
  112. package/lib/interfaces/Builder.cjs +4 -1
  113. package/lib/interfaces/Executor.cjs +4 -1
  114. package/lib/interfaces/Executor.d.ts +3 -1
  115. package/lib/interfaces/Observable.cjs +4 -1
  116. package/lib/interfaces/Observer.cjs +4 -1
  117. package/lib/interfaces/Queriable.cjs +4 -0
  118. package/lib/interfaces/Queriable.d.ts +6 -0
  119. package/lib/interfaces/RawExecutor.cjs +4 -1
  120. package/lib/interfaces/RawExecutor.d.ts +4 -3
  121. package/lib/interfaces/Sequence.cjs +11 -1
  122. package/lib/interfaces/Sequence.d.ts +3 -2
  123. package/lib/interfaces/SequenceOptions.cjs +23 -1
  124. package/lib/interfaces/SequenceOptions.d.ts +9 -1
  125. package/lib/interfaces/index.cjs +26 -1
  126. package/lib/interfaces/index.d.ts +1 -0
  127. package/lib/model/BaseModel.cjs +32 -1
  128. package/lib/model/BaseModel.d.ts +2 -3
  129. package/lib/model/decorators.cjs +59 -1
  130. package/lib/model/decorators.d.ts +6 -5
  131. package/lib/model/index.cjs +20 -1
  132. package/lib/persistence/Adapter.cjs +182 -1
  133. package/lib/persistence/Adapter.d.ts +45 -14
  134. package/lib/persistence/constants.cjs +16 -1
  135. package/lib/persistence/constants.d.ts +10 -1
  136. package/lib/persistence/decorators.cjs +13 -1
  137. package/lib/persistence/decorators.d.ts +1 -2
  138. package/lib/persistence/errors.cjs +12 -0
  139. package/lib/persistence/errors.d.ts +4 -0
  140. package/lib/persistence/index.cjs +22 -1
  141. package/lib/persistence/index.d.ts +1 -1
  142. package/lib/query/Clause.cjs +80 -0
  143. package/lib/query/Clause.d.ts +43 -0
  144. package/lib/query/ClauseFactory.cjs +11 -0
  145. package/lib/query/ClauseFactory.d.ts +71 -0
  146. package/lib/query/Condition.cjs +252 -0
  147. package/lib/query/Condition.d.ts +75 -0
  148. package/lib/query/Query.cjs +59 -0
  149. package/lib/query/Query.d.ts +43 -0
  150. package/lib/query/Statement.cjs +162 -0
  151. package/lib/query/Statement.d.ts +49 -0
  152. package/lib/query/clauses/FromClause.cjs +64 -0
  153. package/lib/query/clauses/FromClause.d.ts +45 -0
  154. package/lib/query/clauses/GroupByClause.cjs +24 -0
  155. package/lib/query/clauses/GroupByClause.d.ts +21 -0
  156. package/lib/query/clauses/InsertClause.cjs +60 -0
  157. package/lib/query/clauses/InsertClause.d.ts +37 -0
  158. package/lib/query/clauses/LimitClause.cjs +32 -0
  159. package/lib/query/clauses/LimitClause.d.ts +29 -0
  160. package/lib/query/clauses/OffsetClause.cjs +24 -0
  161. package/lib/query/clauses/OffsetClause.d.ts +21 -0
  162. package/lib/query/clauses/OrderByClause.cjs +44 -0
  163. package/lib/query/clauses/OrderByClause.d.ts +37 -0
  164. package/lib/query/clauses/SelectClause.cjs +67 -0
  165. package/lib/query/clauses/SelectClause.d.ts +47 -0
  166. package/lib/query/clauses/SelectorBasedClause.cjs +49 -0
  167. package/lib/query/clauses/SelectorBasedClause.d.ts +25 -0
  168. package/lib/query/clauses/ValuesClause.cjs +41 -0
  169. package/lib/query/clauses/ValuesClause.d.ts +21 -0
  170. package/lib/query/clauses/WhereClause.cjs +76 -0
  171. package/lib/query/clauses/WhereClause.d.ts +46 -0
  172. package/lib/query/clauses/index.cjs +28 -0
  173. package/lib/query/clauses/index.d.ts +10 -0
  174. package/lib/query/constants.cjs +91 -0
  175. package/lib/query/constants.d.ts +79 -0
  176. package/lib/query/errors.cjs +12 -0
  177. package/lib/query/errors.d.ts +4 -0
  178. package/lib/query/index.cjs +29 -0
  179. package/lib/query/index.d.ts +11 -0
  180. package/lib/query/options.cjs +4 -0
  181. package/lib/query/options.d.ts +371 -0
  182. package/lib/query/selectors.cjs +4 -0
  183. package/lib/query/selectors.d.ts +38 -0
  184. package/lib/query/types.cjs +4 -0
  185. package/lib/query/types.d.ts +2 -0
  186. package/lib/repository/Repository.cjs +279 -1
  187. package/lib/repository/Repository.d.ts +31 -11
  188. package/lib/repository/constants.cjs +34 -1
  189. package/lib/repository/decorators.cjs +26 -1
  190. package/lib/repository/decorators.d.ts +2 -3
  191. package/lib/repository/errors.cjs +20 -1
  192. package/lib/repository/index.cjs +25 -1
  193. package/lib/repository/index.d.ts +1 -0
  194. package/lib/repository/injectables.cjs +36 -0
  195. package/lib/repository/injectables.d.ts +5 -0
  196. package/lib/repository/types.cjs +4 -1
  197. package/lib/repository/types.d.ts +3 -0
  198. package/lib/repository/utils.cjs +20 -1
  199. package/lib/repository/utils.d.ts +3 -0
  200. package/lib/validators/ClauseSequenceValidator.cjs +99 -0
  201. package/lib/validators/ClauseSequenceValidator.d.ts +28 -0
  202. package/lib/validators/decorators.cjs +28 -0
  203. package/lib/validators/decorators.d.ts +10 -0
  204. package/lib/validators/index.cjs +20 -0
  205. package/lib/validators/index.d.ts +2 -0
  206. package/package.json +14 -11
  207. package/lib/esm/persistence/utils.d.ts +0 -3
  208. package/lib/esm/persistence/utils.js +0 -1
  209. package/lib/persistence/utils.cjs +0 -1
  210. package/lib/persistence/utils.d.ts +0 -3
@@ -0,0 +1,43 @@
1
+ import { Executor } from "../interfaces";
2
+ import { Model, ModelArg } from "@decaf-ts/decorator-validation";
3
+ import { QueryBuilder } from "./options";
4
+ import { Priority } from "./constants";
5
+ import { Statement } from "./Statement";
6
+ /**
7
+ */
8
+ /**
9
+ * @summary Clause Class
10
+ * @description Represents a Clause in a {@link Statement}
11
+ *
12
+ * @typedef Q Represents que query object the persistence adapter uses
13
+ *
14
+ * @param {ModelArg<Clause<Q>>} [clause]
15
+ *
16
+ * @class Clause
17
+ * @extends Model
18
+ * @implements Executor
19
+ * @implements QueryBuilder
20
+ * @abstract
21
+ *
22
+ * @category Query
23
+ * @subcategory Clauses
24
+ */
25
+ export declare abstract class Clause<Q> extends Model implements Executor, QueryBuilder<Q> {
26
+ readonly priority: Priority;
27
+ readonly statement: Statement<Q>;
28
+ protected constructor(clause?: ModelArg<Clause<Q>>);
29
+ protected get adapter(): import("..").Adapter<any, Q>;
30
+ protected get Clauses(): import("./ClauseFactory").ClauseFactory<any, Q>;
31
+ /**
32
+ * @summary return the priority of the clause
33
+ * @see Priority
34
+ */
35
+ getPriority(): number;
36
+ abstract build(previous: Q): Q;
37
+ /**
38
+ * @inheritDoc
39
+ * @abstract
40
+ */
41
+ execute<R>(): Promise<R>;
42
+ toString(): string;
43
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ClauseFactory = void 0;
4
+ class ClauseFactory {
5
+ constructor(adapter) {
6
+ this.adapter = adapter;
7
+ }
8
+ }
9
+ exports.ClauseFactory = ClauseFactory;
10
+
11
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9xdWVyeS9DbGF1c2VGYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQXNCQSxNQUFzQixhQUFhO0lBMkVqQyxZQUFnQyxPQUFzQjtRQUF0QixZQUFPLEdBQVAsT0FBTyxDQUFlO0lBQUcsQ0FBQztDQUMzRDtBQTVFRCxzQ0E0RUMiLCJmaWxlIjoicXVlcnkvQ2xhdXNlRmFjdG9yeS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZyb21DbGF1c2UgfSBmcm9tIFwiLi9jbGF1c2VzXCI7XG5pbXBvcnQgeyBHcm91cEJ5Q2xhdXNlIH0gZnJvbSBcIi4vY2xhdXNlcy9Hcm91cEJ5Q2xhdXNlXCI7XG5pbXBvcnQgeyBJbnNlcnRDbGF1c2UgfSBmcm9tIFwiLi9jbGF1c2VzL0luc2VydENsYXVzZVwiO1xuaW1wb3J0IHsgTGltaXRDbGF1c2UgfSBmcm9tIFwiLi9jbGF1c2VzL0xpbWl0Q2xhdXNlXCI7XG5pbXBvcnQgeyBPZmZzZXRDbGF1c2UgfSBmcm9tIFwiLi9jbGF1c2VzL09mZnNldENsYXVzZVwiO1xuaW1wb3J0IHsgT3JkZXJCeUNsYXVzZSB9IGZyb20gXCIuL2NsYXVzZXMvT3JkZXJCeUNsYXVzZVwiO1xuaW1wb3J0IHsgU2VsZWN0Q2xhdXNlIH0gZnJvbSBcIi4vY2xhdXNlcy9TZWxlY3RDbGF1c2VcIjtcbmltcG9ydCB7IFZhbHVlc0NsYXVzZSB9IGZyb20gXCIuL2NsYXVzZXMvVmFsdWVzQ2xhdXNlXCI7XG5pbXBvcnQgeyBXaGVyZUNsYXVzZSB9IGZyb20gXCIuL2NsYXVzZXMvV2hlcmVDbGF1c2VcIjtcbmltcG9ydCB7IEFkYXB0ZXIgfSBmcm9tIFwiLi4vcGVyc2lzdGVuY2VcIjtcbmltcG9ydCB7IENvbmRpdGlvbiB9IGZyb20gXCIuL0NvbmRpdGlvblwiO1xuaW1wb3J0IHtcbiAgRnJvbVNlbGVjdG9yLFxuICBHcm91cEJ5U2VsZWN0b3IsXG4gIExpbWl0U2VsZWN0b3IsXG4gIE9mZnNldFNlbGVjdG9yLFxuICBPcmRlckJ5U2VsZWN0b3IsXG4gIFNlbGVjdFNlbGVjdG9yLFxufSBmcm9tIFwiLi9zZWxlY3RvcnNcIjtcbmltcG9ydCB7IFN0YXRlbWVudCB9IGZyb20gXCIuL1N0YXRlbWVudFwiO1xuaW1wb3J0IHsgTW9kZWwgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDbGF1c2VGYWN0b3J5PFksIFE+IHtcbiAgLyoqXG4gICAqIEBzdW1tYXJ5IEZhY3RvcnkgbWV0aG9kIGZvciB7QGxpbmsgRnJvbUNsYXVzZX1cbiAgICogQHBhcmFtIHtTdGF0ZW1lbnR9IHN0YXRlbWVudFxuICAgKiBAcGFyYW0ge0Zyb21TZWxlY3Rvcn0gc2VsZWN0b3JcbiAgICovXG4gIGFic3RyYWN0IGZyb208TSBleHRlbmRzIE1vZGVsPihcbiAgICBzdGF0ZW1lbnQ6IFN0YXRlbWVudDxRPixcbiAgICBzZWxlY3RvcjogRnJvbVNlbGVjdG9yPE0+XG4gICk6IEZyb21DbGF1c2U8USwgTT47XG4gIC8qKlxuICAgKiBAc3VtbWFyeSBGYWN0b3J5IG1ldGhvZCBmb3Ige0BsaW5rIEdyb3VwQnlDbGF1c2V9XG4gICAqIEBwYXJhbSB7U3RhdGVtZW50fSBzdGF0ZW1lbnRcbiAgICogQHBhcmFtIHtHcm91cEJ5U2VsZWN0b3J9IHNlbGVjdG9yXG4gICAqL1xuICBhYnN0cmFjdCBncm91cEJ5KFxuICAgIHN0YXRlbWVudDogU3RhdGVtZW50PFE+LFxuICAgIHNlbGVjdG9yOiBHcm91cEJ5U2VsZWN0b3JcbiAgKTogR3JvdXBCeUNsYXVzZTxRPjtcbiAgLyoqXG4gICAqIEBzdW1tYXJ5IEZhY3RvcnkgbWV0aG9kIGZvciB7QGxpbmsgSW5zZXJ0Q2xhdXNlfVxuICAgKiBAcGFyYW0ge1N0YXRlbWVudH0gc3RhdGVtZW50XG4gICAqL1xuICBhYnN0cmFjdCBpbnNlcnQ8TSBleHRlbmRzIE1vZGVsPigpOiBJbnNlcnRDbGF1c2U8USwgTT47XG4gIC8qKlxuICAgKiBAc3VtbWFyeSBGYWN0b3J5IG1ldGhvZCBmb3Ige0BsaW5rIExpbWl0Q2xhdXNlfVxuICAgKiBAcGFyYW0ge1N0YXRlbWVudH0gc3RhdGVtZW50XG4gICAqIEBwYXJhbSB7TGltaXRTZWxlY3Rvcn0gc2VsZWN0b3JcbiAgICovXG4gIGFic3RyYWN0IGxpbWl0KFxuICAgIHN0YXRlbWVudDogU3RhdGVtZW50PFE+LFxuICAgIHNlbGVjdG9yOiBMaW1pdFNlbGVjdG9yXG4gICk6IExpbWl0Q2xhdXNlPFE+O1xuICAvKipcbiAgICogQHN1bW1hcnkgRmFjdG9yeSBtZXRob2QgZm9yIHtAbGluayBPZmZzZXRDbGF1c2V9XG4gICAqIEBwYXJhbSB7U3RhdGVtZW50fSBzdGF0ZW1lbnRcbiAgICogQHBhcmFtIHtPZmZzZXRTZWxlY3Rvcn0gc2VsZWN0b3JcbiAgICovXG4gIGFic3RyYWN0IG9mZnNldChcbiAgICBzdGF0ZW1lbnQ6IFN0YXRlbWVudDxRPixcbiAgICBzZWxlY3RvcjogT2Zmc2V0U2VsZWN0b3JcbiAgKTogT2Zmc2V0Q2xhdXNlPFE+O1xuICAvKipcbiAgICogQHN1bW1hcnkgRmFjdG9yeSBtZXRob2QgZm9yIHtAbGluayBPcmRlckJ5Q2xhdXNlfVxuICAgKiBAcGFyYW0ge1N0YXRlbWVudH0gc3RhdGVtZW50XG4gICAqIEBwYXJhbSB7T3JkZXJCeVNlbGVjdG9yfSBzZWxlY3RvclxuICAgKi9cbiAgYWJzdHJhY3Qgb3JkZXJCeShcbiAgICBzdGF0ZW1lbnQ6IFN0YXRlbWVudDxRPixcbiAgICBzZWxlY3RvcjogT3JkZXJCeVNlbGVjdG9yW11cbiAgKTogT3JkZXJCeUNsYXVzZTxRPjtcbiAgLyoqXG4gICAqIEBzdW1tYXJ5IEZhY3RvcnkgbWV0aG9kIGZvciB7QGxpbmsgU2VsZWN0Q2xhdXNlfVxuICAgKiBAcGFyYW0ge1N0YXRlbWVudH0gc3RhdGVtZW50XG4gICAqIEBwYXJhbSB7U2VsZWN0U2VsZWN0b3J9IFtzZWxlY3Rvcl1cbiAgICovXG4gIGFic3RyYWN0IHNlbGVjdDxNIGV4dGVuZHMgTW9kZWw+KFxuICAgIHNlbGVjdG9yPzogU2VsZWN0U2VsZWN0b3JcbiAgKTogU2VsZWN0Q2xhdXNlPFEsIE0+O1xuICAvKipcbiAgICogQHN1bW1hcnkgRmFjdG9yeSBtZXRob2QgZm9yIHtAbGluayBWYWx1ZXNDbGF1c2V9XG4gICAqIEBwYXJhbSB7U3RhdGVtZW50fSBzdGF0ZW1lbnRcbiAgICogQHBhcmFtIHtNW119IHZhbHVlc1xuICAgKi9cbiAgYWJzdHJhY3QgdmFsdWVzPE0gZXh0ZW5kcyBNb2RlbD4oXG4gICAgc3RhdGVtZW50OiBTdGF0ZW1lbnQ8UT4sXG4gICAgdmFsdWVzOiBNW11cbiAgKTogVmFsdWVzQ2xhdXNlPFEsIE0+O1xuICAvKipcbiAgICogQHN1bW1hcnkgRmFjdG9yeSBtZXRob2QgZm9yIHtAbGluayBXaGVyZUNsYXVzZX1cbiAgICogQHBhcmFtIHtTdGF0ZW1lbnR9IHN0YXRlbWVudFxuICAgKiBAcGFyYW0ge0NvbmRpdGlvbn0gY29uZGl0aW9uXG4gICAqL1xuICBhYnN0cmFjdCB3aGVyZShzdGF0ZW1lbnQ6IFN0YXRlbWVudDxRPiwgY29uZGl0aW9uOiBDb25kaXRpb24pOiBXaGVyZUNsYXVzZTxRPjtcblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IocHJvdGVjdGVkIGFkYXB0ZXI6IEFkYXB0ZXI8WSwgUT4pIHt9XG59XG4iXX0=
@@ -0,0 +1,71 @@
1
+ import { FromClause } from "./clauses";
2
+ import { GroupByClause } from "./clauses/GroupByClause";
3
+ import { InsertClause } from "./clauses/InsertClause";
4
+ import { LimitClause } from "./clauses/LimitClause";
5
+ import { OffsetClause } from "./clauses/OffsetClause";
6
+ import { OrderByClause } from "./clauses/OrderByClause";
7
+ import { SelectClause } from "./clauses/SelectClause";
8
+ import { ValuesClause } from "./clauses/ValuesClause";
9
+ import { WhereClause } from "./clauses/WhereClause";
10
+ import { Adapter } from "../persistence";
11
+ import { Condition } from "./Condition";
12
+ import { FromSelector, GroupBySelector, LimitSelector, OffsetSelector, OrderBySelector, SelectSelector } from "./selectors";
13
+ import { Statement } from "./Statement";
14
+ import { Model } from "@decaf-ts/decorator-validation";
15
+ export declare abstract class ClauseFactory<Y, Q> {
16
+ protected adapter: Adapter<Y, Q>;
17
+ /**
18
+ * @summary Factory method for {@link FromClause}
19
+ * @param {Statement} statement
20
+ * @param {FromSelector} selector
21
+ */
22
+ abstract from<M extends Model>(statement: Statement<Q>, selector: FromSelector<M>): FromClause<Q, M>;
23
+ /**
24
+ * @summary Factory method for {@link GroupByClause}
25
+ * @param {Statement} statement
26
+ * @param {GroupBySelector} selector
27
+ */
28
+ abstract groupBy(statement: Statement<Q>, selector: GroupBySelector): GroupByClause<Q>;
29
+ /**
30
+ * @summary Factory method for {@link InsertClause}
31
+ * @param {Statement} statement
32
+ */
33
+ abstract insert<M extends Model>(): InsertClause<Q, M>;
34
+ /**
35
+ * @summary Factory method for {@link LimitClause}
36
+ * @param {Statement} statement
37
+ * @param {LimitSelector} selector
38
+ */
39
+ abstract limit(statement: Statement<Q>, selector: LimitSelector): LimitClause<Q>;
40
+ /**
41
+ * @summary Factory method for {@link OffsetClause}
42
+ * @param {Statement} statement
43
+ * @param {OffsetSelector} selector
44
+ */
45
+ abstract offset(statement: Statement<Q>, selector: OffsetSelector): OffsetClause<Q>;
46
+ /**
47
+ * @summary Factory method for {@link OrderByClause}
48
+ * @param {Statement} statement
49
+ * @param {OrderBySelector} selector
50
+ */
51
+ abstract orderBy(statement: Statement<Q>, selector: OrderBySelector[]): OrderByClause<Q>;
52
+ /**
53
+ * @summary Factory method for {@link SelectClause}
54
+ * @param {Statement} statement
55
+ * @param {SelectSelector} [selector]
56
+ */
57
+ abstract select<M extends Model>(selector?: SelectSelector): SelectClause<Q, M>;
58
+ /**
59
+ * @summary Factory method for {@link ValuesClause}
60
+ * @param {Statement} statement
61
+ * @param {M[]} values
62
+ */
63
+ abstract values<M extends Model>(statement: Statement<Q>, values: M[]): ValuesClause<Q, M>;
64
+ /**
65
+ * @summary Factory method for {@link WhereClause}
66
+ * @param {Statement} statement
67
+ * @param {Condition} condition
68
+ */
69
+ abstract where(statement: Statement<Q>, condition: Condition): WhereClause<Q>;
70
+ protected constructor(adapter: Adapter<Y, Q>);
71
+ }
@@ -0,0 +1,252 @@
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.Condition = 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
+ /**
17
+ * @summary Condition Class
18
+ * @description Represents a logical condition
19
+ *
20
+ * @param {string | Condition} attr1
21
+ * @param {Operator | GroupOperator} operator
22
+ * @param {string | Condition} comparison
23
+ *
24
+ * @class Condition
25
+ * @implements Executor
26
+ *
27
+ * @category Query
28
+ * @subcategory Conditions
29
+ */
30
+ class Condition extends decorator_validation_1.Model {
31
+ constructor(attr1, operator, comparison) {
32
+ super();
33
+ this.attr1 = undefined;
34
+ this.operator = undefined;
35
+ this.comparison = undefined;
36
+ this.attr1 = attr1;
37
+ this.operator = operator;
38
+ this.comparison = comparison;
39
+ }
40
+ /**
41
+ * @summary Joins 2 {@link Condition}s on an {@link Operator#AND} operation
42
+ * @param {Condition} condition
43
+ */
44
+ and(condition) {
45
+ return Condition.and(this, condition);
46
+ }
47
+ /**
48
+ * @summary Joins 2 {@link Condition}s on an {@link Operator#OR} operation
49
+ * @param {Condition} condition
50
+ */
51
+ or(condition) {
52
+ return Condition.or(this, condition);
53
+ }
54
+ /**
55
+ * @summary excludes a valut from the result
56
+ * @param val
57
+ */
58
+ not(val) {
59
+ return new Condition(this, constants_1.Operator.NOT, val);
60
+ }
61
+ /**
62
+ * @inheritDoc
63
+ */
64
+ hasErrors(...exceptions) {
65
+ const errors = super.hasErrors(...exceptions);
66
+ if (errors)
67
+ return errors;
68
+ if (typeof this.attr1 === "string") {
69
+ if (this.comparison instanceof Condition)
70
+ return {
71
+ comparison: {
72
+ condition: "Both sides of the comparison must be of the same type",
73
+ },
74
+ };
75
+ if (Object.values(constants_1.Operator).indexOf(this.operator) === -1)
76
+ return {
77
+ operator: {
78
+ condition: (0, decorator_validation_1.sf)("Invalid operator {0}", this.operator),
79
+ },
80
+ };
81
+ }
82
+ if (this.attr1 instanceof Condition) {
83
+ if (!(this.comparison instanceof Condition) &&
84
+ this.operator !== constants_1.Operator.NOT)
85
+ return {
86
+ comparison: {
87
+ condition: (0, decorator_validation_1.sf)("Invalid operator {0}", this.operator),
88
+ },
89
+ };
90
+ if (Object.values(constants_1.GroupOperator).indexOf(this.operator) ===
91
+ -1 &&
92
+ this.operator !== constants_1.Operator.NOT)
93
+ return {
94
+ operator: {
95
+ condition: (0, decorator_validation_1.sf)("Invalid operator {0}", this.operator),
96
+ },
97
+ };
98
+ // if (this.operator !== Operator.NOT && typeof this.attr1.attr1 !== "string")
99
+ // return {
100
+ // attr1: {
101
+ // condition: stringFormat("Parent condition attribute must be a string")
102
+ // }
103
+ // } as ModelErrorDefinition
104
+ }
105
+ }
106
+ /**
107
+ * @summary Joins 2 {@link Condition}s on an {@link Operator#AND} operation
108
+ * @param {Condition} condition1
109
+ * @param {Condition} condition2
110
+ */
111
+ static and(condition1, condition2) {
112
+ return Condition.group(condition1, constants_1.GroupOperator.AND, condition2);
113
+ }
114
+ /**
115
+ * @summary Joins 2 {@link Condition}s on an {@link Operator#OR} operation
116
+ * @param {Condition} condition1
117
+ * @param {Condition} condition2
118
+ */
119
+ static or(condition1, condition2) {
120
+ return Condition.group(condition1, constants_1.GroupOperator.OR, condition2);
121
+ }
122
+ /**
123
+ * @summary Groups 2 {@link Condition}s by the specified {@link GroupOperator}
124
+ * @param {Condition} condition1
125
+ * @param {GroupOperator} operator
126
+ * @param {Condition} condition2
127
+ */
128
+ static group(condition1, operator, condition2) {
129
+ return new Condition(condition1, operator, condition2);
130
+ }
131
+ static attribute(attr) {
132
+ return new Condition.Builder().attribute(attr);
133
+ }
134
+ /**
135
+ * @summary Condition Builder Class
136
+ * @description provides a simple API to build {@link Condition}s
137
+ *
138
+ * @class ConditionBuilder
139
+ * @implements Builder
140
+ * @implements AttributeOption
141
+ *
142
+ * @category Query
143
+ * @subcategory Conditions
144
+ */
145
+ static { this.Builder = class ConditionBuilder {
146
+ constructor() {
147
+ this.attr1 = undefined;
148
+ this.operator = undefined;
149
+ this.comparison = undefined;
150
+ }
151
+ /**
152
+ * @inheritDoc
153
+ */
154
+ attribute(attr) {
155
+ this.attr1 = attr;
156
+ return this;
157
+ }
158
+ /**
159
+ * @summary Creates an Equality Comparison
160
+ * @param {any} val
161
+ */
162
+ eq(val) {
163
+ return this.setOp(constants_1.Operator.EQUAL, val);
164
+ }
165
+ /**
166
+ * @summary Creates a Different Comparison
167
+ * @param {any} val
168
+ */
169
+ dif(val) {
170
+ return this.setOp(constants_1.Operator.DIFFERENT, val);
171
+ }
172
+ /**
173
+ * @summary Creates a Greater Than Comparison
174
+ * @param {any} val
175
+ */
176
+ gt(val) {
177
+ return this.setOp(constants_1.Operator.BIGGER, val);
178
+ }
179
+ /**
180
+ * @summary Creates a Lower Than Comparison
181
+ * @param {any} val
182
+ */
183
+ lt(val) {
184
+ return this.setOp(constants_1.Operator.SMALLER, val);
185
+ }
186
+ /**
187
+ * @summary Creates a Greater or Equal to Comparison
188
+ * @param {any} val
189
+ */
190
+ gte(val) {
191
+ return this.setOp(constants_1.Operator.BIGGER_EQ, val);
192
+ }
193
+ /**
194
+ * @summary Creates a Lower or Equal to Comparison
195
+ * @param {any} val
196
+ */
197
+ lte(val) {
198
+ return this.setOp(constants_1.Operator.SMALLER_EQ, val);
199
+ }
200
+ in(arr) {
201
+ return this.setOp(constants_1.Operator.IN, arr);
202
+ }
203
+ /**
204
+ * @summary Creates a Regexpo Comparison
205
+ * @param {any} val
206
+ */
207
+ regexp(val) {
208
+ return this.setOp(constants_1.Operator.REGEXP, typeof val === "string" ? new RegExp(val) : val);
209
+ }
210
+ /**
211
+ * @summary Creates an {@link Operator} based Comparison
212
+ * @param {Operator} op
213
+ * @param {any} val
214
+ */
215
+ setOp(op, val) {
216
+ this.operator = op;
217
+ this.comparison = val;
218
+ return this.build();
219
+ }
220
+ /**
221
+ * @summary Builds the Database Object
222
+ * @throws {QueryError} if it fails to build the {@link Condition}
223
+ * @private
224
+ */
225
+ build() {
226
+ try {
227
+ return new Condition(this.attr1, this.operator, this.comparison);
228
+ }
229
+ catch (e) {
230
+ throw new errors_1.QueryError(e);
231
+ }
232
+ }
233
+ }; }
234
+ static get builder() {
235
+ return new Condition.Builder();
236
+ }
237
+ }
238
+ exports.Condition = Condition;
239
+ __decorate([
240
+ (0, decorator_validation_1.required)(),
241
+ __metadata("design:type", Object)
242
+ ], Condition.prototype, "attr1", void 0);
243
+ __decorate([
244
+ (0, decorator_validation_1.required)(),
245
+ __metadata("design:type", String)
246
+ ], Condition.prototype, "operator", void 0);
247
+ __decorate([
248
+ (0, decorator_validation_1.required)(),
249
+ __metadata("design:type", Object)
250
+ ], Condition.prototype, "comparison", void 0);
251
+
252
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,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WUFDbEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUM7WUFDdEIsT0FBTyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdEIsQ0FBQztRQUVEOzs7O1dBSUc7UUFDSyxLQUFLO1lBQ1gsSUFBSSxDQUFDO2dCQUNILE9BQU8sSUFBSSxTQUFTLENBQ2xCLElBQUksQ0FBQyxLQUEyQixFQUNoQyxJQUFJLENBQUMsUUFBb0IsRUFDekIsSUFBSSxDQUFDLFVBQWlCLENBQ3ZCLENBQUM7WUFDSixDQUFDO1lBQUMsT0FBTyxDQUFNLEVBQUUsQ0FBQztnQkFDaEIsTUFBTSxJQUFJLG1CQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDMUIsQ0FBQztRQUNILENBQUM7S0F4R21CLEFBeUdyQixDQUFDO0lBRUYsTUFBTSxLQUFLLE9BQU87UUFDaEIsT0FBTyxJQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqQyxDQUFDOztBQTFQSCw4QkEyUEM7QUF6UFc7SUFEVCxJQUFBLCtCQUFRLEdBQUU7O3dDQUNzQztBQUV2QztJQURULElBQUEsK0JBQVEsR0FBRTs7MkNBQytDO0FBRWhEO0lBRFQsSUFBQSwrQkFBUSxHQUFFOzs2Q0FDNEIiLCJmaWxlIjoicXVlcnkvQ29uZGl0aW9uLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXR0cmlidXRlT3B0aW9uLCBDb25kaXRpb25CdWlsZGVyT3B0aW9uIH0gZnJvbSBcIi4vb3B0aW9uc1wiO1xuaW1wb3J0IHtcbiAgTW9kZWwsXG4gIE1vZGVsRXJyb3JEZWZpbml0aW9uLFxuICByZXF1aXJlZCxcbiAgc2YsXG59IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IEdyb3VwT3BlcmF0b3IsIE9wZXJhdG9yIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBRdWVyeUVycm9yIH0gZnJvbSBcIi4vZXJyb3JzXCI7XG5cbi8qKlxuICogQHN1bW1hcnkgQ29uZGl0aW9uIENsYXNzXG4gKiBAZGVzY3JpcHRpb24gUmVwcmVzZW50cyBhIGxvZ2ljYWwgY29uZGl0aW9uXG4gKlxuICogQHBhcmFtIHtzdHJpbmcgfCBDb25kaXRpb259IGF0dHIxXG4gKiBAcGFyYW0ge09wZXJhdG9yIHwgR3JvdXBPcGVyYXRvcn0gb3BlcmF0b3JcbiAqIEBwYXJhbSB7c3RyaW5nIHwgQ29uZGl0aW9ufSBjb21wYXJpc29uXG4gKlxuICogQGNsYXNzIENvbmRpdGlvblxuICogQGltcGxlbWVudHMgRXhlY3V0b3JcbiAqXG4gKiBAY2F0ZWdvcnkgUXVlcnlcbiAqIEBzdWJjYXRlZ29yeSBDb25kaXRpb25zXG4gKi9cblxuZXhwb3J0IGNsYXNzIENvbmRpdGlvbiBleHRlbmRzIE1vZGVsIHtcbiAgQHJlcXVpcmVkKClcbiAgcHJvdGVjdGVkIGF0dHIxPzogc3RyaW5nIHwgQ29uZGl0aW9uID0gdW5kZWZpbmVkO1xuICBAcmVxdWlyZWQoKVxuICBwcm90ZWN0ZWQgb3BlcmF0b3I/OiBPcGVyYXRvciB8IEdyb3VwT3BlcmF0b3IgPSB1bmRlZmluZWQ7XG4gIEByZXF1aXJlZCgpXG4gIHByb3RlY3RlZCBjb21wYXJpc29uPzogYW55ID0gdW5kZWZpbmVkO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoXG4gICAgYXR0cjE6IHN0cmluZyB8IENvbmRpdGlvbixcbiAgICBvcGVyYXRvcjogT3BlcmF0b3IgfCBHcm91cE9wZXJhdG9yLFxuICAgIGNvbXBhcmlzb246IGFueSxcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmF0dHIxID0gYXR0cjE7XG4gICAgdGhpcy5vcGVyYXRvciA9IG9wZXJhdG9yO1xuICAgIHRoaXMuY29tcGFyaXNvbiA9IGNvbXBhcmlzb247XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgSm9pbnMgMiB7QGxpbmsgQ29uZGl0aW9ufXMgb24gYW4ge0BsaW5rIE9wZXJhdG9yI0FORH0gb3BlcmF0aW9uXG4gICAqIEBwYXJhbSB7Q29uZGl0aW9ufSBjb25kaXRpb25cbiAgICovXG4gIGFuZChjb25kaXRpb246IENvbmRpdGlvbik6IENvbmRpdGlvbiB7XG4gICAgcmV0dXJuIENvbmRpdGlvbi5hbmQodGhpcywgY29uZGl0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBKb2lucyAyIHtAbGluayBDb25kaXRpb259cyBvbiBhbiB7QGxpbmsgT3BlcmF0b3IjT1J9IG9wZXJhdGlvblxuICAgKiBAcGFyYW0ge0NvbmRpdGlvbn0gY29uZGl0aW9uXG4gICAqL1xuICBvcihjb25kaXRpb246IENvbmRpdGlvbik6IENvbmRpdGlvbiB7XG4gICAgcmV0dXJuIENvbmRpdGlvbi5vcih0aGlzLCBjb25kaXRpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IGV4Y2x1ZGVzIGEgdmFsdXQgZnJvbSB0aGUgcmVzdWx0XG4gICAqIEBwYXJhbSB2YWxcbiAgICovXG4gIG5vdCh2YWw6IGFueSk6IENvbmRpdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBDb25kaXRpb24odGhpcywgT3BlcmF0b3IuTk9ULCB2YWwpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbmhlcml0RG9jXG4gICAqL1xuICBoYXNFcnJvcnMoLi4uZXhjZXB0aW9uczogc3RyaW5nW10pOiBNb2RlbEVycm9yRGVmaW5pdGlvbiB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgZXJyb3JzID0gc3VwZXIuaGFzRXJyb3JzKC4uLmV4Y2VwdGlvbnMpO1xuICAgIGlmIChlcnJvcnMpIHJldHVybiBlcnJvcnM7XG5cbiAgICBpZiAodHlwZW9mIHRoaXMuYXR0cjEgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGlmICh0aGlzLmNvbXBhcmlzb24gaW5zdGFuY2VvZiBDb25kaXRpb24pXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY29tcGFyaXNvbjoge1xuICAgICAgICAgICAgY29uZGl0aW9uOiBcIkJvdGggc2lkZXMgb2YgdGhlIGNvbXBhcmlzb24gbXVzdCBiZSBvZiB0aGUgc2FtZSB0eXBlXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBNb2RlbEVycm9yRGVmaW5pdGlvbjtcbiAgICAgIGlmIChPYmplY3QudmFsdWVzKE9wZXJhdG9yKS5pbmRleE9mKHRoaXMub3BlcmF0b3IgYXMgT3BlcmF0b3IpID09PSAtMSlcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBvcGVyYXRvcjoge1xuICAgICAgICAgICAgY29uZGl0aW9uOiBzZihcIkludmFsaWQgb3BlcmF0b3IgezB9XCIsIHRoaXMub3BlcmF0b3IgYXMgc3RyaW5nKSxcbiAgICAgICAgICB9LFxuICAgICAgICB9IGFzIE1vZGVsRXJyb3JEZWZpbml0aW9uO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmF0dHIxIGluc3RhbmNlb2YgQ29uZGl0aW9uKSB7XG4gICAgICBpZiAoXG4gICAgICAgICEodGhpcy5jb21wYXJpc29uIGluc3RhbmNlb2YgQ29uZGl0aW9uKSAmJlxuICAgICAgICB0aGlzLm9wZXJhdG9yICE9PSBPcGVyYXRvci5OT1RcbiAgICAgIClcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb21wYXJpc29uOiB7XG4gICAgICAgICAgICBjb25kaXRpb246IHNmKFwiSW52YWxpZCBvcGVyYXRvciB7MH1cIiwgdGhpcy5vcGVyYXRvciBhcyBzdHJpbmcpLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgTW9kZWxFcnJvckRlZmluaXRpb247XG4gICAgICBpZiAoXG4gICAgICAgIE9iamVjdC52YWx1ZXMoR3JvdXBPcGVyYXRvcikuaW5kZXhPZih0aGlzLm9wZXJhdG9yIGFzIEdyb3VwT3BlcmF0b3IpID09PVxuICAgICAgICAgIC0xICYmXG4gICAgICAgIHRoaXMub3BlcmF0b3IgIT09IE9wZXJhdG9yLk5PVFxuICAgICAgKVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG9wZXJhdG9yOiB7XG4gICAgICAgICAgICBjb25kaXRpb246IHNmKFwiSW52YWxpZCBvcGVyYXRvciB7MH1cIiwgdGhpcy5vcGVyYXRvciBhcyBzdHJpbmcpLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgTW9kZWxFcnJvckRlZmluaXRpb247XG4gICAgICAvLyBpZiAodGhpcy5vcGVyYXRvciAhPT0gT3BlcmF0b3IuTk9UICYmIHR5cGVvZiB0aGlzLmF0dHIxLmF0dHIxICE9PSBcInN0cmluZ1wiKVxuICAgICAgLy8gICAgIHJldHVybiB7XG4gICAgICAvLyAgICAgICAgIGF0dHIxOiB7XG4gICAgICAvLyAgICAgICAgICAgICBjb25kaXRpb246IHN0cmluZ0Zvcm1hdChcIlBhcmVudCBjb25kaXRpb24gYXR0cmlidXRlIG11c3QgYmUgYSBzdHJpbmdcIilcbiAgICAgIC8vICAgICAgICAgfVxuICAgICAgLy8gICAgIH0gYXMgTW9kZWxFcnJvckRlZmluaXRpb25cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgSm9pbnMgMiB7QGxpbmsgQ29uZGl0aW9ufXMgb24gYW4ge0BsaW5rIE9wZXJhdG9yI0FORH0gb3BlcmF0aW9uXG4gICAqIEBwYXJhbSB7Q29uZGl0aW9ufSBjb25kaXRpb24xXG4gICAqIEBwYXJhbSB7Q29uZGl0aW9ufSBjb25kaXRpb24yXG4gICAqL1xuICBzdGF0aWMgYW5kKGNvbmRpdGlvbjE6IENvbmRpdGlvbiwgY29uZGl0aW9uMjogQ29uZGl0aW9uKTogQ29uZGl0aW9uIHtcbiAgICByZXR1cm4gQ29uZGl0aW9uLmdyb3VwKGNvbmRpdGlvbjEsIEdyb3VwT3BlcmF0b3IuQU5ELCBjb25kaXRpb24yKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBKb2lucyAyIHtAbGluayBDb25kaXRpb259cyBvbiBhbiB7QGxpbmsgT3BlcmF0b3IjT1J9IG9wZXJhdGlvblxuICAgKiBAcGFyYW0ge0NvbmRpdGlvbn0gY29uZGl0aW9uMVxuICAgKiBAcGFyYW0ge0NvbmRpdGlvbn0gY29uZGl0aW9uMlxuICAgKi9cbiAgc3RhdGljIG9yKGNvbmRpdGlvbjE6IENvbmRpdGlvbiwgY29uZGl0aW9uMjogQ29uZGl0aW9uKTogQ29uZGl0aW9uIHtcbiAgICByZXR1cm4gQ29uZGl0aW9uLmdyb3VwKGNvbmRpdGlvbjEsIEdyb3VwT3BlcmF0b3IuT1IsIGNvbmRpdGlvbjIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IEdyb3VwcyAyIHtAbGluayBDb25kaXRpb259cyBieSB0aGUgc3BlY2lmaWVkIHtAbGluayBHcm91cE9wZXJhdG9yfVxuICAgKiBAcGFyYW0ge0NvbmRpdGlvbn0gY29uZGl0aW9uMVxuICAgKiBAcGFyYW0ge0dyb3VwT3BlcmF0b3J9IG9wZXJhdG9yXG4gICAqIEBwYXJhbSB7Q29uZGl0aW9ufSBjb25kaXRpb24yXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBncm91cChcbiAgICBjb25kaXRpb24xOiBDb25kaXRpb24sXG4gICAgb3BlcmF0b3I6IEdyb3VwT3BlcmF0b3IsXG4gICAgY29uZGl0aW9uMjogQ29uZGl0aW9uLFxuICApOiBDb25kaXRpb24ge1xuICAgIHJldHVybiBuZXcgQ29uZGl0aW9uKGNvbmRpdGlvbjEsIG9wZXJhdG9yLCBjb25kaXRpb24yKTtcbiAgfVxuXG4gIHN0YXRpYyBhdHRyaWJ1dGUoYXR0cjogc3RyaW5nKSB7XG4gICAgcmV0dXJuIG5ldyBDb25kaXRpb24uQnVpbGRlcigpLmF0dHJpYnV0ZShhdHRyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBDb25kaXRpb24gQnVpbGRlciBDbGFzc1xuICAgKiBAZGVzY3JpcHRpb24gcHJvdmlkZXMgYSBzaW1wbGUgQVBJIHRvIGJ1aWxkIHtAbGluayBDb25kaXRpb259c1xuICAgKlxuICAgKiBAY2xhc3MgQ29uZGl0aW9uQnVpbGRlclxuICAgKiBAaW1wbGVtZW50cyBCdWlsZGVyXG4gICAqIEBpbXBsZW1lbnRzIEF0dHJpYnV0ZU9wdGlvblxuICAgKlxuICAgKiBAY2F0ZWdvcnkgUXVlcnlcbiAgICogQHN1YmNhdGVnb3J5IENvbmRpdGlvbnNcbiAgICovXG4gIHByaXZhdGUgc3RhdGljIEJ1aWxkZXIgPSBjbGFzcyBDb25kaXRpb25CdWlsZGVyXG4gICAgaW1wbGVtZW50cyBDb25kaXRpb25CdWlsZGVyT3B0aW9uLCBBdHRyaWJ1dGVPcHRpb25cbiAge1xuICAgIGF0dHIxPzogc3RyaW5nIHwgQ29uZGl0aW9uID0gdW5kZWZpbmVkO1xuICAgIG9wZXJhdG9yPzogT3BlcmF0b3IgfCBHcm91cE9wZXJhdG9yID0gdW5kZWZpbmVkO1xuICAgIGNvbXBhcmlzb24/OiBhbnkgPSB1bmRlZmluZWQ7XG5cbiAgICAvKipcbiAgICAgKiBAaW5oZXJpdERvY1xuICAgICAqL1xuICAgIGF0dHJpYnV0ZShhdHRyOiBzdHJpbmcpOiBBdHRyaWJ1dGVPcHRpb24ge1xuICAgICAgdGhpcy5hdHRyMSA9IGF0dHI7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAc3VtbWFyeSBDcmVhdGVzIGFuIEVxdWFsaXR5IENvbXBhcmlzb25cbiAgICAgKiBAcGFyYW0ge2FueX0gdmFsXG4gICAgICovXG4gICAgZXEodmFsOiBhbnkpIHtcbiAgICAgIHJldHVybiB0aGlzLnNldE9wKE9wZXJhdG9yLkVRVUFMLCB2YWwpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBzdW1tYXJ5IENyZWF0ZXMgYSBEaWZmZXJlbnQgQ29tcGFyaXNvblxuICAgICAqIEBwYXJhbSB7YW55fSB2YWxcbiAgICAgKi9cbiAgICBkaWYodmFsOiBhbnkpIHtcbiAgICAgIHJldHVybiB0aGlzLnNldE9wKE9wZXJhdG9yLkRJRkZFUkVOVCwgdmFsKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAc3VtbWFyeSBDcmVhdGVzIGEgR3JlYXRlciBUaGFuIENvbXBhcmlzb25cbiAgICAgKiBAcGFyYW0ge2FueX0gdmFsXG4gICAgICovXG4gICAgZ3QodmFsOiBhbnkpIHtcbiAgICAgIHJldHVybiB0aGlzLnNldE9wKE9wZXJhdG9yLkJJR0dFUiwgdmFsKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAc3VtbWFyeSBDcmVhdGVzIGEgTG93ZXIgVGhhbiBDb21wYXJpc29uXG4gICAgICogQHBhcmFtIHthbnl9IHZhbFxuICAgICAqL1xuICAgIGx0KHZhbDogYW55KSB7XG4gICAgICByZXR1cm4gdGhpcy5zZXRPcChPcGVyYXRvci5TTUFMTEVSLCB2YWwpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBzdW1tYXJ5IENyZWF0ZXMgYSBHcmVhdGVyIG9yIEVxdWFsIHRvIENvbXBhcmlzb25cbiAgICAgKiBAcGFyYW0ge2FueX0gdmFsXG4gICAgICovXG4gICAgZ3RlKHZhbDogYW55KSB7XG4gICAgICByZXR1cm4gdGhpcy5zZXRPcChPcGVyYXRvci5CSUdHRVJfRVEsIHZhbCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHN1bW1hcnkgQ3JlYXRlcyBhIExvd2VyIG9yIEVxdWFsIHRvIENvbXBhcmlzb25cbiAgICAgKiBAcGFyYW0ge2FueX0gdmFsXG4gICAgICovXG4gICAgbHRlKHZhbDogYW55KSB7XG4gICAgICByZXR1cm4gdGhpcy5zZXRPcChPcGVyYXRvci5TTUFMTEVSX0VRLCB2YWwpO1xuICAgIH1cblxuICAgIGluKGFycjogYW55W10pIHtcbiAgICAgIHJldHVybiB0aGlzLnNldE9wKE9wZXJhdG9yLklOLCBhcnIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBzdW1tYXJ5IENyZWF0ZXMgYSBSZWdleHBvIENvbXBhcmlzb25cbiAgICAgKiBAcGFyYW0ge2FueX0gdmFsXG4gICAgICovXG4gICAgcmVnZXhwKHZhbDogYW55KSB7XG4gICAgICByZXR1cm4gdGhpcy5zZXRPcChcbiAgICAgICAgT3BlcmF0b3IuUkVHRVhQLFxuICAgICAgICB0eXBlb2YgdmFsID09PSBcInN0cmluZ1wiID8gbmV3IFJlZ0V4cCh2YWwpIDogdmFsLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAc3VtbWFyeSBDcmVhdGVzIGFuIHtAbGluayBPcGVyYXRvcn0gYmFzZWQgQ29tcGFyaXNvblxuICAgICAqIEBwYXJhbSB7T3BlcmF0b3J9IG9wXG4gICAgICogQHBhcmFtIHthbnl9IHZhbFxuICAgICAqL1xuICAgIHByaXZhdGUgc2V0T3Aob3A6IE9wZXJhdG9yLCB2YWw6IGFueSkge1xuICAgICAgdGhpcy5vcGVyYXRvciA9IG9wO1xuICAgICAgdGhpcy5jb21wYXJpc29uID0gdmFsO1xuICAgICAgcmV0dXJuIHRoaXMuYnVpbGQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAc3VtbWFyeSBCdWlsZHMgdGhlIERhdGFiYXNlIE9iamVjdFxuICAgICAqIEB0aHJvd3Mge1F1ZXJ5RXJyb3J9IGlmIGl0IGZhaWxzIHRvIGJ1aWxkIHRoZSB7QGxpbmsgQ29uZGl0aW9ufVxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSBidWlsZCgpOiBDb25kaXRpb24ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIG5ldyBDb25kaXRpb24oXG4gICAgICAgICAgdGhpcy5hdHRyMSBhcyBzdHJpbmcgfCBDb25kaXRpb24sXG4gICAgICAgICAgdGhpcy5vcGVyYXRvciBhcyBPcGVyYXRvcixcbiAgICAgICAgICB0aGlzLmNvbXBhcmlzb24gYXMgYW55LFxuICAgICAgICApO1xuICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgIHRocm93IG5ldyBRdWVyeUVycm9yKGUpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBzdGF0aWMgZ2V0IGJ1aWxkZXIoKTogQ29uZGl0aW9uQnVpbGRlck9wdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBDb25kaXRpb24uQnVpbGRlcigpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,75 @@
1
+ import { AttributeOption, ConditionBuilderOption } from "./options";
2
+ import { Model, ModelErrorDefinition } from "@decaf-ts/decorator-validation";
3
+ import { GroupOperator, Operator } from "./constants";
4
+ /**
5
+ * @summary Condition Class
6
+ * @description Represents a logical condition
7
+ *
8
+ * @param {string | Condition} attr1
9
+ * @param {Operator | GroupOperator} operator
10
+ * @param {string | Condition} comparison
11
+ *
12
+ * @class Condition
13
+ * @implements Executor
14
+ *
15
+ * @category Query
16
+ * @subcategory Conditions
17
+ */
18
+ export declare class Condition extends Model {
19
+ protected attr1?: string | Condition;
20
+ protected operator?: Operator | GroupOperator;
21
+ protected comparison?: any;
22
+ private constructor();
23
+ /**
24
+ * @summary Joins 2 {@link Condition}s on an {@link Operator#AND} operation
25
+ * @param {Condition} condition
26
+ */
27
+ and(condition: Condition): Condition;
28
+ /**
29
+ * @summary Joins 2 {@link Condition}s on an {@link Operator#OR} operation
30
+ * @param {Condition} condition
31
+ */
32
+ or(condition: Condition): Condition;
33
+ /**
34
+ * @summary excludes a valut from the result
35
+ * @param val
36
+ */
37
+ not(val: any): Condition;
38
+ /**
39
+ * @inheritDoc
40
+ */
41
+ hasErrors(...exceptions: string[]): ModelErrorDefinition | undefined;
42
+ /**
43
+ * @summary Joins 2 {@link Condition}s on an {@link Operator#AND} operation
44
+ * @param {Condition} condition1
45
+ * @param {Condition} condition2
46
+ */
47
+ static and(condition1: Condition, condition2: Condition): Condition;
48
+ /**
49
+ * @summary Joins 2 {@link Condition}s on an {@link Operator#OR} operation
50
+ * @param {Condition} condition1
51
+ * @param {Condition} condition2
52
+ */
53
+ static or(condition1: Condition, condition2: Condition): Condition;
54
+ /**
55
+ * @summary Groups 2 {@link Condition}s by the specified {@link GroupOperator}
56
+ * @param {Condition} condition1
57
+ * @param {GroupOperator} operator
58
+ * @param {Condition} condition2
59
+ */
60
+ private static group;
61
+ static attribute(attr: string): AttributeOption;
62
+ /**
63
+ * @summary Condition Builder Class
64
+ * @description provides a simple API to build {@link Condition}s
65
+ *
66
+ * @class ConditionBuilder
67
+ * @implements Builder
68
+ * @implements AttributeOption
69
+ *
70
+ * @category Query
71
+ * @subcategory Conditions
72
+ */
73
+ private static Builder;
74
+ static get builder(): ConditionBuilderOption;
75
+ }
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Query = void 0;
4
+ const constants_1 = require("./constants.cjs");
5
+ /**
6
+ * @summary Helper Class to build queries
7
+ *
8
+ * @param {Database} db
9
+ *
10
+ * @class Query
11
+ *
12
+ * @category Query
13
+ */
14
+ class Query {
15
+ constructor(adapter) {
16
+ this.adapter = adapter;
17
+ }
18
+ /**
19
+ * @summary Creates a Select Clause
20
+ * @param {SelectSelector} [selector]
21
+ */
22
+ select(selector = constants_1.Const.FULL_RECORD) {
23
+ return this.adapter.Clauses.select(selector);
24
+ }
25
+ /**
26
+ * @summary Creates a Min Clause
27
+ * @param {SelectSelector} selector
28
+ */
29
+ min(selector) {
30
+ return this.select().min(selector);
31
+ }
32
+ /**
33
+ * @summary Creates a Max Clause
34
+ * @param {SelectSelector} selector
35
+ */
36
+ max(selector) {
37
+ return this.select().max(selector);
38
+ }
39
+ /**
40
+ * @summary Creates a Distinct Clause
41
+ * @param {SelectSelector} selector
42
+ */
43
+ distinct(selector) {
44
+ return this.select().distinct(selector);
45
+ }
46
+ /**
47
+ * @summary Creates a Count Clause
48
+ * @param {SelectSelector} selector
49
+ */
50
+ count(selector) {
51
+ return this.select().count(selector);
52
+ }
53
+ insert() {
54
+ return this.adapter.Clauses.insert();
55
+ }
56
+ }
57
+ exports.Query = Query;
58
+
59
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9xdWVyeS9RdWVyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFVQSwyQ0FBb0M7QUFHcEM7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFhLEtBQUs7SUFDaEIsWUFBb0IsT0FBd0I7UUFBeEIsWUFBTyxHQUFQLE9BQU8sQ0FBaUI7SUFBRyxDQUFDO0lBRWhEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxXQUEyQixpQkFBSyxDQUFDLFdBQVc7UUFDakQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUksUUFBUSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUNEOzs7T0FHRztJQUNILEdBQUcsQ0FBQyxRQUF3QjtRQUMxQixPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUNEOzs7T0FHRztJQUNILEdBQUcsQ0FBQyxRQUF3QjtRQUMxQixPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUNEOzs7T0FHRztJQUNILFFBQVEsQ0FBQyxRQUF3QjtRQUMvQixPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUNEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxRQUF3QjtRQUM1QixPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELE1BQU07UUFDSixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBSyxDQUFDO0lBQzFDLENBQUM7Q0FDRjtBQTFDRCxzQkEwQ0MiLCJmaWxlIjoicXVlcnkvUXVlcnkuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb3VudE9wdGlvbixcbiAgRGlzdGluY3RPcHRpb24sXG4gIEluc2VydE9wdGlvbixcbiAgTWF4T3B0aW9uLFxuICBNaW5PcHRpb24sXG4gIFNlbGVjdE9wdGlvbixcbn0gZnJvbSBcIi4vb3B0aW9uc1wiO1xuaW1wb3J0IHsgU2VsZWN0U2VsZWN0b3IgfSBmcm9tIFwiLi9zZWxlY3RvcnNcIjtcbmltcG9ydCB7IEFkYXB0ZXIgfSBmcm9tIFwiLi4vcGVyc2lzdGVuY2VcIjtcbmltcG9ydCB7IENvbnN0IH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBNb2RlbCB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcblxuLyoqXG4gKiBAc3VtbWFyeSBIZWxwZXIgQ2xhc3MgdG8gYnVpbGQgcXVlcmllc1xuICpcbiAqIEBwYXJhbSB7RGF0YWJhc2V9IGRiXG4gKlxuICogQGNsYXNzIFF1ZXJ5XG4gKlxuICogQGNhdGVnb3J5IFF1ZXJ5XG4gKi9cbmV4cG9ydCBjbGFzcyBRdWVyeTxRLCBNIGV4dGVuZHMgTW9kZWw+IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhZGFwdGVyOiBBZGFwdGVyPGFueSwgUT4pIHt9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IENyZWF0ZXMgYSBTZWxlY3QgQ2xhdXNlXG4gICAqIEBwYXJhbSB7U2VsZWN0U2VsZWN0b3J9IFtzZWxlY3Rvcl1cbiAgICovXG4gIHNlbGVjdChzZWxlY3RvcjogU2VsZWN0U2VsZWN0b3IgPSBDb25zdC5GVUxMX1JFQ09SRCk6IFNlbGVjdE9wdGlvbjxNPiB7XG4gICAgcmV0dXJuIHRoaXMuYWRhcHRlci5DbGF1c2VzLnNlbGVjdDxNPihzZWxlY3Rvcik7XG4gIH1cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IENyZWF0ZXMgYSBNaW4gQ2xhdXNlXG4gICAqIEBwYXJhbSB7U2VsZWN0U2VsZWN0b3J9IHNlbGVjdG9yXG4gICAqL1xuICBtaW4oc2VsZWN0b3I6IFNlbGVjdFNlbGVjdG9yKTogTWluT3B0aW9uPE0+IHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3QoKS5taW4oc2VsZWN0b3IpO1xuICB9XG4gIC8qKlxuICAgKiBAc3VtbWFyeSBDcmVhdGVzIGEgTWF4IENsYXVzZVxuICAgKiBAcGFyYW0ge1NlbGVjdFNlbGVjdG9yfSBzZWxlY3RvclxuICAgKi9cbiAgbWF4KHNlbGVjdG9yOiBTZWxlY3RTZWxlY3Rvcik6IE1heE9wdGlvbjxNPiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0KCkubWF4KHNlbGVjdG9yKTtcbiAgfVxuICAvKipcbiAgICogQHN1bW1hcnkgQ3JlYXRlcyBhIERpc3RpbmN0IENsYXVzZVxuICAgKiBAcGFyYW0ge1NlbGVjdFNlbGVjdG9yfSBzZWxlY3RvclxuICAgKi9cbiAgZGlzdGluY3Qoc2VsZWN0b3I6IFNlbGVjdFNlbGVjdG9yKTogRGlzdGluY3RPcHRpb248TT4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdCgpLmRpc3RpbmN0KHNlbGVjdG9yKTtcbiAgfVxuICAvKipcbiAgICogQHN1bW1hcnkgQ3JlYXRlcyBhIENvdW50IENsYXVzZVxuICAgKiBAcGFyYW0ge1NlbGVjdFNlbGVjdG9yfSBzZWxlY3RvclxuICAgKi9cbiAgY291bnQoc2VsZWN0b3I6IFNlbGVjdFNlbGVjdG9yKTogQ291bnRPcHRpb248TT4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdCgpLmNvdW50KHNlbGVjdG9yKTtcbiAgfVxuXG4gIGluc2VydCgpOiBJbnNlcnRPcHRpb248TT4ge1xuICAgIHJldHVybiB0aGlzLmFkYXB0ZXIuQ2xhdXNlcy5pbnNlcnQ8TT4oKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,43 @@
1
+ import { CountOption, DistinctOption, InsertOption, MaxOption, MinOption, SelectOption } from "./options";
2
+ import { SelectSelector } from "./selectors";
3
+ import { Adapter } from "../persistence";
4
+ import { Model } from "@decaf-ts/decorator-validation";
5
+ /**
6
+ * @summary Helper Class to build queries
7
+ *
8
+ * @param {Database} db
9
+ *
10
+ * @class Query
11
+ *
12
+ * @category Query
13
+ */
14
+ export declare class Query<Q, M extends Model> {
15
+ private adapter;
16
+ constructor(adapter: Adapter<any, Q>);
17
+ /**
18
+ * @summary Creates a Select Clause
19
+ * @param {SelectSelector} [selector]
20
+ */
21
+ select(selector?: SelectSelector): SelectOption<M>;
22
+ /**
23
+ * @summary Creates a Min Clause
24
+ * @param {SelectSelector} selector
25
+ */
26
+ min(selector: SelectSelector): MinOption<M>;
27
+ /**
28
+ * @summary Creates a Max Clause
29
+ * @param {SelectSelector} selector
30
+ */
31
+ max(selector: SelectSelector): MaxOption<M>;
32
+ /**
33
+ * @summary Creates a Distinct Clause
34
+ * @param {SelectSelector} selector
35
+ */
36
+ distinct(selector: SelectSelector): DistinctOption<M>;
37
+ /**
38
+ * @summary Creates a Count Clause
39
+ * @param {SelectSelector} selector
40
+ */
41
+ count(selector: SelectSelector): CountOption<M>;
42
+ insert(): InsertOption<M>;
43
+ }