@decaf-ts/for-couchdb 0.0.2
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.
- package/LICENSE.md +21 -0
- package/README.md +297 -0
- package/dist/esm/for-couchdb.bundle.min.esm.js +2 -0
- package/dist/esm/for-couchdb.bundle.min.esm.js.LICENSE.txt +25 -0
- package/dist/for-couchdb.bundle.min.js +2 -0
- package/dist/for-couchdb.bundle.min.js.LICENSE.txt +25 -0
- package/lib/adapter.cjs +332 -0
- package/lib/adapter.d.ts +32 -0
- package/lib/constants.cjs +15 -0
- package/lib/constants.d.ts +10 -0
- package/lib/errors.cjs +12 -0
- package/lib/errors.d.ts +4 -0
- package/lib/esm/adapter.d.ts +32 -0
- package/lib/esm/adapter.js +328 -0
- package/lib/esm/constants.d.ts +10 -0
- package/lib/esm/constants.js +12 -0
- package/lib/esm/errors.d.ts +4 -0
- package/lib/esm/errors.js +8 -0
- package/lib/esm/index.d.ts +24 -0
- package/lib/esm/index.js +26 -0
- package/lib/esm/indexes/generator.d.ts +3 -0
- package/lib/esm/indexes/generator.js +72 -0
- package/lib/esm/indexes/index.d.ts +2 -0
- package/lib/esm/indexes/index.js +4 -0
- package/lib/esm/indexes/types.d.ts +11 -0
- package/lib/esm/indexes/types.js +3 -0
- package/lib/esm/interfaces/CouchDBRepository.d.ts +7 -0
- package/lib/esm/interfaces/CouchDBRepository.js +3 -0
- package/lib/esm/interfaces/index.d.ts +1 -0
- package/lib/esm/interfaces/index.js +3 -0
- package/lib/esm/model/CouchDBSequence.d.ts +20 -0
- package/lib/esm/model/CouchDBSequence.js +49 -0
- package/lib/esm/model/index.d.ts +1 -0
- package/lib/esm/model/index.js +3 -0
- package/lib/esm/query/FromClause.d.ts +7 -0
- package/lib/esm/query/FromClause.js +21 -0
- package/lib/esm/query/InsertClause.d.ts +7 -0
- package/lib/esm/query/InsertClause.js +14 -0
- package/lib/esm/query/Paginator.d.ts +10 -0
- package/lib/esm/query/Paginator.js +58 -0
- package/lib/esm/query/SelectClause.d.ts +7 -0
- package/lib/esm/query/SelectClause.js +17 -0
- package/lib/esm/query/Statement.d.ts +13 -0
- package/lib/esm/query/Statement.js +55 -0
- package/lib/esm/query/ValuesClause.d.ts +7 -0
- package/lib/esm/query/ValuesClause.js +13 -0
- package/lib/esm/query/WhereClause.d.ts +7 -0
- package/lib/esm/query/WhereClause.js +58 -0
- package/lib/esm/query/constants.d.ts +4 -0
- package/lib/esm/query/constants.js +22 -0
- package/lib/esm/query/factory.d.ts +24 -0
- package/lib/esm/query/factory.js +118 -0
- package/lib/esm/query/index.d.ts +1 -0
- package/lib/esm/query/index.js +3 -0
- package/lib/esm/query/translate.d.ts +3 -0
- package/lib/esm/query/translate.js +12 -0
- package/lib/esm/sequences/Sequence.d.ts +48 -0
- package/lib/esm/sequences/Sequence.js +127 -0
- package/lib/esm/sequences/index.d.ts +1 -0
- package/lib/esm/sequences/index.js +3 -0
- package/lib/esm/sequences/utils.d.ts +1 -0
- package/lib/esm/sequences/utils.js +17 -0
- package/lib/esm/utils.d.ts +7 -0
- package/lib/esm/utils.js +72 -0
- package/lib/index.cjs +43 -0
- package/lib/index.d.ts +24 -0
- package/lib/indexes/generator.cjs +75 -0
- package/lib/indexes/generator.d.ts +3 -0
- package/lib/indexes/index.cjs +20 -0
- package/lib/indexes/index.d.ts +2 -0
- package/lib/indexes/types.cjs +4 -0
- package/lib/indexes/types.d.ts +11 -0
- package/lib/interfaces/CouchDBRepository.cjs +4 -0
- package/lib/interfaces/CouchDBRepository.d.ts +7 -0
- package/lib/interfaces/index.cjs +19 -0
- package/lib/interfaces/index.d.ts +1 -0
- package/lib/model/CouchDBSequence.cjs +52 -0
- package/lib/model/CouchDBSequence.d.ts +20 -0
- package/lib/model/index.cjs +19 -0
- package/lib/model/index.d.ts +1 -0
- package/lib/query/FromClause.cjs +25 -0
- package/lib/query/FromClause.d.ts +7 -0
- package/lib/query/InsertClause.cjs +18 -0
- package/lib/query/InsertClause.d.ts +7 -0
- package/lib/query/Paginator.cjs +62 -0
- package/lib/query/Paginator.d.ts +10 -0
- package/lib/query/SelectClause.cjs +21 -0
- package/lib/query/SelectClause.d.ts +7 -0
- package/lib/query/Statement.cjs +59 -0
- package/lib/query/Statement.d.ts +13 -0
- package/lib/query/ValuesClause.cjs +17 -0
- package/lib/query/ValuesClause.d.ts +7 -0
- package/lib/query/WhereClause.cjs +62 -0
- package/lib/query/WhereClause.d.ts +7 -0
- package/lib/query/constants.cjs +25 -0
- package/lib/query/constants.d.ts +4 -0
- package/lib/query/factory.cjs +122 -0
- package/lib/query/factory.d.ts +24 -0
- package/lib/query/index.cjs +19 -0
- package/lib/query/index.d.ts +1 -0
- package/lib/query/translate.cjs +15 -0
- package/lib/query/translate.d.ts +3 -0
- package/lib/sequences/Sequence.cjs +131 -0
- package/lib/sequences/Sequence.d.ts +48 -0
- package/lib/sequences/index.cjs +19 -0
- package/lib/sequences/index.d.ts +1 -0
- package/lib/sequences/utils.cjs +20 -0
- package/lib/sequences/utils.d.ts +1 -0
- package/lib/utils.cjs +79 -0
- package/lib/utils.d.ts +7 -0
- package/package.json +124 -0
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import { model, required } from "@decaf-ts/decorator-validation";
|
|
11
|
+
import { BaseModel, pk, index, table, uses } from "@decaf-ts/core";
|
|
12
|
+
let Sequence = class Sequence extends BaseModel {
|
|
13
|
+
constructor(seq) {
|
|
14
|
+
super(seq);
|
|
15
|
+
/**
|
|
16
|
+
* @summary the Primary key for the DBSequence
|
|
17
|
+
* @prop name
|
|
18
|
+
*
|
|
19
|
+
* @see pk
|
|
20
|
+
*/
|
|
21
|
+
this.id = undefined;
|
|
22
|
+
/**
|
|
23
|
+
* @summary the current value for the DBSequence
|
|
24
|
+
* @prop current
|
|
25
|
+
*
|
|
26
|
+
* @see required
|
|
27
|
+
* @see index
|
|
28
|
+
*/
|
|
29
|
+
this.current = undefined;
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
__decorate([
|
|
33
|
+
pk(),
|
|
34
|
+
__metadata("design:type", String)
|
|
35
|
+
], Sequence.prototype, "id", void 0);
|
|
36
|
+
__decorate([
|
|
37
|
+
required(),
|
|
38
|
+
index(),
|
|
39
|
+
__metadata("design:type", Object)
|
|
40
|
+
], Sequence.prototype, "current", void 0);
|
|
41
|
+
Sequence = __decorate([
|
|
42
|
+
table("??sequence"),
|
|
43
|
+
uses("nano"),
|
|
44
|
+
model(),
|
|
45
|
+
__metadata("design:paramtypes", [Object])
|
|
46
|
+
], Sequence);
|
|
47
|
+
export { Sequence };
|
|
48
|
+
|
|
49
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9tb2RlbC9Db3VjaERCU2VxdWVuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLEtBQUssRUFBWSxRQUFRLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSzVELElBQU0sUUFBUSxHQUFkLE1BQU0sUUFBUyxTQUFRLFNBQVM7SUFvQnJDLFlBQVksR0FBd0I7UUFDbEMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBcEJiOzs7OztXQUtHO1FBRUgsT0FBRSxHQUFZLFNBQVMsQ0FBQztRQUN4Qjs7Ozs7O1dBTUc7UUFHSCxZQUFPLEdBQXFCLFNBQVMsQ0FBQztJQUl0QyxDQUFDO0NBQ0YsQ0FBQTtBQWZDO0lBREMsRUFBRSxFQUFFOztvQ0FDbUI7QUFVeEI7SUFGQyxRQUFRLEVBQUU7SUFDVixLQUFLLEVBQUU7O3lDQUM4QjtBQWxCM0IsUUFBUTtJQUhwQixLQUFLLENBQUMsWUFBWSxDQUFDO0lBQ25CLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDWixLQUFLLEVBQUU7O0dBQ0ssUUFBUSxDQXVCcEIiLCJmaWxlIjoibW9kZWwvQ291Y2hEQlNlcXVlbmNlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbW9kZWwsIE1vZGVsQXJnLCByZXF1aXJlZCB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IEJhc2VNb2RlbCwgcGssIGluZGV4LCB0YWJsZSwgdXNlcyB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuXG5AdGFibGUoXCI/P3NlcXVlbmNlXCIpXG5AdXNlcyhcIm5hbm9cIilcbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgU2VxdWVuY2UgZXh0ZW5kcyBCYXNlTW9kZWwge1xuICAvKipcbiAgICogQHN1bW1hcnkgdGhlIFByaW1hcnkga2V5IGZvciB0aGUgREJTZXF1ZW5jZVxuICAgKiBAcHJvcCBuYW1lXG4gICAqXG4gICAqIEBzZWUgcGtcbiAgICovXG4gIEBwaygpXG4gIGlkPzogc3RyaW5nID0gdW5kZWZpbmVkO1xuICAvKipcbiAgICogQHN1bW1hcnkgdGhlIGN1cnJlbnQgdmFsdWUgZm9yIHRoZSBEQlNlcXVlbmNlXG4gICAqIEBwcm9wIGN1cnJlbnRcbiAgICpcbiAgICogQHNlZSByZXF1aXJlZFxuICAgKiBAc2VlIGluZGV4XG4gICAqL1xuICBAcmVxdWlyZWQoKVxuICBAaW5kZXgoKVxuICBjdXJyZW50Pzogc3RyaW5nIHwgbnVtYmVyID0gdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKHNlcT86IE1vZGVsQXJnPFNlcXVlbmNlPikge1xuICAgIHN1cGVyKHNlcSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./CouchDBSequence";
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from "./CouchDBSequence";
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9tb2RlbC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1CQUFtQixDQUFDIiwiZmlsZSI6Im1vZGVsL2luZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vQ291Y2hEQlNlcXVlbmNlXCI7XG4iXX0=
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { FromClause } from "@decaf-ts/core";
|
|
2
|
+
import { MangoQuery } from "nano";
|
|
3
|
+
import { ModelArg, Model } from "@decaf-ts/decorator-validation";
|
|
4
|
+
export declare class CouchDBFromClause<M extends Model> extends FromClause<MangoQuery, M> {
|
|
5
|
+
constructor(clause: ModelArg<FromClause<MangoQuery, M>>);
|
|
6
|
+
build(previous: MangoQuery): MangoQuery;
|
|
7
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { FromClause } from "@decaf-ts/core";
|
|
2
|
+
import { CouchDBKeys } from "../constants";
|
|
3
|
+
import { Repository } from "@decaf-ts/core";
|
|
4
|
+
// noinspection JSAnnotator
|
|
5
|
+
export class CouchDBFromClause extends FromClause {
|
|
6
|
+
constructor(clause) {
|
|
7
|
+
super(clause);
|
|
8
|
+
}
|
|
9
|
+
build(previous) {
|
|
10
|
+
const selectors = {};
|
|
11
|
+
selectors[CouchDBKeys.TABLE] = {};
|
|
12
|
+
selectors[CouchDBKeys.TABLE] =
|
|
13
|
+
typeof this.selector === "string"
|
|
14
|
+
? this.selector
|
|
15
|
+
: Repository.table(this.selector);
|
|
16
|
+
previous.selector = selectors;
|
|
17
|
+
return previous;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9xdWVyeS9Gcm9tQ2xhdXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUc1QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU1QywyQkFBMkI7QUFDM0IsTUFBTSxPQUFPLGlCQUFtQyxTQUFRLFVBR3ZEO0lBQ0MsWUFBWSxNQUEyQztRQUNyRCxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUVELEtBQUssQ0FBQyxRQUFvQjtRQUN4QixNQUFNLFNBQVMsR0FBUSxFQUFFLENBQUM7UUFDMUIsU0FBUyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDbEMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7WUFDMUIsT0FBTyxJQUFJLENBQUMsUUFBUSxLQUFLLFFBQVE7Z0JBQy9CLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUTtnQkFDZixDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBMEIsQ0FBQyxDQUFDO1FBQ3hELFFBQVEsQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDO1FBQzlCLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7Q0FDRiIsImZpbGUiOiJxdWVyeS9Gcm9tQ2xhdXNlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRnJvbUNsYXVzZSB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgTWFuZ29RdWVyeSB9IGZyb20gXCJuYW5vXCI7XG5pbXBvcnQgeyBNb2RlbEFyZywgTW9kZWwsIENvbnN0cnVjdG9yIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgQ291Y2hEQktleXMgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBSZXBvc2l0b3J5IH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5cbi8vIG5vaW5zcGVjdGlvbiBKU0Fubm90YXRvclxuZXhwb3J0IGNsYXNzIENvdWNoREJGcm9tQ2xhdXNlPE0gZXh0ZW5kcyBNb2RlbD4gZXh0ZW5kcyBGcm9tQ2xhdXNlPFxuICBNYW5nb1F1ZXJ5LFxuICBNXG4+IHtcbiAgY29uc3RydWN0b3IoY2xhdXNlOiBNb2RlbEFyZzxGcm9tQ2xhdXNlPE1hbmdvUXVlcnksIE0+Pikge1xuICAgIHN1cGVyKGNsYXVzZSk7XG4gIH1cblxuICBidWlsZChwcmV2aW91czogTWFuZ29RdWVyeSk6IE1hbmdvUXVlcnkge1xuICAgIGNvbnN0IHNlbGVjdG9yczogYW55ID0ge307XG4gICAgc2VsZWN0b3JzW0NvdWNoREJLZXlzLlRBQkxFXSA9IHt9O1xuICAgIHNlbGVjdG9yc1tDb3VjaERCS2V5cy5UQUJMRV0gPVxuICAgICAgdHlwZW9mIHRoaXMuc2VsZWN0b3IgPT09IFwic3RyaW5nXCJcbiAgICAgICAgPyB0aGlzLnNlbGVjdG9yXG4gICAgICAgIDogUmVwb3NpdG9yeS50YWJsZSh0aGlzLnNlbGVjdG9yIGFzIENvbnN0cnVjdG9yPE0+KTtcbiAgICBwcmV2aW91cy5zZWxlY3RvciA9IHNlbGVjdG9ycztcbiAgICByZXR1cm4gcHJldmlvdXM7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { InsertClause } from "@decaf-ts/core";
|
|
2
|
+
import { MangoQuery } from "nano";
|
|
3
|
+
import { ModelArg, Model } from "@decaf-ts/decorator-validation";
|
|
4
|
+
export declare class CouchDBInsertClause<M extends Model> extends InsertClause<MangoQuery, M> {
|
|
5
|
+
constructor(clause: ModelArg<InsertClause<MangoQuery, M>>);
|
|
6
|
+
build(query: MangoQuery): MangoQuery;
|
|
7
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { InsertClause } from "@decaf-ts/core";
|
|
2
|
+
import { InternalError } from "@decaf-ts/db-decorators";
|
|
3
|
+
// noinspection JSAnnotator
|
|
4
|
+
export class CouchDBInsertClause extends InsertClause {
|
|
5
|
+
constructor(clause) {
|
|
6
|
+
super(clause);
|
|
7
|
+
}
|
|
8
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
9
|
+
build(query) {
|
|
10
|
+
throw new InternalError("Not supported");
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9xdWVyeS9JbnNlcnRDbGF1c2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV4RCwyQkFBMkI7QUFDM0IsTUFBTSxPQUFPLG1CQUFxQyxTQUFRLFlBR3pEO0lBQ0MsWUFBWSxNQUE2QztRQUN2RCxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUVELDZEQUE2RDtJQUM3RCxLQUFLLENBQUMsS0FBaUI7UUFDckIsTUFBTSxJQUFJLGFBQWEsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUMzQyxDQUFDO0NBQ0YiLCJmaWxlIjoicXVlcnkvSW5zZXJ0Q2xhdXNlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5zZXJ0Q2xhdXNlIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgeyBNYW5nb1F1ZXJ5IH0gZnJvbSBcIm5hbm9cIjtcbmltcG9ydCB7IE1vZGVsQXJnLCBNb2RlbCB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IEludGVybmFsRXJyb3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcblxuLy8gbm9pbnNwZWN0aW9uIEpTQW5ub3RhdG9yXG5leHBvcnQgY2xhc3MgQ291Y2hEQkluc2VydENsYXVzZTxNIGV4dGVuZHMgTW9kZWw+IGV4dGVuZHMgSW5zZXJ0Q2xhdXNlPFxuICBNYW5nb1F1ZXJ5LFxuICBNXG4+IHtcbiAgY29uc3RydWN0b3IoY2xhdXNlOiBNb2RlbEFyZzxJbnNlcnRDbGF1c2U8TWFuZ29RdWVyeSwgTT4+KSB7XG4gICAgc3VwZXIoY2xhdXNlKTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgYnVpbGQocXVlcnk6IE1hbmdvUXVlcnkpOiBNYW5nb1F1ZXJ5IHtcbiAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcIk5vdCBzdXBwb3J0ZWRcIik7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Paginator, Statement } from "@decaf-ts/core";
|
|
2
|
+
import { MangoQuery } from "nano";
|
|
3
|
+
export declare class CouchDBPaginator<V> extends Paginator<V, MangoQuery> {
|
|
4
|
+
private bookMark?;
|
|
5
|
+
get total(): number;
|
|
6
|
+
get count(): number;
|
|
7
|
+
constructor(statement: Statement<MangoQuery>, size: number, rawStatement: MangoQuery);
|
|
8
|
+
protected prepare(rawStatement: MangoQuery): MangoQuery;
|
|
9
|
+
page(page?: number, ...args: any[]): Promise<V[]>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { Paginator, PagingError, } from "@decaf-ts/core";
|
|
2
|
+
import { DefaultSeparator, findPrimaryKey, InternalError, } from "@decaf-ts/db-decorators";
|
|
3
|
+
import { parseSequenceValue } from "../sequences/utils";
|
|
4
|
+
export class CouchDBPaginator extends Paginator {
|
|
5
|
+
get total() {
|
|
6
|
+
throw new InternalError(`The total pages api is not available for couchdb`);
|
|
7
|
+
}
|
|
8
|
+
get count() {
|
|
9
|
+
throw new InternalError(`The record count api is not available for couchdb`);
|
|
10
|
+
}
|
|
11
|
+
constructor(statement, size, rawStatement) {
|
|
12
|
+
super(statement, size, rawStatement);
|
|
13
|
+
}
|
|
14
|
+
prepare(rawStatement) {
|
|
15
|
+
const query = Object.assign({}, rawStatement);
|
|
16
|
+
if (query.limit)
|
|
17
|
+
this.limit = query.limit;
|
|
18
|
+
query.limit = this.size;
|
|
19
|
+
return query;
|
|
20
|
+
}
|
|
21
|
+
async page(page = 1, ...args) {
|
|
22
|
+
const statement = Object.assign({}, this.statement);
|
|
23
|
+
const target = this.stat.getTarget();
|
|
24
|
+
// if (!this._recordCount || !this._totalPages) {
|
|
25
|
+
// // this._recordCount = await this.adapter
|
|
26
|
+
// // .Query()
|
|
27
|
+
// // .count()
|
|
28
|
+
// // .from(target)
|
|
29
|
+
// // .execute<number>();
|
|
30
|
+
// }
|
|
31
|
+
if (page !== 1) {
|
|
32
|
+
if (!this.bookMark)
|
|
33
|
+
throw new PagingError("No bookmark. Did you start in the first page?");
|
|
34
|
+
statement["bookmark"] = this.bookMark;
|
|
35
|
+
}
|
|
36
|
+
const rawResult = await this.adapter.raw(statement, false, ...args);
|
|
37
|
+
const { docs, bookmark, warning } = rawResult;
|
|
38
|
+
if (warning)
|
|
39
|
+
console.warn(warning);
|
|
40
|
+
const results = statement.fields && statement.fields.length
|
|
41
|
+
? docs // has fields means its not full model
|
|
42
|
+
: docs.map((d) => {
|
|
43
|
+
//no fields means we need to revert to saving process
|
|
44
|
+
if (!target)
|
|
45
|
+
throw new PagingError("No statement target defined");
|
|
46
|
+
const pkDef = findPrimaryKey(new target());
|
|
47
|
+
const pk = pkDef.id;
|
|
48
|
+
const originalId = d._id.split(DefaultSeparator);
|
|
49
|
+
originalId.splice(0, 1); // remove the table name
|
|
50
|
+
return this.adapter.revert(d, target, pk, parseSequenceValue(pkDef.props.type, originalId.join(DefaultSeparator)));
|
|
51
|
+
});
|
|
52
|
+
this.bookMark = bookmark;
|
|
53
|
+
this._currentPage = page;
|
|
54
|
+
return results;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9xdWVyeS9QYWdpbmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxXQUFXLEdBR1osTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLGNBQWMsRUFDZCxhQUFhLEdBQ2QsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUV4RCxNQUFNLE9BQU8sZ0JBQW9CLFNBQVEsU0FBd0I7SUFHL0QsSUFBSSxLQUFLO1FBQ1AsTUFBTSxJQUFJLGFBQWEsQ0FBQyxrREFBa0QsQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxNQUFNLElBQUksYUFBYSxDQUNyQixtREFBbUQsQ0FDcEQsQ0FBQztJQUNKLENBQUM7SUFFRCxZQUNFLFNBQWdDLEVBQ2hDLElBQVksRUFDWixZQUF3QjtRQUV4QixLQUFLLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRVMsT0FBTyxDQUFDLFlBQXdCO1FBQ3hDLE1BQU0sS0FBSyxHQUFlLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQzFELElBQUksS0FBSyxDQUFDLEtBQUs7WUFBRSxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFFMUMsS0FBSyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBRXhCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBZSxDQUFDLEVBQUUsR0FBRyxJQUFXO1FBQ3pDLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNwRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3JDLGlEQUFpRDtRQUNqRCw4Q0FBOEM7UUFDOUMsa0JBQWtCO1FBQ2xCLGtCQUFrQjtRQUNsQix1QkFBdUI7UUFDdkIsNkJBQTZCO1FBQzdCLElBQUk7UUFFSixJQUFJLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUTtnQkFDaEIsTUFBTSxJQUFJLFdBQVcsQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO1lBQ3pFLFNBQVMsQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ3hDLENBQUM7UUFDRCxNQUFNLFNBQVMsR0FBdUIsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FDMUQsU0FBUyxFQUNULEtBQUssRUFDTCxHQUFHLElBQUksQ0FDUixDQUFDO1FBRUYsTUFBTSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEdBQUcsU0FBUyxDQUFDO1FBQzlDLElBQUksT0FBTztZQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkMsTUFBTSxPQUFPLEdBQ1gsU0FBUyxDQUFDLE1BQU0sSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU07WUFDekMsQ0FBQyxDQUFDLElBQUksQ0FBQyxzQ0FBc0M7WUFDN0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDYixxREFBcUQ7Z0JBQ3JELElBQUksQ0FBQyxNQUFNO29CQUFFLE1BQU0sSUFBSSxXQUFXLENBQUMsNkJBQTZCLENBQUMsQ0FBQztnQkFDbEUsTUFBTSxLQUFLLEdBQUcsY0FBYyxDQUFDLElBQUksTUFBTSxFQUFFLENBR3hDLENBQUM7Z0JBQ0YsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDcEIsTUFBTSxVQUFVLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztnQkFDakQsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyx3QkFBd0I7Z0JBQ2pELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQ3hCLENBQUMsRUFDRCxNQUFNLEVBQ04sRUFBRSxFQUNGLGtCQUFrQixDQUNoQixLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksRUFDaEIsVUFBVSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUNsQyxDQUNGLENBQUM7WUFDSixDQUFDLENBQUMsQ0FBQztRQUNULElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7Q0FDRiIsImZpbGUiOiJxdWVyeS9QYWdpbmF0b3IuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBQYWdpbmF0b3IsXG4gIFBhZ2luZ0Vycm9yLFxuICBTZXF1ZW5jZU9wdGlvbnMsXG4gIFN0YXRlbWVudCxcbn0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgeyBNYW5nb1F1ZXJ5LCBNYW5nb1Jlc3BvbnNlIH0gZnJvbSBcIm5hbm9cIjtcbmltcG9ydCB7XG4gIERlZmF1bHRTZXBhcmF0b3IsXG4gIGZpbmRQcmltYXJ5S2V5LFxuICBJbnRlcm5hbEVycm9yLFxufSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbmltcG9ydCB7IHBhcnNlU2VxdWVuY2VWYWx1ZSB9IGZyb20gXCIuLi9zZXF1ZW5jZXMvdXRpbHNcIjtcblxuZXhwb3J0IGNsYXNzIENvdWNoREJQYWdpbmF0b3I8Vj4gZXh0ZW5kcyBQYWdpbmF0b3I8ViwgTWFuZ29RdWVyeT4ge1xuICBwcml2YXRlIGJvb2tNYXJrPzogc3RyaW5nO1xuXG4gIGdldCB0b3RhbCgpOiBudW1iZXIge1xuICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKGBUaGUgdG90YWwgcGFnZXMgYXBpIGlzIG5vdCBhdmFpbGFibGUgZm9yIGNvdWNoZGJgKTtcbiAgfVxuXG4gIGdldCBjb3VudCgpOiBudW1iZXIge1xuICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgYFRoZSByZWNvcmQgY291bnQgYXBpIGlzIG5vdCBhdmFpbGFibGUgZm9yIGNvdWNoZGJgXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHN0YXRlbWVudDogU3RhdGVtZW50PE1hbmdvUXVlcnk+LFxuICAgIHNpemU6IG51bWJlcixcbiAgICByYXdTdGF0ZW1lbnQ6IE1hbmdvUXVlcnlcbiAgKSB7XG4gICAgc3VwZXIoc3RhdGVtZW50LCBzaXplLCByYXdTdGF0ZW1lbnQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHByZXBhcmUocmF3U3RhdGVtZW50OiBNYW5nb1F1ZXJ5KTogTWFuZ29RdWVyeSB7XG4gICAgY29uc3QgcXVlcnk6IE1hbmdvUXVlcnkgPSBPYmplY3QuYXNzaWduKHt9LCByYXdTdGF0ZW1lbnQpO1xuICAgIGlmIChxdWVyeS5saW1pdCkgdGhpcy5saW1pdCA9IHF1ZXJ5LmxpbWl0O1xuXG4gICAgcXVlcnkubGltaXQgPSB0aGlzLnNpemU7XG5cbiAgICByZXR1cm4gcXVlcnk7XG4gIH1cblxuICBhc3luYyBwYWdlKHBhZ2U6IG51bWJlciA9IDEsIC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTxWW10+IHtcbiAgICBjb25zdCBzdGF0ZW1lbnQgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLnN0YXRlbWVudCk7XG4gICAgY29uc3QgdGFyZ2V0ID0gdGhpcy5zdGF0LmdldFRhcmdldCgpO1xuICAgIC8vIGlmICghdGhpcy5fcmVjb3JkQ291bnQgfHwgIXRoaXMuX3RvdGFsUGFnZXMpIHtcbiAgICAvLyAgIC8vIHRoaXMuX3JlY29yZENvdW50ID0gYXdhaXQgdGhpcy5hZGFwdGVyXG4gICAgLy8gICAvLyAgIC5RdWVyeSgpXG4gICAgLy8gICAvLyAgIC5jb3VudCgpXG4gICAgLy8gICAvLyAgIC5mcm9tKHRhcmdldClcbiAgICAvLyAgIC8vICAgLmV4ZWN1dGU8bnVtYmVyPigpO1xuICAgIC8vIH1cblxuICAgIGlmIChwYWdlICE9PSAxKSB7XG4gICAgICBpZiAoIXRoaXMuYm9va01hcmspXG4gICAgICAgIHRocm93IG5ldyBQYWdpbmdFcnJvcihcIk5vIGJvb2ttYXJrLiBEaWQgeW91IHN0YXJ0IGluIHRoZSBmaXJzdCBwYWdlP1wiKTtcbiAgICAgIHN0YXRlbWVudFtcImJvb2ttYXJrXCJdID0gdGhpcy5ib29rTWFyaztcbiAgICB9XG4gICAgY29uc3QgcmF3UmVzdWx0OiBNYW5nb1Jlc3BvbnNlPGFueT4gPSBhd2FpdCB0aGlzLmFkYXB0ZXIucmF3KFxuICAgICAgc3RhdGVtZW50LFxuICAgICAgZmFsc2UsXG4gICAgICAuLi5hcmdzXG4gICAgKTtcblxuICAgIGNvbnN0IHsgZG9jcywgYm9va21hcmssIHdhcm5pbmcgfSA9IHJhd1Jlc3VsdDtcbiAgICBpZiAod2FybmluZykgY29uc29sZS53YXJuKHdhcm5pbmcpO1xuICAgIGNvbnN0IHJlc3VsdHMgPVxuICAgICAgc3RhdGVtZW50LmZpZWxkcyAmJiBzdGF0ZW1lbnQuZmllbGRzLmxlbmd0aFxuICAgICAgICA/IGRvY3MgLy8gaGFzIGZpZWxkcyBtZWFucyBpdHMgbm90IGZ1bGwgbW9kZWxcbiAgICAgICAgOiBkb2NzLm1hcCgoZCkgPT4ge1xuICAgICAgICAgICAgLy9ubyBmaWVsZHMgbWVhbnMgd2UgbmVlZCB0byByZXZlcnQgdG8gc2F2aW5nIHByb2Nlc3NcbiAgICAgICAgICAgIGlmICghdGFyZ2V0KSB0aHJvdyBuZXcgUGFnaW5nRXJyb3IoXCJObyBzdGF0ZW1lbnQgdGFyZ2V0IGRlZmluZWRcIik7XG4gICAgICAgICAgICBjb25zdCBwa0RlZiA9IGZpbmRQcmltYXJ5S2V5KG5ldyB0YXJnZXQoKSkgYXMge1xuICAgICAgICAgICAgICBpZDogc3RyaW5nO1xuICAgICAgICAgICAgICBwcm9wczogU2VxdWVuY2VPcHRpb25zO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNvbnN0IHBrID0gcGtEZWYuaWQ7XG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbElkID0gZC5faWQuc3BsaXQoRGVmYXVsdFNlcGFyYXRvcik7XG4gICAgICAgICAgICBvcmlnaW5hbElkLnNwbGljZSgwLCAxKTsgLy8gcmVtb3ZlIHRoZSB0YWJsZSBuYW1lXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hZGFwdGVyLnJldmVydChcbiAgICAgICAgICAgICAgZCxcbiAgICAgICAgICAgICAgdGFyZ2V0LFxuICAgICAgICAgICAgICBwayxcbiAgICAgICAgICAgICAgcGFyc2VTZXF1ZW5jZVZhbHVlKFxuICAgICAgICAgICAgICAgIHBrRGVmLnByb3BzLnR5cGUsXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxJZC5qb2luKERlZmF1bHRTZXBhcmF0b3IpXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSk7XG4gICAgdGhpcy5ib29rTWFyayA9IGJvb2ttYXJrO1xuICAgIHRoaXMuX2N1cnJlbnRQYWdlID0gcGFnZTtcbiAgICByZXR1cm4gcmVzdWx0cztcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { SelectClause } from "@decaf-ts/core";
|
|
2
|
+
import { MangoQuery } from "nano";
|
|
3
|
+
import { ModelArg, Model } from "@decaf-ts/decorator-validation";
|
|
4
|
+
export declare class CouchDBSelectClause<M extends Model> extends SelectClause<MangoQuery, M> {
|
|
5
|
+
constructor(clause: ModelArg<SelectClause<MangoQuery, M>>);
|
|
6
|
+
build(query: MangoQuery): MangoQuery;
|
|
7
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Const, SelectClause } from "@decaf-ts/core";
|
|
2
|
+
export class CouchDBSelectClause extends SelectClause {
|
|
3
|
+
constructor(clause) {
|
|
4
|
+
super(clause);
|
|
5
|
+
}
|
|
6
|
+
build(query) {
|
|
7
|
+
if (!this.selector || this.selector === Const.FULL_RECORD)
|
|
8
|
+
return query;
|
|
9
|
+
query.fields =
|
|
10
|
+
typeof this.selector === "string"
|
|
11
|
+
? [this.selector]
|
|
12
|
+
: this.selector;
|
|
13
|
+
return query;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9xdWVyeS9TZWxlY3RDbGF1c2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUlyRCxNQUFNLE9BQU8sbUJBQXFDLFNBQVEsWUFHekQ7SUFDQyxZQUFZLE1BQTZDO1FBQ3ZELEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQWlCO1FBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssS0FBSyxDQUFDLFdBQVc7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUN4RSxLQUFLLENBQUMsTUFBTTtZQUNWLE9BQU8sSUFBSSxDQUFDLFFBQVEsS0FBSyxRQUFRO2dCQUMvQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBa0IsQ0FBQztnQkFDM0IsQ0FBQyxDQUFFLElBQUksQ0FBQyxRQUFxQixDQUFDO1FBQ2xDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztDQUNGIiwiZmlsZSI6InF1ZXJ5L1NlbGVjdENsYXVzZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0LCBTZWxlY3RDbGF1c2UgfSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7IE1hbmdvUXVlcnkgfSBmcm9tIFwibmFub1wiO1xuaW1wb3J0IHsgTW9kZWxBcmcsIE1vZGVsIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuXG5leHBvcnQgY2xhc3MgQ291Y2hEQlNlbGVjdENsYXVzZTxNIGV4dGVuZHMgTW9kZWw+IGV4dGVuZHMgU2VsZWN0Q2xhdXNlPFxuICBNYW5nb1F1ZXJ5LFxuICBNXG4+IHtcbiAgY29uc3RydWN0b3IoY2xhdXNlOiBNb2RlbEFyZzxTZWxlY3RDbGF1c2U8TWFuZ29RdWVyeSwgTT4+KSB7XG4gICAgc3VwZXIoY2xhdXNlKTtcbiAgfVxuXG4gIGJ1aWxkKHF1ZXJ5OiBNYW5nb1F1ZXJ5KTogTWFuZ29RdWVyeSB7XG4gICAgaWYgKCF0aGlzLnNlbGVjdG9yIHx8IHRoaXMuc2VsZWN0b3IgPT09IENvbnN0LkZVTExfUkVDT1JEKSByZXR1cm4gcXVlcnk7XG4gICAgcXVlcnkuZmllbGRzID1cbiAgICAgIHR5cGVvZiB0aGlzLnNlbGVjdG9yID09PSBcInN0cmluZ1wiXG4gICAgICAgID8gW3RoaXMuc2VsZWN0b3IgYXMgc3RyaW5nXVxuICAgICAgICA6ICh0aGlzLnNlbGVjdG9yIGFzIHN0cmluZ1tdKTtcbiAgICByZXR1cm4gcXVlcnk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { DocumentScope, MangoQuery } from "nano";
|
|
2
|
+
import { Adapter, Statement } from "@decaf-ts/core";
|
|
3
|
+
import { Paginator } from "@decaf-ts/core";
|
|
4
|
+
export declare class CouchDBStatement extends Statement<MangoQuery> {
|
|
5
|
+
constructor(adapter: Adapter<DocumentScope<any>, MangoQuery>);
|
|
6
|
+
/**
|
|
7
|
+
* @inheritDoc
|
|
8
|
+
*/
|
|
9
|
+
execute<Y>(): Promise<Y>;
|
|
10
|
+
paginate<R>(size: number): Promise<Paginator<R, MangoQuery>>;
|
|
11
|
+
private processRecord;
|
|
12
|
+
raw<R>(rawInput: MangoQuery, ...args: any[]): Promise<R>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { Statement } from "@decaf-ts/core";
|
|
2
|
+
import { findPrimaryKey, InternalError } from "@decaf-ts/db-decorators";
|
|
3
|
+
import { CouchDBKeys } from "../constants";
|
|
4
|
+
import { parseSequenceValue } from "../sequences/utils";
|
|
5
|
+
import { CouchDBPaginator } from "./Paginator";
|
|
6
|
+
export class CouchDBStatement extends Statement {
|
|
7
|
+
constructor(adapter) {
|
|
8
|
+
super(adapter);
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* @inheritDoc
|
|
12
|
+
*/
|
|
13
|
+
async execute() {
|
|
14
|
+
try {
|
|
15
|
+
const query = this.build();
|
|
16
|
+
if (!query.limit)
|
|
17
|
+
query.limit = Number.MAX_SAFE_INTEGER;
|
|
18
|
+
return this.raw(query);
|
|
19
|
+
}
|
|
20
|
+
catch (e) {
|
|
21
|
+
throw new InternalError(e);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
async paginate(size) {
|
|
25
|
+
try {
|
|
26
|
+
const query = this.build();
|
|
27
|
+
return new CouchDBPaginator(this, size, query);
|
|
28
|
+
}
|
|
29
|
+
catch (e) {
|
|
30
|
+
throw new InternalError(e);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
processRecord(r, pkAttr, sequenceType) {
|
|
34
|
+
if (!r[CouchDBKeys.ID])
|
|
35
|
+
throw new InternalError(`No CouchDB Id definition found. Should not be possible`);
|
|
36
|
+
const [, ...keyArgs] = r[CouchDBKeys.ID].split("_");
|
|
37
|
+
const id = keyArgs.join("_");
|
|
38
|
+
return this.adapter.revert(r, this.target, pkAttr, parseSequenceValue(sequenceType, id));
|
|
39
|
+
}
|
|
40
|
+
async raw(rawInput, ...args) {
|
|
41
|
+
const results = await this.adapter.raw(rawInput, true, ...args);
|
|
42
|
+
if (!this.fullRecord)
|
|
43
|
+
return results;
|
|
44
|
+
if (!this.target)
|
|
45
|
+
throw new InternalError("No target defined in statement. should never happen");
|
|
46
|
+
const pkDef = findPrimaryKey(new this.target());
|
|
47
|
+
const pkAttr = pkDef.id;
|
|
48
|
+
const type = pkDef.props.type;
|
|
49
|
+
if (Array.isArray(results))
|
|
50
|
+
return results.map((r) => this.processRecord(r, pkAttr, type));
|
|
51
|
+
return this.processRecord(results, pkAttr, type);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9xdWVyeS9TdGF0ZW1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFXLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFeEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMzQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUV4RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFL0MsTUFBTSxPQUFPLGdCQUFpQixTQUFRLFNBQXFCO0lBQ3pELFlBQVksT0FBZ0Q7UUFDMUQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxPQUFPO1FBQ1gsSUFBSSxDQUFDO1lBQ0gsTUFBTSxLQUFLLEdBQWUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSztnQkFBRSxLQUFLLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztZQUN4RCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekIsQ0FBQztRQUFDLE9BQU8sQ0FBTSxFQUFFLENBQUM7WUFDaEIsTUFBTSxJQUFJLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3QixDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxRQUFRLENBQUksSUFBWTtRQUM1QixJQUFJLENBQUM7WUFDSCxNQUFNLEtBQUssR0FBZSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDdkMsT0FBTyxJQUFJLGdCQUFnQixDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDakQsQ0FBQztRQUFDLE9BQU8sQ0FBTSxFQUFFLENBQUM7WUFDaEIsTUFBTSxJQUFJLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3QixDQUFDO0lBQ0gsQ0FBQztJQUVPLGFBQWEsQ0FDbkIsQ0FBTSxFQUNOLE1BQWMsRUFDZCxZQUE2QztRQUU3QyxJQUFJLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDcEIsTUFBTSxJQUFJLGFBQWEsQ0FDckIsd0RBQXdELENBQ3pELENBQUM7UUFDSixNQUFNLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXBELE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDN0IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FDeEIsQ0FBQyxFQUNELElBQUksQ0FBQyxNQUEwQixFQUMvQixNQUFNLEVBQ04sa0JBQWtCLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUM5QixDQUFDO0lBQ1gsQ0FBQztJQUVELEtBQUssQ0FBQyxHQUFHLENBQUksUUFBb0IsRUFBRSxHQUFHLElBQVc7UUFDL0MsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBSSxRQUFRLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDbkUsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVO1lBQUUsT0FBTyxPQUFPLENBQUM7UUFDckMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNO1lBQ2QsTUFBTSxJQUFJLGFBQWEsQ0FDckIscURBQXFELENBQ3RELENBQUM7UUFFSixNQUFNLEtBQUssR0FBRyxjQUFjLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFTLENBQUMsQ0FBQztRQUN2RCxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3hCLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQzlCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7WUFDeEIsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQU0sQ0FBQztRQUN0RSxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQU0sQ0FBQztJQUN4RCxDQUFDO0NBQ0YiLCJmaWxlIjoicXVlcnkvU3RhdGVtZW50LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRG9jdW1lbnRTY29wZSwgTWFuZ29RdWVyeSB9IGZyb20gXCJuYW5vXCI7XG5pbXBvcnQgeyBBZGFwdGVyLCBTdGF0ZW1lbnQgfSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7IGZpbmRQcmltYXJ5S2V5LCBJbnRlcm5hbEVycm9yIH0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3RvciB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IENvdWNoREJLZXlzIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgcGFyc2VTZXF1ZW5jZVZhbHVlIH0gZnJvbSBcIi4uL3NlcXVlbmNlcy91dGlsc1wiO1xuaW1wb3J0IHsgUGFnaW5hdG9yIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgeyBDb3VjaERCUGFnaW5hdG9yIH0gZnJvbSBcIi4vUGFnaW5hdG9yXCI7XG5cbmV4cG9ydCBjbGFzcyBDb3VjaERCU3RhdGVtZW50IGV4dGVuZHMgU3RhdGVtZW50PE1hbmdvUXVlcnk+IHtcbiAgY29uc3RydWN0b3IoYWRhcHRlcjogQWRhcHRlcjxEb2N1bWVudFNjb3BlPGFueT4sIE1hbmdvUXVlcnk+KSB7XG4gICAgc3VwZXIoYWRhcHRlcik7XG4gIH1cblxuICAvKipcbiAgICogQGluaGVyaXREb2NcbiAgICovXG4gIGFzeW5jIGV4ZWN1dGU8WT4oKTogUHJvbWlzZTxZPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHF1ZXJ5OiBNYW5nb1F1ZXJ5ID0gdGhpcy5idWlsZCgpO1xuICAgICAgaWYgKCFxdWVyeS5saW1pdCkgcXVlcnkubGltaXQgPSBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUjtcbiAgICAgIHJldHVybiB0aGlzLnJhdyhxdWVyeSk7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihlKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBwYWdpbmF0ZTxSPihzaXplOiBudW1iZXIpOiBQcm9taXNlPFBhZ2luYXRvcjxSLCBNYW5nb1F1ZXJ5Pj4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBxdWVyeTogTWFuZ29RdWVyeSA9IHRoaXMuYnVpbGQoKTtcbiAgICAgIHJldHVybiBuZXcgQ291Y2hEQlBhZ2luYXRvcih0aGlzLCBzaXplLCBxdWVyeSk7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3NSZWNvcmQoXG4gICAgcjogYW55LFxuICAgIHBrQXR0cjogc3RyaW5nLFxuICAgIHNlcXVlbmNlVHlwZTogXCJOdW1iZXJcIiB8IFwiQmlnSW50XCIgfCB1bmRlZmluZWRcbiAgKSB7XG4gICAgaWYgKCFyW0NvdWNoREJLZXlzLklEXSlcbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgICBgTm8gQ291Y2hEQiBJZCBkZWZpbml0aW9uIGZvdW5kLiBTaG91bGQgbm90IGJlIHBvc3NpYmxlYFxuICAgICAgKTtcbiAgICBjb25zdCBbLCAuLi5rZXlBcmdzXSA9IHJbQ291Y2hEQktleXMuSURdLnNwbGl0KFwiX1wiKTtcblxuICAgIGNvbnN0IGlkID0ga2V5QXJncy5qb2luKFwiX1wiKTtcbiAgICByZXR1cm4gdGhpcy5hZGFwdGVyLnJldmVydChcbiAgICAgIHIsXG4gICAgICB0aGlzLnRhcmdldCBhcyBDb25zdHJ1Y3Rvcjxhbnk+LFxuICAgICAgcGtBdHRyLFxuICAgICAgcGFyc2VTZXF1ZW5jZVZhbHVlKHNlcXVlbmNlVHlwZSwgaWQpXG4gICAgKSBhcyBhbnk7XG4gIH1cblxuICBhc3luYyByYXc8Uj4ocmF3SW5wdXQ6IE1hbmdvUXVlcnksIC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTxSPiB7XG4gICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IHRoaXMuYWRhcHRlci5yYXc8Uj4ocmF3SW5wdXQsIHRydWUsIC4uLmFyZ3MpO1xuICAgIGlmICghdGhpcy5mdWxsUmVjb3JkKSByZXR1cm4gcmVzdWx0cztcbiAgICBpZiAoIXRoaXMudGFyZ2V0KVxuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICAgIFwiTm8gdGFyZ2V0IGRlZmluZWQgaW4gc3RhdGVtZW50LiBzaG91bGQgbmV2ZXIgaGFwcGVuXCJcbiAgICAgICk7XG5cbiAgICBjb25zdCBwa0RlZiA9IGZpbmRQcmltYXJ5S2V5KG5ldyB0aGlzLnRhcmdldCgpIGFzIGFueSk7XG4gICAgY29uc3QgcGtBdHRyID0gcGtEZWYuaWQ7XG4gICAgY29uc3QgdHlwZSA9IHBrRGVmLnByb3BzLnR5cGU7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkocmVzdWx0cykpXG4gICAgICByZXR1cm4gcmVzdWx0cy5tYXAoKHIpID0+IHRoaXMucHJvY2Vzc1JlY29yZChyLCBwa0F0dHIsIHR5cGUpKSBhcyBSO1xuICAgIHJldHVybiB0aGlzLnByb2Nlc3NSZWNvcmQocmVzdWx0cywgcGtBdHRyLCB0eXBlKSBhcyBSO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ValuesClause } from "@decaf-ts/core";
|
|
2
|
+
import { MangoQuery } from "nano";
|
|
3
|
+
import { ModelArg, Model } from "@decaf-ts/decorator-validation";
|
|
4
|
+
export declare class CouchDBValuesClause<M extends Model> extends ValuesClause<MangoQuery, M> {
|
|
5
|
+
constructor(clause: ModelArg<ValuesClause<MangoQuery, M>>);
|
|
6
|
+
build(previous: MangoQuery): MangoQuery;
|
|
7
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ValuesClause } from "@decaf-ts/core";
|
|
2
|
+
import { InternalError } from "@decaf-ts/db-decorators";
|
|
3
|
+
export class CouchDBValuesClause extends ValuesClause {
|
|
4
|
+
constructor(clause) {
|
|
5
|
+
super(clause);
|
|
6
|
+
}
|
|
7
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
8
|
+
build(previous) {
|
|
9
|
+
throw new InternalError("Not implemented");
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9xdWVyeS9WYWx1ZXNDbGF1c2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV4RCxNQUFNLE9BQU8sbUJBQXFDLFNBQVEsWUFHekQ7SUFDQyxZQUFZLE1BQTZDO1FBQ3ZELEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBRUQsNkRBQTZEO0lBQzdELEtBQUssQ0FBQyxRQUFvQjtRQUN4QixNQUFNLElBQUksYUFBYSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDN0MsQ0FBQztDQUNGIiwiZmlsZSI6InF1ZXJ5L1ZhbHVlc0NsYXVzZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZhbHVlc0NsYXVzZSB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgTWFuZ29RdWVyeSB9IGZyb20gXCJuYW5vXCI7XG5pbXBvcnQgeyBNb2RlbEFyZywgTW9kZWwgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBJbnRlcm5hbEVycm9yIH0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5cbmV4cG9ydCBjbGFzcyBDb3VjaERCVmFsdWVzQ2xhdXNlPE0gZXh0ZW5kcyBNb2RlbD4gZXh0ZW5kcyBWYWx1ZXNDbGF1c2U8XG4gIE1hbmdvUXVlcnksXG4gIE1cbj4ge1xuICBjb25zdHJ1Y3RvcihjbGF1c2U6IE1vZGVsQXJnPFZhbHVlc0NsYXVzZTxNYW5nb1F1ZXJ5LCBNPj4pIHtcbiAgICBzdXBlcihjbGF1c2UpO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICBidWlsZChwcmV2aW91czogTWFuZ29RdWVyeSk6IE1hbmdvUXVlcnkge1xuICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFwiTm90IGltcGxlbWVudGVkXCIpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { WhereClause } from "@decaf-ts/core";
|
|
2
|
+
import { MangoQuery } from "nano";
|
|
3
|
+
import { ModelArg } from "@decaf-ts/decorator-validation";
|
|
4
|
+
export declare class CouchDBWhereClause extends WhereClause<MangoQuery> {
|
|
5
|
+
constructor(clause: ModelArg<WhereClause<MangoQuery>>);
|
|
6
|
+
build(query: MangoQuery): MangoQuery;
|
|
7
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { Condition, WhereClause } from "@decaf-ts/core";
|
|
2
|
+
import { CouchDBGroupOperator } from "./constants";
|
|
3
|
+
import { sf } from "@decaf-ts/decorator-validation";
|
|
4
|
+
import { CouchDBKeys } from "../constants";
|
|
5
|
+
export class CouchDBWhereClause extends WhereClause {
|
|
6
|
+
constructor(clause) {
|
|
7
|
+
super(clause);
|
|
8
|
+
}
|
|
9
|
+
build(query) {
|
|
10
|
+
const condition = this.adapter.parseCondition(Condition.and(this.condition, Condition.attribute(CouchDBKeys.TABLE).eq(query.selector[CouchDBKeys.TABLE]))).selector;
|
|
11
|
+
const selectorKeys = Object.keys(condition);
|
|
12
|
+
if (selectorKeys.length === 1 &&
|
|
13
|
+
Object.values(CouchDBGroupOperator).indexOf(selectorKeys[0]) !== -1)
|
|
14
|
+
switch (selectorKeys[0]) {
|
|
15
|
+
case CouchDBGroupOperator.AND:
|
|
16
|
+
condition[CouchDBGroupOperator.AND] = [
|
|
17
|
+
...Object.values(condition[CouchDBGroupOperator.AND]).reduce((accum, val) => {
|
|
18
|
+
const keys = Object.keys(val);
|
|
19
|
+
if (keys.length !== 1)
|
|
20
|
+
throw new Error("Too many keys in query selector. should be one");
|
|
21
|
+
const k = keys[0];
|
|
22
|
+
if (k === CouchDBGroupOperator.AND)
|
|
23
|
+
accum.push(...val[k]);
|
|
24
|
+
else
|
|
25
|
+
accum.push(val);
|
|
26
|
+
return accum;
|
|
27
|
+
}, []),
|
|
28
|
+
];
|
|
29
|
+
query.selector = condition;
|
|
30
|
+
break;
|
|
31
|
+
case CouchDBGroupOperator.OR: {
|
|
32
|
+
const s = {};
|
|
33
|
+
s[CouchDBGroupOperator.AND] = [
|
|
34
|
+
condition,
|
|
35
|
+
...Object.entries(query.selector).map(([key, val]) => {
|
|
36
|
+
const result = {};
|
|
37
|
+
result[key] = val;
|
|
38
|
+
return result;
|
|
39
|
+
}),
|
|
40
|
+
];
|
|
41
|
+
query.selector = s;
|
|
42
|
+
break;
|
|
43
|
+
}
|
|
44
|
+
default:
|
|
45
|
+
throw new Error("This should be impossible");
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
Object.entries(condition).forEach(([key, val]) => {
|
|
49
|
+
if (query.selector[key])
|
|
50
|
+
console.warn(sf("A {0} query param is about to be overridden: {1} by {2}", key, query.selector[key], val));
|
|
51
|
+
query.selector[key] = val;
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
return query;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9xdWVyeS9XaGVyZUNsYXVzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3hELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNuRCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUUzQyxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsV0FBdUI7SUFDN0QsWUFBWSxNQUF5QztRQUNuRCxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUVELEtBQUssQ0FBQyxLQUFpQjtRQUNyQixNQUFNLFNBQVMsR0FBa0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQzFELFNBQVMsQ0FBQyxHQUFHLENBQ1gsSUFBSSxDQUFDLFNBQXNCLEVBQzNCLFNBQVMsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FDdkMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQ2xDLENBQ0YsQ0FDRixDQUFDLFFBQVEsQ0FBQztRQUVYLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFvQixDQUFDO1FBQy9ELElBQ0UsWUFBWSxDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQ3pCLE1BQU0sQ0FBQyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRW5FLFFBQVEsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3hCLEtBQUssb0JBQW9CLENBQUMsR0FBRztvQkFDM0IsU0FBUyxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxHQUFHO3dCQUNwQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQ2QsU0FBUyxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBa0IsQ0FDckQsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFzQixFQUFFLEdBQVEsRUFBRSxFQUFFOzRCQUM1QyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDOzRCQUM5QixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQztnQ0FDbkIsTUFBTSxJQUFJLEtBQUssQ0FDYixnREFBZ0QsQ0FDakQsQ0FBQzs0QkFDSixNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7NEJBQ2xCLElBQUksQ0FBQyxLQUFLLG9CQUFvQixDQUFDLEdBQUc7Z0NBQ2hDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBSSxHQUFHLENBQUMsQ0FBQyxDQUFXLENBQUMsQ0FBQzs7Z0NBQzlCLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7NEJBQ3JCLE9BQU8sS0FBSyxDQUFDO3dCQUNmLENBQUMsRUFBRSxFQUFFLENBQUM7cUJBQ1AsQ0FBQztvQkFDRixLQUFLLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQztvQkFDM0IsTUFBTTtnQkFDUixLQUFLLG9CQUFvQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQzdCLE1BQU0sQ0FBQyxHQUFxQixFQUFFLENBQUM7b0JBQy9CLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsR0FBRzt3QkFDNUIsU0FBUzt3QkFDVCxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUU7NEJBQ25ELE1BQU0sTUFBTSxHQUFxQixFQUFFLENBQUM7NEJBQ3BDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7NEJBQ2xCLE9BQU8sTUFBTSxDQUFDO3dCQUNoQixDQUFDLENBQUM7cUJBQ0gsQ0FBQztvQkFDRixLQUFLLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztvQkFDbkIsTUFBTTtnQkFDUixDQUFDO2dCQUNEO29CQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLENBQUMsQ0FBQztZQUNqRCxDQUFDO2FBQ0UsQ0FBQztZQUNKLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRTtnQkFDL0MsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztvQkFDckIsT0FBTyxDQUFDLElBQUksQ0FDVixFQUFFLENBQ0EseURBQXlELEVBQ3pELEdBQUcsRUFDSCxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBc0IsRUFDeEMsR0FBd0IsQ0FDekIsQ0FDRixDQUFDO2dCQUNKLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO1lBQzVCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztDQUNGIiwiZmlsZSI6InF1ZXJ5L1doZXJlQ2xhdXNlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uZGl0aW9uLCBXaGVyZUNsYXVzZSB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgTWFuZ29PcGVyYXRvciwgTWFuZ29RdWVyeSwgTWFuZ29TZWxlY3RvciB9IGZyb20gXCJuYW5vXCI7XG5pbXBvcnQgeyBNb2RlbEFyZyB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IENvdWNoREJHcm91cE9wZXJhdG9yIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBzZiB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IENvdWNoREJLZXlzIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgY2xhc3MgQ291Y2hEQldoZXJlQ2xhdXNlIGV4dGVuZHMgV2hlcmVDbGF1c2U8TWFuZ29RdWVyeT4ge1xuICBjb25zdHJ1Y3RvcihjbGF1c2U6IE1vZGVsQXJnPFdoZXJlQ2xhdXNlPE1hbmdvUXVlcnk+Pikge1xuICAgIHN1cGVyKGNsYXVzZSk7XG4gIH1cblxuICBidWlsZChxdWVyeTogTWFuZ29RdWVyeSk6IE1hbmdvUXVlcnkge1xuICAgIGNvbnN0IGNvbmRpdGlvbjogTWFuZ29TZWxlY3RvciA9IHRoaXMuYWRhcHRlci5wYXJzZUNvbmRpdGlvbihcbiAgICAgIENvbmRpdGlvbi5hbmQoXG4gICAgICAgIHRoaXMuY29uZGl0aW9uIGFzIENvbmRpdGlvbixcbiAgICAgICAgQ29uZGl0aW9uLmF0dHJpYnV0ZShDb3VjaERCS2V5cy5UQUJMRSkuZXEoXG4gICAgICAgICAgcXVlcnkuc2VsZWN0b3JbQ291Y2hEQktleXMuVEFCTEVdXG4gICAgICAgIClcbiAgICAgIClcbiAgICApLnNlbGVjdG9yO1xuXG4gICAgY29uc3Qgc2VsZWN0b3JLZXlzID0gT2JqZWN0LmtleXMoY29uZGl0aW9uKSBhcyBNYW5nb09wZXJhdG9yW107XG4gICAgaWYgKFxuICAgICAgc2VsZWN0b3JLZXlzLmxlbmd0aCA9PT0gMSAmJlxuICAgICAgT2JqZWN0LnZhbHVlcyhDb3VjaERCR3JvdXBPcGVyYXRvcikuaW5kZXhPZihzZWxlY3RvcktleXNbMF0pICE9PSAtMVxuICAgIClcbiAgICAgIHN3aXRjaCAoc2VsZWN0b3JLZXlzWzBdKSB7XG4gICAgICAgIGNhc2UgQ291Y2hEQkdyb3VwT3BlcmF0b3IuQU5EOlxuICAgICAgICAgIGNvbmRpdGlvbltDb3VjaERCR3JvdXBPcGVyYXRvci5BTkRdID0gW1xuICAgICAgICAgICAgLi4uT2JqZWN0LnZhbHVlcyhcbiAgICAgICAgICAgICAgY29uZGl0aW9uW0NvdWNoREJHcm91cE9wZXJhdG9yLkFORF0gYXMgTWFuZ29TZWxlY3RvclxuICAgICAgICAgICAgKS5yZWR1Y2UoKGFjY3VtOiBNYW5nb1NlbGVjdG9yW10sIHZhbDogYW55KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyh2YWwpO1xuICAgICAgICAgICAgICBpZiAoa2V5cy5sZW5ndGggIT09IDEpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgICAgXCJUb28gbWFueSBrZXlzIGluIHF1ZXJ5IHNlbGVjdG9yLiBzaG91bGQgYmUgb25lXCJcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBjb25zdCBrID0ga2V5c1swXTtcbiAgICAgICAgICAgICAgaWYgKGsgPT09IENvdWNoREJHcm91cE9wZXJhdG9yLkFORClcbiAgICAgICAgICAgICAgICBhY2N1bS5wdXNoKC4uLih2YWxba10gYXMgYW55W10pKTtcbiAgICAgICAgICAgICAgZWxzZSBhY2N1bS5wdXNoKHZhbCk7XG4gICAgICAgICAgICAgIHJldHVybiBhY2N1bTtcbiAgICAgICAgICAgIH0sIFtdKSxcbiAgICAgICAgICBdO1xuICAgICAgICAgIHF1ZXJ5LnNlbGVjdG9yID0gY29uZGl0aW9uO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIENvdWNoREJHcm91cE9wZXJhdG9yLk9SOiB7XG4gICAgICAgICAgY29uc3QgczogUmVjb3JkPGFueSwgYW55PiA9IHt9O1xuICAgICAgICAgIHNbQ291Y2hEQkdyb3VwT3BlcmF0b3IuQU5EXSA9IFtcbiAgICAgICAgICAgIGNvbmRpdGlvbixcbiAgICAgICAgICAgIC4uLk9iamVjdC5lbnRyaWVzKHF1ZXJ5LnNlbGVjdG9yKS5tYXAoKFtrZXksIHZhbF0pID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8YW55LCBhbnk+ID0ge307XG4gICAgICAgICAgICAgIHJlc3VsdFtrZXldID0gdmFsO1xuICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgXTtcbiAgICAgICAgICBxdWVyeS5zZWxlY3RvciA9IHM7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUaGlzIHNob3VsZCBiZSBpbXBvc3NpYmxlXCIpO1xuICAgICAgfVxuICAgIGVsc2Uge1xuICAgICAgT2JqZWN0LmVudHJpZXMoY29uZGl0aW9uKS5mb3JFYWNoKChba2V5LCB2YWxdKSA9PiB7XG4gICAgICAgIGlmIChxdWVyeS5zZWxlY3RvcltrZXldKVxuICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgIHNmKFxuICAgICAgICAgICAgICBcIkEgezB9IHF1ZXJ5IHBhcmFtIGlzIGFib3V0IHRvIGJlIG92ZXJyaWRkZW46IHsxfSBieSB7Mn1cIixcbiAgICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgICBxdWVyeS5zZWxlY3RvcltrZXldIGFzIHVua25vd24gYXMgc3RyaW5nLFxuICAgICAgICAgICAgICB2YWwgYXMgdW5rbm93biBhcyBzdHJpbmdcbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgICBxdWVyeS5zZWxlY3RvcltrZXldID0gdmFsO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHF1ZXJ5O1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export const CouchDBOperator = {
|
|
2
|
+
EQUAL: "$eq",
|
|
3
|
+
DIFFERENT: "$ne",
|
|
4
|
+
BIGGER: "$gt",
|
|
5
|
+
BIGGER_EQ: "$gte",
|
|
6
|
+
SMALLER: "$lt",
|
|
7
|
+
SMALLER_EQ: "$lte",
|
|
8
|
+
// BETWEEN = "BETWEEN",
|
|
9
|
+
NOT: "$not",
|
|
10
|
+
IN: "$in",
|
|
11
|
+
// IS = "IS",
|
|
12
|
+
REGEXP: "$regex",
|
|
13
|
+
};
|
|
14
|
+
export const CouchDBGroupOperator = {
|
|
15
|
+
AND: "$and",
|
|
16
|
+
OR: "$or",
|
|
17
|
+
};
|
|
18
|
+
export const CouchDBConst = {
|
|
19
|
+
NULL: "null",
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9xdWVyeS9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFrQztJQUM1RCxLQUFLLEVBQUUsS0FBSztJQUNaLFNBQVMsRUFBRSxLQUFLO0lBQ2hCLE1BQU0sRUFBRSxLQUFLO0lBQ2IsU0FBUyxFQUFFLE1BQU07SUFDakIsT0FBTyxFQUFFLEtBQUs7SUFDZCxVQUFVLEVBQUUsTUFBTTtJQUNsQix1QkFBdUI7SUFDdkIsR0FBRyxFQUFFLE1BQU07SUFDWCxFQUFFLEVBQUUsS0FBSztJQUNULGFBQWE7SUFDYixNQUFNLEVBQUUsUUFBUTtDQUNqQixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQWtDO0lBQ2pFLEdBQUcsRUFBRSxNQUFNO0lBQ1gsRUFBRSxFQUFFLEtBQUs7Q0FDVixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUEyQjtJQUNsRCxJQUFJLEVBQUUsTUFBTTtDQUNiLENBQUMiLCJmaWxlIjoicXVlcnkvY29uc3RhbnRzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWFuZ29PcGVyYXRvciB9IGZyb20gXCJuYW5vXCI7XG5cbmV4cG9ydCBjb25zdCBDb3VjaERCT3BlcmF0b3I6IFJlY29yZDxzdHJpbmcsIE1hbmdvT3BlcmF0b3I+ID0ge1xuICBFUVVBTDogXCIkZXFcIixcbiAgRElGRkVSRU5UOiBcIiRuZVwiLFxuICBCSUdHRVI6IFwiJGd0XCIsXG4gIEJJR0dFUl9FUTogXCIkZ3RlXCIsXG4gIFNNQUxMRVI6IFwiJGx0XCIsXG4gIFNNQUxMRVJfRVE6IFwiJGx0ZVwiLFxuICAvLyBCRVRXRUVOID0gXCJCRVRXRUVOXCIsXG4gIE5PVDogXCIkbm90XCIsXG4gIElOOiBcIiRpblwiLFxuICAvLyBJUyA9IFwiSVNcIixcbiAgUkVHRVhQOiBcIiRyZWdleFwiLFxufTtcblxuZXhwb3J0IGNvbnN0IENvdWNoREJHcm91cE9wZXJhdG9yOiBSZWNvcmQ8c3RyaW5nLCBNYW5nb09wZXJhdG9yPiA9IHtcbiAgQU5EOiBcIiRhbmRcIixcbiAgT1I6IFwiJG9yXCIsXG59O1xuXG5leHBvcnQgY29uc3QgQ291Y2hEQkNvbnN0OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBOVUxMOiBcIm51bGxcIixcbn07XG4iXX0=
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ClauseFactory, Condition, FromClause, FromSelector, GroupBySelector, LimitSelector, OffsetSelector, OrderBySelector, SelectSelector, Statement } from "@decaf-ts/core";
|
|
2
|
+
import { DocumentScope, MangoQuery } from "nano";
|
|
3
|
+
import { LimitClause } from "@decaf-ts/core";
|
|
4
|
+
import { SelectClause } from "@decaf-ts/core";
|
|
5
|
+
import { WhereClause } from "@decaf-ts/core";
|
|
6
|
+
import { OffsetClause } from "@decaf-ts/core";
|
|
7
|
+
import { OrderByClause } from "@decaf-ts/core";
|
|
8
|
+
import { GroupByClause } from "@decaf-ts/core";
|
|
9
|
+
import { ValuesClause } from "@decaf-ts/core";
|
|
10
|
+
import { InsertClause } from "@decaf-ts/core";
|
|
11
|
+
import { Model } from "@decaf-ts/decorator-validation";
|
|
12
|
+
import { CouchDBAdapter } from "../adapter";
|
|
13
|
+
export declare class Factory extends ClauseFactory<DocumentScope<any>, MangoQuery> {
|
|
14
|
+
constructor(adapter: CouchDBAdapter);
|
|
15
|
+
from<M extends Model>(statement: Statement<MangoQuery>, selector: FromSelector<M>): FromClause<MangoQuery, M>;
|
|
16
|
+
groupBy(statement: Statement<MangoQuery>, selector: GroupBySelector): GroupByClause<MangoQuery>;
|
|
17
|
+
insert<M extends Model>(): InsertClause<MangoQuery, M>;
|
|
18
|
+
limit(statement: Statement<MangoQuery>, selector: LimitSelector): LimitClause<MangoQuery>;
|
|
19
|
+
offset(statement: Statement<MangoQuery>, selector: OffsetSelector): OffsetClause<MangoQuery>;
|
|
20
|
+
orderBy(statement: Statement<MangoQuery>, selector: OrderBySelector[]): OrderByClause<MangoQuery>;
|
|
21
|
+
select<M extends Model>(selector: SelectSelector | undefined): SelectClause<MangoQuery, M>;
|
|
22
|
+
values<M extends Model>(statement: Statement<MangoQuery>, values: M[]): ValuesClause<MangoQuery, M>;
|
|
23
|
+
where(statement: Statement<MangoQuery>, condition: Condition): WhereClause<MangoQuery>;
|
|
24
|
+
}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { ClauseFactory, QueryError, } from "@decaf-ts/core";
|
|
2
|
+
import { LimitClause } from "@decaf-ts/core";
|
|
3
|
+
import { OffsetClause } from "@decaf-ts/core";
|
|
4
|
+
import { OrderByClause } from "@decaf-ts/core";
|
|
5
|
+
import { GroupByClause } from "@decaf-ts/core";
|
|
6
|
+
import { CouchDBFromClause } from "./FromClause";
|
|
7
|
+
import { InternalError } from "@decaf-ts/db-decorators";
|
|
8
|
+
import { CouchDBInsertClause } from "./InsertClause";
|
|
9
|
+
import { CouchDBStatement } from "./Statement";
|
|
10
|
+
import { CouchDBWhereClause } from "./WhereClause";
|
|
11
|
+
import { CouchDBSelectClause } from "./SelectClause";
|
|
12
|
+
import { CouchDBValuesClause } from "./ValuesClause";
|
|
13
|
+
import { CouchDBOperator } from "./constants";
|
|
14
|
+
export class Factory extends ClauseFactory {
|
|
15
|
+
constructor(adapter) {
|
|
16
|
+
super(adapter);
|
|
17
|
+
}
|
|
18
|
+
from(statement, selector) {
|
|
19
|
+
return new CouchDBFromClause({ statement: statement, selector: selector });
|
|
20
|
+
}
|
|
21
|
+
groupBy(statement, selector) {
|
|
22
|
+
return new (class extends GroupByClause {
|
|
23
|
+
constructor(clause) {
|
|
24
|
+
super(clause);
|
|
25
|
+
}
|
|
26
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
27
|
+
build(query) {
|
|
28
|
+
throw new InternalError("Not implemented");
|
|
29
|
+
}
|
|
30
|
+
})({
|
|
31
|
+
statement: statement,
|
|
32
|
+
selector: selector,
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
insert() {
|
|
36
|
+
return new CouchDBInsertClause({
|
|
37
|
+
statement: new CouchDBStatement(this.adapter),
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
limit(statement, selector) {
|
|
41
|
+
return new (class extends LimitClause {
|
|
42
|
+
constructor(clause) {
|
|
43
|
+
super(clause);
|
|
44
|
+
}
|
|
45
|
+
build(query) {
|
|
46
|
+
query.limit = this.selector;
|
|
47
|
+
return query;
|
|
48
|
+
}
|
|
49
|
+
})({
|
|
50
|
+
statement: statement,
|
|
51
|
+
selector: selector,
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
offset(statement, selector) {
|
|
55
|
+
return new (class extends OffsetClause {
|
|
56
|
+
constructor(clause) {
|
|
57
|
+
super(clause);
|
|
58
|
+
}
|
|
59
|
+
build(query) {
|
|
60
|
+
const skip = parseInt(this.selector);
|
|
61
|
+
if (isNaN(skip))
|
|
62
|
+
throw new QueryError("Failed to parse offset");
|
|
63
|
+
query.skip = skip;
|
|
64
|
+
return query;
|
|
65
|
+
}
|
|
66
|
+
})({
|
|
67
|
+
statement: statement,
|
|
68
|
+
selector: selector,
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
orderBy(statement, selector) {
|
|
72
|
+
return new (class extends OrderByClause {
|
|
73
|
+
constructor(clause) {
|
|
74
|
+
super(clause);
|
|
75
|
+
}
|
|
76
|
+
build(query) {
|
|
77
|
+
query.sort = query.sort || [];
|
|
78
|
+
query.selector = query.selector || {};
|
|
79
|
+
this.selector.forEach((s) => {
|
|
80
|
+
const [selector, value] = s;
|
|
81
|
+
const rec = {};
|
|
82
|
+
rec[selector] = value;
|
|
83
|
+
query.sort.push(rec);
|
|
84
|
+
if (!query.selector[selector]) {
|
|
85
|
+
query.selector[selector] = {};
|
|
86
|
+
query.selector[selector][CouchDBOperator.BIGGER] = null;
|
|
87
|
+
}
|
|
88
|
+
// query.fields = query.fields || [];
|
|
89
|
+
// query.fields = [...new Set([...query.fields, selector]).keys()]
|
|
90
|
+
});
|
|
91
|
+
return query;
|
|
92
|
+
}
|
|
93
|
+
})({
|
|
94
|
+
statement: statement,
|
|
95
|
+
selector: selector,
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
select(selector) {
|
|
99
|
+
return new CouchDBSelectClause({
|
|
100
|
+
statement: new CouchDBStatement(this.adapter),
|
|
101
|
+
selector: selector,
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
values(statement, values) {
|
|
105
|
+
return new CouchDBValuesClause({
|
|
106
|
+
statement: statement,
|
|
107
|
+
values: values,
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
where(statement, condition) {
|
|
111
|
+
return new CouchDBWhereClause({
|
|
112
|
+
statement: statement,
|
|
113
|
+
condition: condition,
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,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dkIsR0FBRyxJQUFJLENBQUM7b0JBQ1gsQ0FBQztvQkFDRCxxQ0FBcUM7b0JBQ3JDLGtFQUFrRTtnQkFDcEUsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO1NBQ0YsQ0FBQyxDQUFDO1lBQ0QsU0FBUyxFQUFFLFNBQVM7WUFDcEIsUUFBUSxFQUFFLFFBQVE7U0FDbkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE1BQU0sQ0FDSixRQUFvQztRQUVwQyxPQUFPLElBQUksbUJBQW1CLENBQUM7WUFDN0IsU0FBUyxFQUFFLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUM3QyxRQUFRLEVBQUUsUUFBUTtTQUNuQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTSxDQUNKLFNBQWdDLEVBQ2hDLE1BQVc7UUFFWCxPQUFPLElBQUksbUJBQW1CLENBQUk7WUFDaEMsU0FBUyxFQUFFLFNBQVM7WUFDcEIsTUFBTSxFQUFFLE1BQU07U0FDZixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUNILFNBQWdDLEVBQ2hDLFNBQW9CO1FBRXBCLE9BQU8sSUFBSSxrQkFBa0IsQ0FBQztZQUM1QixTQUFTLEVBQUUsU0FBUztZQUNwQixTQUFTLEVBQUUsU0FBUztTQUNyQixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YiLCJmaWxlIjoicXVlcnkvZmFjdG9yeS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENsYXVzZUZhY3RvcnksXG4gIENvbmRpdGlvbixcbiAgRnJvbUNsYXVzZSxcbiAgRnJvbVNlbGVjdG9yLFxuICBHcm91cEJ5U2VsZWN0b3IsXG4gIExpbWl0U2VsZWN0b3IsXG4gIE9mZnNldFNlbGVjdG9yLFxuICBPcmRlckJ5U2VsZWN0b3IsXG4gIFF1ZXJ5RXJyb3IsXG4gIFNlbGVjdFNlbGVjdG9yLFxuICBTdGF0ZW1lbnQsXG59IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgRG9jdW1lbnRTY29wZSwgTWFuZ29RdWVyeSwgTWFuZ29TZWxlY3RvciB9IGZyb20gXCJuYW5vXCI7XG5pbXBvcnQgeyBMaW1pdENsYXVzZSB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgU2VsZWN0Q2xhdXNlIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgeyBXaGVyZUNsYXVzZSB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgT2Zmc2V0Q2xhdXNlIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgeyBPcmRlckJ5Q2xhdXNlIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgeyBHcm91cEJ5Q2xhdXNlIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgeyBWYWx1ZXNDbGF1c2UgfSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7IEluc2VydENsYXVzZSB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgQ291Y2hEQkZyb21DbGF1c2UgfSBmcm9tIFwiLi9Gcm9tQ2xhdXNlXCI7XG5pbXBvcnQgeyBNb2RlbEFyZywgTW9kZWwgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBJbnRlcm5hbEVycm9yIH0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBDb3VjaERCSW5zZXJ0Q2xhdXNlIH0gZnJvbSBcIi4vSW5zZXJ0Q2xhdXNlXCI7XG5pbXBvcnQgeyBDb3VjaERCU3RhdGVtZW50IH0gZnJvbSBcIi4vU3RhdGVtZW50XCI7XG5pbXBvcnQgeyBDb3VjaERCV2hlcmVDbGF1c2UgfSBmcm9tIFwiLi9XaGVyZUNsYXVzZVwiO1xuaW1wb3J0IHsgQ291Y2hEQlNlbGVjdENsYXVzZSB9IGZyb20gXCIuL1NlbGVjdENsYXVzZVwiO1xuaW1wb3J0IHsgQ291Y2hEQlZhbHVlc0NsYXVzZSB9IGZyb20gXCIuL1ZhbHVlc0NsYXVzZVwiO1xuaW1wb3J0IHsgQ291Y2hEQk9wZXJhdG9yIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBDb3VjaERCQWRhcHRlciB9IGZyb20gXCIuLi9hZGFwdGVyXCI7XG5cbmV4cG9ydCBjbGFzcyBGYWN0b3J5IGV4dGVuZHMgQ2xhdXNlRmFjdG9yeTxEb2N1bWVudFNjb3BlPGFueT4sIE1hbmdvUXVlcnk+IHtcbiAgY29uc3RydWN0b3IoYWRhcHRlcjogQ291Y2hEQkFkYXB0ZXIpIHtcbiAgICBzdXBlcihhZGFwdGVyKTtcbiAgfVxuXG4gIGZyb208TSBleHRlbmRzIE1vZGVsPihcbiAgICBzdGF0ZW1lbnQ6IFN0YXRlbWVudDxNYW5nb1F1ZXJ5PixcbiAgICBzZWxlY3RvcjogRnJvbVNlbGVjdG9yPE0+XG4gICk6IEZyb21DbGF1c2U8TWFuZ29RdWVyeSwgTT4ge1xuICAgIHJldHVybiBuZXcgQ291Y2hEQkZyb21DbGF1c2UoeyBzdGF0ZW1lbnQ6IHN0YXRlbWVudCwgc2VsZWN0b3I6IHNlbGVjdG9yIH0pO1xuICB9XG5cbiAgZ3JvdXBCeShcbiAgICBzdGF0ZW1lbnQ6IFN0YXRlbWVudDxNYW5nb1F1ZXJ5PixcbiAgICBzZWxlY3RvcjogR3JvdXBCeVNlbGVjdG9yXG4gICk6IEdyb3VwQnlDbGF1c2U8TWFuZ29RdWVyeT4ge1xuICAgIHJldHVybiBuZXcgKGNsYXNzIGV4dGVuZHMgR3JvdXBCeUNsYXVzZTxNYW5nb1F1ZXJ5PiB7XG4gICAgICBjb25zdHJ1Y3RvcihjbGF1c2U6IE1vZGVsQXJnPEdyb3VwQnlDbGF1c2U8TWFuZ29RdWVyeT4+KSB7XG4gICAgICAgIHN1cGVyKGNsYXVzZSk7XG4gICAgICB9XG5cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgIGJ1aWxkKHF1ZXJ5OiBNYW5nb1F1ZXJ5KTogTWFuZ29RdWVyeSB7XG4gICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFwiTm90IGltcGxlbWVudGVkXCIpO1xuICAgICAgfVxuICAgIH0pKHtcbiAgICAgIHN0YXRlbWVudDogc3RhdGVtZW50LFxuICAgICAgc2VsZWN0b3I6IHNlbGVjdG9yLFxuICAgIH0pO1xuICB9XG5cbiAgaW5zZXJ0PE0gZXh0ZW5kcyBNb2RlbD4oKTogSW5zZXJ0Q2xhdXNlPE1hbmdvUXVlcnksIE0+IHtcbiAgICByZXR1cm4gbmV3IENvdWNoREJJbnNlcnRDbGF1c2Uoe1xuICAgICAgc3RhdGVtZW50OiBuZXcgQ291Y2hEQlN0YXRlbWVudCh0aGlzLmFkYXB0ZXIgYXMgQ291Y2hEQkFkYXB0ZXIpLFxuICAgIH0pO1xuICB9XG5cbiAgbGltaXQoXG4gICAgc3RhdGVtZW50OiBTdGF0ZW1lbnQ8TWFuZ29RdWVyeT4sXG4gICAgc2VsZWN0b3I6IExpbWl0U2VsZWN0b3JcbiAgKTogTGltaXRDbGF1c2U8TWFuZ29RdWVyeT4ge1xuICAgIHJldHVybiBuZXcgKGNsYXNzIGV4dGVuZHMgTGltaXRDbGF1c2U8TWFuZ29RdWVyeT4ge1xuICAgICAgY29uc3RydWN0b3IoY2xhdXNlOiBNb2RlbEFyZzxMaW1pdENsYXVzZTxNYW5nb1F1ZXJ5Pj4pIHtcbiAgICAgICAgc3VwZXIoY2xhdXNlKTtcbiAgICAgIH1cblxuICAgICAgYnVpbGQocXVlcnk6IE1hbmdvUXVlcnkpOiBNYW5nb1F1ZXJ5IHtcbiAgICAgICAgcXVlcnkubGltaXQgPSB0aGlzLnNlbGVjdG9yIGFzIG51bWJlcjtcbiAgICAgICAgcmV0dXJuIHF1ZXJ5O1xuICAgICAgfVxuICAgIH0pKHtcbiAgICAgIHN0YXRlbWVudDogc3RhdGVtZW50LFxuICAgICAgc2VsZWN0b3I6IHNlbGVjdG9yLFxuICAgIH0pO1xuICB9XG5cbiAgb2Zmc2V0KFxuICAgIHN0YXRlbWVudDogU3RhdGVtZW50PE1hbmdvUXVlcnk+LFxuICAgIHNlbGVjdG9yOiBPZmZzZXRTZWxlY3RvclxuICApOiBPZmZzZXRDbGF1c2U8TWFuZ29RdWVyeT4ge1xuICAgIHJldHVybiBuZXcgKGNsYXNzIGV4dGVuZHMgT2Zmc2V0Q2xhdXNlPE1hbmdvUXVlcnk+IHtcbiAgICAgIGNvbnN0cnVjdG9yKGNsYXVzZTogTW9kZWxBcmc8T2Zmc2V0Q2xhdXNlPE1hbmdvUXVlcnk+Pikge1xuICAgICAgICBzdXBlcihjbGF1c2UpO1xuICAgICAgfVxuXG4gICAgICBidWlsZChxdWVyeTogTWFuZ29RdWVyeSk6IE1hbmdvUXVlcnkge1xuICAgICAgICBjb25zdCBza2lwOiBudW1iZXIgPSBwYXJzZUludCh0aGlzLnNlbGVjdG9yIGFzIHVua25vd24gYXMgc3RyaW5nKTtcbiAgICAgICAgaWYgKGlzTmFOKHNraXApKSB0aHJvdyBuZXcgUXVlcnlFcnJvcihcIkZhaWxlZCB0byBwYXJzZSBvZmZzZXRcIik7XG4gICAgICAgIHF1ZXJ5LnNraXAgPSBza2lwO1xuICAgICAgICByZXR1cm4gcXVlcnk7XG4gICAgICB9XG4gICAgfSkoe1xuICAgICAgc3RhdGVtZW50OiBzdGF0ZW1lbnQsXG4gICAgICBzZWxlY3Rvcjogc2VsZWN0b3IsXG4gICAgfSk7XG4gIH1cblxuICBvcmRlckJ5KFxuICAgIHN0YXRlbWVudDogU3RhdGVtZW50PE1hbmdvUXVlcnk+LFxuICAgIHNlbGVjdG9yOiBPcmRlckJ5U2VsZWN0b3JbXVxuICApOiBPcmRlckJ5Q2xhdXNlPE1hbmdvUXVlcnk+IHtcbiAgICByZXR1cm4gbmV3IChjbGFzcyBleHRlbmRzIE9yZGVyQnlDbGF1c2U8TWFuZ29RdWVyeT4ge1xuICAgICAgY29uc3RydWN0b3IoY2xhdXNlOiBNb2RlbEFyZzxPcmRlckJ5Q2xhdXNlPE1hbmdvUXVlcnk+Pikge1xuICAgICAgICBzdXBlcihjbGF1c2UpO1xuICAgICAgfVxuXG4gICAgICBidWlsZChxdWVyeTogTWFuZ29RdWVyeSk6IE1hbmdvUXVlcnkge1xuICAgICAgICBxdWVyeS5zb3J0ID0gcXVlcnkuc29ydCB8fCBbXTtcbiAgICAgICAgcXVlcnkuc2VsZWN0b3IgPSBxdWVyeS5zZWxlY3RvciB8fCAoe30gYXMgTWFuZ29TZWxlY3Rvcik7XG4gICAgICAgIHRoaXMuc2VsZWN0b3IhLmZvckVhY2goKHMpID0+IHtcbiAgICAgICAgICBjb25zdCBbc2VsZWN0b3IsIHZhbHVlXSA9IHM7XG4gICAgICAgICAgY29uc3QgcmVjOiBhbnkgPSB7fTtcbiAgICAgICAgICByZWNbc2VsZWN0b3JdID0gdmFsdWU7XG4gICAgICAgICAgKHF1ZXJ5LnNvcnQgYXMgYW55W10pLnB1c2gocmVjIGFzIGFueSk7XG4gICAgICAgICAgaWYgKCFxdWVyeS5zZWxlY3RvcltzZWxlY3Rvcl0pIHtcbiAgICAgICAgICAgIHF1ZXJ5LnNlbGVjdG9yW3NlbGVjdG9yXSA9IHt9IGFzIE1hbmdvU2VsZWN0b3I7XG4gICAgICAgICAgICAocXVlcnkuc2VsZWN0b3Jbc2VsZWN0b3JdIGFzIE1hbmdvU2VsZWN0b3IpW1xuICAgICAgICAgICAgICBDb3VjaERCT3BlcmF0b3IuQklHR0VSXG4gICAgICAgICAgICBdID0gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gcXVlcnkuZmllbGRzID0gcXVlcnkuZmllbGRzIHx8IFtdO1xuICAgICAgICAgIC8vIHF1ZXJ5LmZpZWxkcyA9IFsuLi5uZXcgU2V0KFsuLi5xdWVyeS5maWVsZHMsIHNlbGVjdG9yXSkua2V5cygpXVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHF1ZXJ5O1xuICAgICAgfVxuICAgIH0pKHtcbiAgICAgIHN0YXRlbWVudDogc3RhdGVtZW50LFxuICAgICAgc2VsZWN0b3I6IHNlbGVjdG9yLFxuICAgIH0pO1xuICB9XG5cbiAgc2VsZWN0PE0gZXh0ZW5kcyBNb2RlbD4oXG4gICAgc2VsZWN0b3I6IFNlbGVjdFNlbGVjdG9yIHwgdW5kZWZpbmVkXG4gICk6IFNlbGVjdENsYXVzZTxNYW5nb1F1ZXJ5LCBNPiB7XG4gICAgcmV0dXJuIG5ldyBDb3VjaERCU2VsZWN0Q2xhdXNlKHtcbiAgICAgIHN0YXRlbWVudDogbmV3IENvdWNoREJTdGF0ZW1lbnQodGhpcy5hZGFwdGVyKSxcbiAgICAgIHNlbGVjdG9yOiBzZWxlY3RvcixcbiAgICB9KTtcbiAgfVxuXG4gIHZhbHVlczxNIGV4dGVuZHMgTW9kZWw+KFxuICAgIHN0YXRlbWVudDogU3RhdGVtZW50PE1hbmdvUXVlcnk+LFxuICAgIHZhbHVlczogTVtdXG4gICk6IFZhbHVlc0NsYXVzZTxNYW5nb1F1ZXJ5LCBNPiB7XG4gICAgcmV0dXJuIG5ldyBDb3VjaERCVmFsdWVzQ2xhdXNlPE0+KHtcbiAgICAgIHN0YXRlbWVudDogc3RhdGVtZW50LFxuICAgICAgdmFsdWVzOiB2YWx1ZXMsXG4gICAgfSk7XG4gIH1cblxuICB3aGVyZShcbiAgICBzdGF0ZW1lbnQ6IFN0YXRlbWVudDxNYW5nb1F1ZXJ5PixcbiAgICBjb25kaXRpb246IENvbmRpdGlvblxuICApOiBXaGVyZUNsYXVzZTxNYW5nb1F1ZXJ5PiB7XG4gICAgcmV0dXJuIG5ldyBDb3VjaERCV2hlcmVDbGF1c2Uoe1xuICAgICAgc3RhdGVtZW50OiBzdGF0ZW1lbnQsXG4gICAgICBjb25kaXRpb246IGNvbmRpdGlvbixcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./factory";
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from "./factory";
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9xdWVyeS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFdBQVcsQ0FBQyIsImZpbGUiOiJxdWVyeS9pbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2ZhY3RvcnlcIjtcbiJdfQ==
|