@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,20 @@
|
|
|
1
|
+
import { ModelArg } from "@decaf-ts/decorator-validation";
|
|
2
|
+
import { BaseModel } from "@decaf-ts/core";
|
|
3
|
+
export declare class Sequence extends BaseModel {
|
|
4
|
+
/**
|
|
5
|
+
* @summary the Primary key for the DBSequence
|
|
6
|
+
* @prop name
|
|
7
|
+
*
|
|
8
|
+
* @see pk
|
|
9
|
+
*/
|
|
10
|
+
id?: string;
|
|
11
|
+
/**
|
|
12
|
+
* @summary the current value for the DBSequence
|
|
13
|
+
* @prop current
|
|
14
|
+
*
|
|
15
|
+
* @see required
|
|
16
|
+
* @see index
|
|
17
|
+
*/
|
|
18
|
+
current?: string | number;
|
|
19
|
+
constructor(seq?: ModelArg<Sequence>);
|
|
20
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./CouchDBSequence.cjs"), exports);
|
|
18
|
+
|
|
19
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9tb2RlbC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0RBQWtDIiwiZmlsZSI6Im1vZGVsL2luZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vQ291Y2hEQlNlcXVlbmNlXCI7XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./CouchDBSequence";
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CouchDBFromClause = void 0;
|
|
4
|
+
const core_1 = require("@decaf-ts/core");
|
|
5
|
+
const constants_1 = require("../constants.cjs");
|
|
6
|
+
const core_2 = require("@decaf-ts/core");
|
|
7
|
+
// noinspection JSAnnotator
|
|
8
|
+
class CouchDBFromClause extends core_1.FromClause {
|
|
9
|
+
constructor(clause) {
|
|
10
|
+
super(clause);
|
|
11
|
+
}
|
|
12
|
+
build(previous) {
|
|
13
|
+
const selectors = {};
|
|
14
|
+
selectors[constants_1.CouchDBKeys.TABLE] = {};
|
|
15
|
+
selectors[constants_1.CouchDBKeys.TABLE] =
|
|
16
|
+
typeof this.selector === "string"
|
|
17
|
+
? this.selector
|
|
18
|
+
: core_2.Repository.table(this.selector);
|
|
19
|
+
previous.selector = selectors;
|
|
20
|
+
return previous;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
exports.CouchDBFromClause = CouchDBFromClause;
|
|
24
|
+
|
|
25
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9xdWVyeS9Gcm9tQ2xhdXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlDQUE0QztBQUc1Qyw0Q0FBMkM7QUFDM0MseUNBQTRDO0FBRTVDLDJCQUEyQjtBQUMzQixNQUFhLGlCQUFtQyxTQUFRLGlCQUd2RDtJQUNDLFlBQVksTUFBMkM7UUFDckQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxLQUFLLENBQUMsUUFBb0I7UUFDeEIsTUFBTSxTQUFTLEdBQVEsRUFBRSxDQUFDO1FBQzFCLFNBQVMsQ0FBQyx1QkFBVyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNsQyxTQUFTLENBQUMsdUJBQVcsQ0FBQyxLQUFLLENBQUM7WUFDMUIsT0FBTyxJQUFJLENBQUMsUUFBUSxLQUFLLFFBQVE7Z0JBQy9CLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUTtnQkFDZixDQUFDLENBQUMsaUJBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQTBCLENBQUMsQ0FBQztRQUN4RCxRQUFRLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQztRQUM5QixPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0NBQ0Y7QUFsQkQsOENBa0JDIiwiZmlsZSI6InF1ZXJ5L0Zyb21DbGF1c2UuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGcm9tQ2xhdXNlIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgeyBNYW5nb1F1ZXJ5IH0gZnJvbSBcIm5hbm9cIjtcbmltcG9ydCB7IE1vZGVsQXJnLCBNb2RlbCwgQ29uc3RydWN0b3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBDb3VjaERCS2V5cyB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IFJlcG9zaXRvcnkgfSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcblxuLy8gbm9pbnNwZWN0aW9uIEpTQW5ub3RhdG9yXG5leHBvcnQgY2xhc3MgQ291Y2hEQkZyb21DbGF1c2U8TSBleHRlbmRzIE1vZGVsPiBleHRlbmRzIEZyb21DbGF1c2U8XG4gIE1hbmdvUXVlcnksXG4gIE1cbj4ge1xuICBjb25zdHJ1Y3RvcihjbGF1c2U6IE1vZGVsQXJnPEZyb21DbGF1c2U8TWFuZ29RdWVyeSwgTT4+KSB7XG4gICAgc3VwZXIoY2xhdXNlKTtcbiAgfVxuXG4gIGJ1aWxkKHByZXZpb3VzOiBNYW5nb1F1ZXJ5KTogTWFuZ29RdWVyeSB7XG4gICAgY29uc3Qgc2VsZWN0b3JzOiBhbnkgPSB7fTtcbiAgICBzZWxlY3RvcnNbQ291Y2hEQktleXMuVEFCTEVdID0ge307XG4gICAgc2VsZWN0b3JzW0NvdWNoREJLZXlzLlRBQkxFXSA9XG4gICAgICB0eXBlb2YgdGhpcy5zZWxlY3RvciA9PT0gXCJzdHJpbmdcIlxuICAgICAgICA/IHRoaXMuc2VsZWN0b3JcbiAgICAgICAgOiBSZXBvc2l0b3J5LnRhYmxlKHRoaXMuc2VsZWN0b3IgYXMgQ29uc3RydWN0b3I8TT4pO1xuICAgIHByZXZpb3VzLnNlbGVjdG9yID0gc2VsZWN0b3JzO1xuICAgIHJldHVybiBwcmV2aW91cztcbiAgfVxufVxuIl19
|
|
@@ -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,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CouchDBInsertClause = void 0;
|
|
4
|
+
const core_1 = require("@decaf-ts/core");
|
|
5
|
+
const db_decorators_1 = require("@decaf-ts/db-decorators");
|
|
6
|
+
// noinspection JSAnnotator
|
|
7
|
+
class CouchDBInsertClause extends core_1.InsertClause {
|
|
8
|
+
constructor(clause) {
|
|
9
|
+
super(clause);
|
|
10
|
+
}
|
|
11
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
12
|
+
build(query) {
|
|
13
|
+
throw new db_decorators_1.InternalError("Not supported");
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
exports.CouchDBInsertClause = CouchDBInsertClause;
|
|
17
|
+
|
|
18
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9xdWVyeS9JbnNlcnRDbGF1c2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQThDO0FBRzlDLDJEQUF3RDtBQUV4RCwyQkFBMkI7QUFDM0IsTUFBYSxtQkFBcUMsU0FBUSxtQkFHekQ7SUFDQyxZQUFZLE1BQTZDO1FBQ3ZELEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBRUQsNkRBQTZEO0lBQzdELEtBQUssQ0FBQyxLQUFpQjtRQUNyQixNQUFNLElBQUksNkJBQWEsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUMzQyxDQUFDO0NBQ0Y7QUFaRCxrREFZQyIsImZpbGUiOiJxdWVyeS9JbnNlcnRDbGF1c2UuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbnNlcnRDbGF1c2UgfSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7IE1hbmdvUXVlcnkgfSBmcm9tIFwibmFub1wiO1xuaW1wb3J0IHsgTW9kZWxBcmcsIE1vZGVsIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgSW50ZXJuYWxFcnJvciB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuXG4vLyBub2luc3BlY3Rpb24gSlNBbm5vdGF0b3JcbmV4cG9ydCBjbGFzcyBDb3VjaERCSW5zZXJ0Q2xhdXNlPE0gZXh0ZW5kcyBNb2RlbD4gZXh0ZW5kcyBJbnNlcnRDbGF1c2U8XG4gIE1hbmdvUXVlcnksXG4gIE1cbj4ge1xuICBjb25zdHJ1Y3RvcihjbGF1c2U6IE1vZGVsQXJnPEluc2VydENsYXVzZTxNYW5nb1F1ZXJ5LCBNPj4pIHtcbiAgICBzdXBlcihjbGF1c2UpO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICBidWlsZChxdWVyeTogTWFuZ29RdWVyeSk6IE1hbmdvUXVlcnkge1xuICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFwiTm90IHN1cHBvcnRlZFwiKTtcbiAgfVxufVxuIl19
|
|
@@ -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,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CouchDBPaginator = void 0;
|
|
4
|
+
const core_1 = require("@decaf-ts/core");
|
|
5
|
+
const db_decorators_1 = require("@decaf-ts/db-decorators");
|
|
6
|
+
const utils_1 = require("../sequences/utils.cjs");
|
|
7
|
+
class CouchDBPaginator extends core_1.Paginator {
|
|
8
|
+
get total() {
|
|
9
|
+
throw new db_decorators_1.InternalError(`The total pages api is not available for couchdb`);
|
|
10
|
+
}
|
|
11
|
+
get count() {
|
|
12
|
+
throw new db_decorators_1.InternalError(`The record count api is not available for couchdb`);
|
|
13
|
+
}
|
|
14
|
+
constructor(statement, size, rawStatement) {
|
|
15
|
+
super(statement, size, rawStatement);
|
|
16
|
+
}
|
|
17
|
+
prepare(rawStatement) {
|
|
18
|
+
const query = Object.assign({}, rawStatement);
|
|
19
|
+
if (query.limit)
|
|
20
|
+
this.limit = query.limit;
|
|
21
|
+
query.limit = this.size;
|
|
22
|
+
return query;
|
|
23
|
+
}
|
|
24
|
+
async page(page = 1, ...args) {
|
|
25
|
+
const statement = Object.assign({}, this.statement);
|
|
26
|
+
const target = this.stat.getTarget();
|
|
27
|
+
// if (!this._recordCount || !this._totalPages) {
|
|
28
|
+
// // this._recordCount = await this.adapter
|
|
29
|
+
// // .Query()
|
|
30
|
+
// // .count()
|
|
31
|
+
// // .from(target)
|
|
32
|
+
// // .execute<number>();
|
|
33
|
+
// }
|
|
34
|
+
if (page !== 1) {
|
|
35
|
+
if (!this.bookMark)
|
|
36
|
+
throw new core_1.PagingError("No bookmark. Did you start in the first page?");
|
|
37
|
+
statement["bookmark"] = this.bookMark;
|
|
38
|
+
}
|
|
39
|
+
const rawResult = await this.adapter.raw(statement, false, ...args);
|
|
40
|
+
const { docs, bookmark, warning } = rawResult;
|
|
41
|
+
if (warning)
|
|
42
|
+
console.warn(warning);
|
|
43
|
+
const results = statement.fields && statement.fields.length
|
|
44
|
+
? docs // has fields means its not full model
|
|
45
|
+
: docs.map((d) => {
|
|
46
|
+
//no fields means we need to revert to saving process
|
|
47
|
+
if (!target)
|
|
48
|
+
throw new core_1.PagingError("No statement target defined");
|
|
49
|
+
const pkDef = (0, db_decorators_1.findPrimaryKey)(new target());
|
|
50
|
+
const pk = pkDef.id;
|
|
51
|
+
const originalId = d._id.split(db_decorators_1.DefaultSeparator);
|
|
52
|
+
originalId.splice(0, 1); // remove the table name
|
|
53
|
+
return this.adapter.revert(d, target, pk, (0, utils_1.parseSequenceValue)(pkDef.props.type, originalId.join(db_decorators_1.DefaultSeparator)));
|
|
54
|
+
});
|
|
55
|
+
this.bookMark = bookmark;
|
|
56
|
+
this._currentPage = page;
|
|
57
|
+
return results;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
exports.CouchDBPaginator = CouchDBPaginator;
|
|
61
|
+
|
|
62
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,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TUFBTSxFQUNOLEVBQUUsRUFDRixJQUFBLDBCQUFrQixFQUNoQixLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksRUFDaEIsVUFBVSxDQUFDLElBQUksQ0FBQyxnQ0FBZ0IsQ0FBQyxDQUNsQyxDQUNGLENBQUM7WUFDSixDQUFDLENBQUMsQ0FBQztRQUNULElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7Q0FDRjtBQWpGRCw0Q0FpRkMiLCJmaWxlIjoicXVlcnkvUGFnaW5hdG9yLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgUGFnaW5hdG9yLFxuICBQYWdpbmdFcnJvcixcbiAgU2VxdWVuY2VPcHRpb25zLFxuICBTdGF0ZW1lbnQsXG59IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgTWFuZ29RdWVyeSwgTWFuZ29SZXNwb25zZSB9IGZyb20gXCJuYW5vXCI7XG5pbXBvcnQge1xuICBEZWZhdWx0U2VwYXJhdG9yLFxuICBmaW5kUHJpbWFyeUtleSxcbiAgSW50ZXJuYWxFcnJvcixcbn0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBwYXJzZVNlcXVlbmNlVmFsdWUgfSBmcm9tIFwiLi4vc2VxdWVuY2VzL3V0aWxzXCI7XG5cbmV4cG9ydCBjbGFzcyBDb3VjaERCUGFnaW5hdG9yPFY+IGV4dGVuZHMgUGFnaW5hdG9yPFYsIE1hbmdvUXVlcnk+IHtcbiAgcHJpdmF0ZSBib29rTWFyaz86IHN0cmluZztcblxuICBnZXQgdG90YWwoKTogbnVtYmVyIHtcbiAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihgVGhlIHRvdGFsIHBhZ2VzIGFwaSBpcyBub3QgYXZhaWxhYmxlIGZvciBjb3VjaGRiYCk7XG4gIH1cblxuICBnZXQgY291bnQoKTogbnVtYmVyIHtcbiAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgIGBUaGUgcmVjb3JkIGNvdW50IGFwaSBpcyBub3QgYXZhaWxhYmxlIGZvciBjb3VjaGRiYFxuICAgICk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBzdGF0ZW1lbnQ6IFN0YXRlbWVudDxNYW5nb1F1ZXJ5PixcbiAgICBzaXplOiBudW1iZXIsXG4gICAgcmF3U3RhdGVtZW50OiBNYW5nb1F1ZXJ5XG4gICkge1xuICAgIHN1cGVyKHN0YXRlbWVudCwgc2l6ZSwgcmF3U3RhdGVtZW50KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwcmVwYXJlKHJhd1N0YXRlbWVudDogTWFuZ29RdWVyeSk6IE1hbmdvUXVlcnkge1xuICAgIGNvbnN0IHF1ZXJ5OiBNYW5nb1F1ZXJ5ID0gT2JqZWN0LmFzc2lnbih7fSwgcmF3U3RhdGVtZW50KTtcbiAgICBpZiAocXVlcnkubGltaXQpIHRoaXMubGltaXQgPSBxdWVyeS5saW1pdDtcblxuICAgIHF1ZXJ5LmxpbWl0ID0gdGhpcy5zaXplO1xuXG4gICAgcmV0dXJuIHF1ZXJ5O1xuICB9XG5cbiAgYXN5bmMgcGFnZShwYWdlOiBudW1iZXIgPSAxLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8VltdPiB7XG4gICAgY29uc3Qgc3RhdGVtZW50ID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5zdGF0ZW1lbnQpO1xuICAgIGNvbnN0IHRhcmdldCA9IHRoaXMuc3RhdC5nZXRUYXJnZXQoKTtcbiAgICAvLyBpZiAoIXRoaXMuX3JlY29yZENvdW50IHx8ICF0aGlzLl90b3RhbFBhZ2VzKSB7XG4gICAgLy8gICAvLyB0aGlzLl9yZWNvcmRDb3VudCA9IGF3YWl0IHRoaXMuYWRhcHRlclxuICAgIC8vICAgLy8gICAuUXVlcnkoKVxuICAgIC8vICAgLy8gICAuY291bnQoKVxuICAgIC8vICAgLy8gICAuZnJvbSh0YXJnZXQpXG4gICAgLy8gICAvLyAgIC5leGVjdXRlPG51bWJlcj4oKTtcbiAgICAvLyB9XG5cbiAgICBpZiAocGFnZSAhPT0gMSkge1xuICAgICAgaWYgKCF0aGlzLmJvb2tNYXJrKVxuICAgICAgICB0aHJvdyBuZXcgUGFnaW5nRXJyb3IoXCJObyBib29rbWFyay4gRGlkIHlvdSBzdGFydCBpbiB0aGUgZmlyc3QgcGFnZT9cIik7XG4gICAgICBzdGF0ZW1lbnRbXCJib29rbWFya1wiXSA9IHRoaXMuYm9va01hcms7XG4gICAgfVxuICAgIGNvbnN0IHJhd1Jlc3VsdDogTWFuZ29SZXNwb25zZTxhbnk+ID0gYXdhaXQgdGhpcy5hZGFwdGVyLnJhdyhcbiAgICAgIHN0YXRlbWVudCxcbiAgICAgIGZhbHNlLFxuICAgICAgLi4uYXJnc1xuICAgICk7XG5cbiAgICBjb25zdCB7IGRvY3MsIGJvb2ttYXJrLCB3YXJuaW5nIH0gPSByYXdSZXN1bHQ7XG4gICAgaWYgKHdhcm5pbmcpIGNvbnNvbGUud2Fybih3YXJuaW5nKTtcbiAgICBjb25zdCByZXN1bHRzID1cbiAgICAgIHN0YXRlbWVudC5maWVsZHMgJiYgc3RhdGVtZW50LmZpZWxkcy5sZW5ndGhcbiAgICAgICAgPyBkb2NzIC8vIGhhcyBmaWVsZHMgbWVhbnMgaXRzIG5vdCBmdWxsIG1vZGVsXG4gICAgICAgIDogZG9jcy5tYXAoKGQpID0+IHtcbiAgICAgICAgICAgIC8vbm8gZmllbGRzIG1lYW5zIHdlIG5lZWQgdG8gcmV2ZXJ0IHRvIHNhdmluZyBwcm9jZXNzXG4gICAgICAgICAgICBpZiAoIXRhcmdldCkgdGhyb3cgbmV3IFBhZ2luZ0Vycm9yKFwiTm8gc3RhdGVtZW50IHRhcmdldCBkZWZpbmVkXCIpO1xuICAgICAgICAgICAgY29uc3QgcGtEZWYgPSBmaW5kUHJpbWFyeUtleShuZXcgdGFyZ2V0KCkpIGFzIHtcbiAgICAgICAgICAgICAgaWQ6IHN0cmluZztcbiAgICAgICAgICAgICAgcHJvcHM6IFNlcXVlbmNlT3B0aW9ucztcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb25zdCBwayA9IHBrRGVmLmlkO1xuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxJZCA9IGQuX2lkLnNwbGl0KERlZmF1bHRTZXBhcmF0b3IpO1xuICAgICAgICAgICAgb3JpZ2luYWxJZC5zcGxpY2UoMCwgMSk7IC8vIHJlbW92ZSB0aGUgdGFibGUgbmFtZVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWRhcHRlci5yZXZlcnQoXG4gICAgICAgICAgICAgIGQsXG4gICAgICAgICAgICAgIHRhcmdldCxcbiAgICAgICAgICAgICAgcGssXG4gICAgICAgICAgICAgIHBhcnNlU2VxdWVuY2VWYWx1ZShcbiAgICAgICAgICAgICAgICBwa0RlZi5wcm9wcy50eXBlLFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsSWQuam9pbihEZWZhdWx0U2VwYXJhdG9yKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pO1xuICAgIHRoaXMuYm9va01hcmsgPSBib29rbWFyaztcbiAgICB0aGlzLl9jdXJyZW50UGFnZSA9IHBhZ2U7XG4gICAgcmV0dXJuIHJlc3VsdHM7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -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,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CouchDBSelectClause = void 0;
|
|
4
|
+
const core_1 = require("@decaf-ts/core");
|
|
5
|
+
class CouchDBSelectClause extends core_1.SelectClause {
|
|
6
|
+
constructor(clause) {
|
|
7
|
+
super(clause);
|
|
8
|
+
}
|
|
9
|
+
build(query) {
|
|
10
|
+
if (!this.selector || this.selector === core_1.Const.FULL_RECORD)
|
|
11
|
+
return query;
|
|
12
|
+
query.fields =
|
|
13
|
+
typeof this.selector === "string"
|
|
14
|
+
? [this.selector]
|
|
15
|
+
: this.selector;
|
|
16
|
+
return query;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
exports.CouchDBSelectClause = CouchDBSelectClause;
|
|
20
|
+
|
|
21
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9xdWVyeS9TZWxlY3RDbGF1c2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQXFEO0FBSXJELE1BQWEsbUJBQXFDLFNBQVEsbUJBR3pEO0lBQ0MsWUFBWSxNQUE2QztRQUN2RCxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUVELEtBQUssQ0FBQyxLQUFpQjtRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLFlBQUssQ0FBQyxXQUFXO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDeEUsS0FBSyxDQUFDLE1BQU07WUFDVixPQUFPLElBQUksQ0FBQyxRQUFRLEtBQUssUUFBUTtnQkFDL0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQWtCLENBQUM7Z0JBQzNCLENBQUMsQ0FBRSxJQUFJLENBQUMsUUFBcUIsQ0FBQztRQUNsQyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Q0FDRjtBQWhCRCxrREFnQkMiLCJmaWxlIjoicXVlcnkvU2VsZWN0Q2xhdXNlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uc3QsIFNlbGVjdENsYXVzZSB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgTWFuZ29RdWVyeSB9IGZyb20gXCJuYW5vXCI7XG5pbXBvcnQgeyBNb2RlbEFyZywgTW9kZWwgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5cbmV4cG9ydCBjbGFzcyBDb3VjaERCU2VsZWN0Q2xhdXNlPE0gZXh0ZW5kcyBNb2RlbD4gZXh0ZW5kcyBTZWxlY3RDbGF1c2U8XG4gIE1hbmdvUXVlcnksXG4gIE1cbj4ge1xuICBjb25zdHJ1Y3RvcihjbGF1c2U6IE1vZGVsQXJnPFNlbGVjdENsYXVzZTxNYW5nb1F1ZXJ5LCBNPj4pIHtcbiAgICBzdXBlcihjbGF1c2UpO1xuICB9XG5cbiAgYnVpbGQocXVlcnk6IE1hbmdvUXVlcnkpOiBNYW5nb1F1ZXJ5IHtcbiAgICBpZiAoIXRoaXMuc2VsZWN0b3IgfHwgdGhpcy5zZWxlY3RvciA9PT0gQ29uc3QuRlVMTF9SRUNPUkQpIHJldHVybiBxdWVyeTtcbiAgICBxdWVyeS5maWVsZHMgPVxuICAgICAgdHlwZW9mIHRoaXMuc2VsZWN0b3IgPT09IFwic3RyaW5nXCJcbiAgICAgICAgPyBbdGhpcy5zZWxlY3RvciBhcyBzdHJpbmddXG4gICAgICAgIDogKHRoaXMuc2VsZWN0b3IgYXMgc3RyaW5nW10pO1xuICAgIHJldHVybiBxdWVyeTtcbiAgfVxufVxuIl19
|
|
@@ -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,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CouchDBStatement = void 0;
|
|
4
|
+
const core_1 = require("@decaf-ts/core");
|
|
5
|
+
const db_decorators_1 = require("@decaf-ts/db-decorators");
|
|
6
|
+
const constants_1 = require("../constants.cjs");
|
|
7
|
+
const utils_1 = require("../sequences/utils.cjs");
|
|
8
|
+
const Paginator_1 = require("./Paginator.cjs");
|
|
9
|
+
class CouchDBStatement extends core_1.Statement {
|
|
10
|
+
constructor(adapter) {
|
|
11
|
+
super(adapter);
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* @inheritDoc
|
|
15
|
+
*/
|
|
16
|
+
async execute() {
|
|
17
|
+
try {
|
|
18
|
+
const query = this.build();
|
|
19
|
+
if (!query.limit)
|
|
20
|
+
query.limit = Number.MAX_SAFE_INTEGER;
|
|
21
|
+
return this.raw(query);
|
|
22
|
+
}
|
|
23
|
+
catch (e) {
|
|
24
|
+
throw new db_decorators_1.InternalError(e);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
async paginate(size) {
|
|
28
|
+
try {
|
|
29
|
+
const query = this.build();
|
|
30
|
+
return new Paginator_1.CouchDBPaginator(this, size, query);
|
|
31
|
+
}
|
|
32
|
+
catch (e) {
|
|
33
|
+
throw new db_decorators_1.InternalError(e);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
processRecord(r, pkAttr, sequenceType) {
|
|
37
|
+
if (!r[constants_1.CouchDBKeys.ID])
|
|
38
|
+
throw new db_decorators_1.InternalError(`No CouchDB Id definition found. Should not be possible`);
|
|
39
|
+
const [, ...keyArgs] = r[constants_1.CouchDBKeys.ID].split("_");
|
|
40
|
+
const id = keyArgs.join("_");
|
|
41
|
+
return this.adapter.revert(r, this.target, pkAttr, (0, utils_1.parseSequenceValue)(sequenceType, id));
|
|
42
|
+
}
|
|
43
|
+
async raw(rawInput, ...args) {
|
|
44
|
+
const results = await this.adapter.raw(rawInput, true, ...args);
|
|
45
|
+
if (!this.fullRecord)
|
|
46
|
+
return results;
|
|
47
|
+
if (!this.target)
|
|
48
|
+
throw new db_decorators_1.InternalError("No target defined in statement. should never happen");
|
|
49
|
+
const pkDef = (0, db_decorators_1.findPrimaryKey)(new this.target());
|
|
50
|
+
const pkAttr = pkDef.id;
|
|
51
|
+
const type = pkDef.props.type;
|
|
52
|
+
if (Array.isArray(results))
|
|
53
|
+
return results.map((r) => this.processRecord(r, pkAttr, type));
|
|
54
|
+
return this.processRecord(results, pkAttr, type);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
exports.CouchDBStatement = CouchDBStatement;
|
|
58
|
+
|
|
59
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9xdWVyeS9TdGF0ZW1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EseUNBQW9EO0FBQ3BELDJEQUF3RTtBQUV4RSw0Q0FBMkM7QUFDM0MsOENBQXdEO0FBRXhELDJDQUErQztBQUUvQyxNQUFhLGdCQUFpQixTQUFRLGdCQUFxQjtJQUN6RCxZQUFZLE9BQWdEO1FBQzFELEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsT0FBTztRQUNYLElBQUksQ0FBQztZQUNILE1BQU0sS0FBSyxHQUFlLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUs7Z0JBQUUsS0FBSyxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUM7WUFDeEQsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pCLENBQUM7UUFBQyxPQUFPLENBQU0sRUFBRSxDQUFDO1lBQ2hCLE1BQU0sSUFBSSw2QkFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdCLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQVEsQ0FBSSxJQUFZO1FBQzVCLElBQUksQ0FBQztZQUNILE1BQU0sS0FBSyxHQUFlLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN2QyxPQUFPLElBQUksNEJBQWdCLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNqRCxDQUFDO1FBQUMsT0FBTyxDQUFNLEVBQUUsQ0FBQztZQUNoQixNQUFNLElBQUksNkJBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3QixDQUFDO0lBQ0gsQ0FBQztJQUVPLGFBQWEsQ0FDbkIsQ0FBTSxFQUNOLE1BQWMsRUFDZCxZQUE2QztRQUU3QyxJQUFJLENBQUMsQ0FBQyxDQUFDLHVCQUFXLENBQUMsRUFBRSxDQUFDO1lBQ3BCLE1BQU0sSUFBSSw2QkFBYSxDQUNyQix3REFBd0QsQ0FDekQsQ0FBQztRQUNKLE1BQU0sQ0FBQyxFQUFFLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLHVCQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXBELE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDN0IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FDeEIsQ0FBQyxFQUNELElBQUksQ0FBQyxNQUEwQixFQUMvQixNQUFNLEVBQ04sSUFBQSwwQkFBa0IsRUFBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLENBQzlCLENBQUM7SUFDWCxDQUFDO0lBRUQsS0FBSyxDQUFDLEdBQUcsQ0FBSSxRQUFvQixFQUFFLEdBQUcsSUFBVztRQUMvQyxNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFJLFFBQVEsRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNuRSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVU7WUFBRSxPQUFPLE9BQU8sQ0FBQztRQUNyQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU07WUFDZCxNQUFNLElBQUksNkJBQWEsQ0FDckIscURBQXFELENBQ3RELENBQUM7UUFFSixNQUFNLEtBQUssR0FBRyxJQUFBLDhCQUFjLEVBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFTLENBQUMsQ0FBQztRQUN2RCxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3hCLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQzlCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7WUFDeEIsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQU0sQ0FBQztRQUN0RSxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQU0sQ0FBQztJQUN4RCxDQUFDO0NBQ0Y7QUE5REQsNENBOERDIiwiZmlsZSI6InF1ZXJ5L1N0YXRlbWVudC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERvY3VtZW50U2NvcGUsIE1hbmdvUXVlcnkgfSBmcm9tIFwibmFub1wiO1xuaW1wb3J0IHsgQWRhcHRlciwgU3RhdGVtZW50IH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgeyBmaW5kUHJpbWFyeUtleSwgSW50ZXJuYWxFcnJvciB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0b3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBDb3VjaERCS2V5cyB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IHBhcnNlU2VxdWVuY2VWYWx1ZSB9IGZyb20gXCIuLi9zZXF1ZW5jZXMvdXRpbHNcIjtcbmltcG9ydCB7IFBhZ2luYXRvciB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgQ291Y2hEQlBhZ2luYXRvciB9IGZyb20gXCIuL1BhZ2luYXRvclwiO1xuXG5leHBvcnQgY2xhc3MgQ291Y2hEQlN0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudDxNYW5nb1F1ZXJ5PiB7XG4gIGNvbnN0cnVjdG9yKGFkYXB0ZXI6IEFkYXB0ZXI8RG9jdW1lbnRTY29wZTxhbnk+LCBNYW5nb1F1ZXJ5Pikge1xuICAgIHN1cGVyKGFkYXB0ZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbmhlcml0RG9jXG4gICAqL1xuICBhc3luYyBleGVjdXRlPFk+KCk6IFByb21pc2U8WT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBxdWVyeTogTWFuZ29RdWVyeSA9IHRoaXMuYnVpbGQoKTtcbiAgICAgIGlmICghcXVlcnkubGltaXQpIHF1ZXJ5LmxpbWl0ID0gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI7XG4gICAgICByZXR1cm4gdGhpcy5yYXcocXVlcnkpO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoZSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgcGFnaW5hdGU8Uj4oc2l6ZTogbnVtYmVyKTogUHJvbWlzZTxQYWdpbmF0b3I8UiwgTWFuZ29RdWVyeT4+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcXVlcnk6IE1hbmdvUXVlcnkgPSB0aGlzLmJ1aWxkKCk7XG4gICAgICByZXR1cm4gbmV3IENvdWNoREJQYWdpbmF0b3IodGhpcywgc2l6ZSwgcXVlcnkpO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBwcm9jZXNzUmVjb3JkKFxuICAgIHI6IGFueSxcbiAgICBwa0F0dHI6IHN0cmluZyxcbiAgICBzZXF1ZW5jZVR5cGU6IFwiTnVtYmVyXCIgfCBcIkJpZ0ludFwiIHwgdW5kZWZpbmVkXG4gICkge1xuICAgIGlmICghcltDb3VjaERCS2V5cy5JRF0pXG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgICAgYE5vIENvdWNoREIgSWQgZGVmaW5pdGlvbiBmb3VuZC4gU2hvdWxkIG5vdCBiZSBwb3NzaWJsZWBcbiAgICAgICk7XG4gICAgY29uc3QgWywgLi4ua2V5QXJnc10gPSByW0NvdWNoREJLZXlzLklEXS5zcGxpdChcIl9cIik7XG5cbiAgICBjb25zdCBpZCA9IGtleUFyZ3Muam9pbihcIl9cIik7XG4gICAgcmV0dXJuIHRoaXMuYWRhcHRlci5yZXZlcnQoXG4gICAgICByLFxuICAgICAgdGhpcy50YXJnZXQgYXMgQ29uc3RydWN0b3I8YW55PixcbiAgICAgIHBrQXR0cixcbiAgICAgIHBhcnNlU2VxdWVuY2VWYWx1ZShzZXF1ZW5jZVR5cGUsIGlkKVxuICAgICkgYXMgYW55O1xuICB9XG5cbiAgYXN5bmMgcmF3PFI+KHJhd0lucHV0OiBNYW5nb1F1ZXJ5LCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8Uj4ge1xuICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCB0aGlzLmFkYXB0ZXIucmF3PFI+KHJhd0lucHV0LCB0cnVlLCAuLi5hcmdzKTtcbiAgICBpZiAoIXRoaXMuZnVsbFJlY29yZCkgcmV0dXJuIHJlc3VsdHM7XG4gICAgaWYgKCF0aGlzLnRhcmdldClcbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgICBcIk5vIHRhcmdldCBkZWZpbmVkIGluIHN0YXRlbWVudC4gc2hvdWxkIG5ldmVyIGhhcHBlblwiXG4gICAgICApO1xuXG4gICAgY29uc3QgcGtEZWYgPSBmaW5kUHJpbWFyeUtleShuZXcgdGhpcy50YXJnZXQoKSBhcyBhbnkpO1xuICAgIGNvbnN0IHBrQXR0ciA9IHBrRGVmLmlkO1xuICAgIGNvbnN0IHR5cGUgPSBwa0RlZi5wcm9wcy50eXBlO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHJlc3VsdHMpKVxuICAgICAgcmV0dXJuIHJlc3VsdHMubWFwKChyKSA9PiB0aGlzLnByb2Nlc3NSZWNvcmQociwgcGtBdHRyLCB0eXBlKSkgYXMgUjtcbiAgICByZXR1cm4gdGhpcy5wcm9jZXNzUmVjb3JkKHJlc3VsdHMsIHBrQXR0ciwgdHlwZSkgYXMgUjtcbiAgfVxufVxuIl19
|
|
@@ -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,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CouchDBValuesClause = void 0;
|
|
4
|
+
const core_1 = require("@decaf-ts/core");
|
|
5
|
+
const db_decorators_1 = require("@decaf-ts/db-decorators");
|
|
6
|
+
class CouchDBValuesClause extends core_1.ValuesClause {
|
|
7
|
+
constructor(clause) {
|
|
8
|
+
super(clause);
|
|
9
|
+
}
|
|
10
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
11
|
+
build(previous) {
|
|
12
|
+
throw new db_decorators_1.InternalError("Not implemented");
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
exports.CouchDBValuesClause = CouchDBValuesClause;
|
|
16
|
+
|
|
17
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9xdWVyeS9WYWx1ZXNDbGF1c2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQThDO0FBRzlDLDJEQUF3RDtBQUV4RCxNQUFhLG1CQUFxQyxTQUFRLG1CQUd6RDtJQUNDLFlBQVksTUFBNkM7UUFDdkQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCw2REFBNkQ7SUFDN0QsS0FBSyxDQUFDLFFBQW9CO1FBQ3hCLE1BQU0sSUFBSSw2QkFBYSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDN0MsQ0FBQztDQUNGO0FBWkQsa0RBWUMiLCJmaWxlIjoicXVlcnkvVmFsdWVzQ2xhdXNlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmFsdWVzQ2xhdXNlIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgeyBNYW5nb1F1ZXJ5IH0gZnJvbSBcIm5hbm9cIjtcbmltcG9ydCB7IE1vZGVsQXJnLCBNb2RlbCB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IEludGVybmFsRXJyb3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcblxuZXhwb3J0IGNsYXNzIENvdWNoREJWYWx1ZXNDbGF1c2U8TSBleHRlbmRzIE1vZGVsPiBleHRlbmRzIFZhbHVlc0NsYXVzZTxcbiAgTWFuZ29RdWVyeSxcbiAgTVxuPiB7XG4gIGNvbnN0cnVjdG9yKGNsYXVzZTogTW9kZWxBcmc8VmFsdWVzQ2xhdXNlPE1hbmdvUXVlcnksIE0+Pikge1xuICAgIHN1cGVyKGNsYXVzZSk7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIGJ1aWxkKHByZXZpb3VzOiBNYW5nb1F1ZXJ5KTogTWFuZ29RdWVyeSB7XG4gICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXCJOb3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -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,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CouchDBWhereClause = void 0;
|
|
4
|
+
const core_1 = require("@decaf-ts/core");
|
|
5
|
+
const constants_1 = require("./constants.cjs");
|
|
6
|
+
const decorator_validation_1 = require("@decaf-ts/decorator-validation");
|
|
7
|
+
const constants_2 = require("../constants.cjs");
|
|
8
|
+
class CouchDBWhereClause extends core_1.WhereClause {
|
|
9
|
+
constructor(clause) {
|
|
10
|
+
super(clause);
|
|
11
|
+
}
|
|
12
|
+
build(query) {
|
|
13
|
+
const condition = this.adapter.parseCondition(core_1.Condition.and(this.condition, core_1.Condition.attribute(constants_2.CouchDBKeys.TABLE).eq(query.selector[constants_2.CouchDBKeys.TABLE]))).selector;
|
|
14
|
+
const selectorKeys = Object.keys(condition);
|
|
15
|
+
if (selectorKeys.length === 1 &&
|
|
16
|
+
Object.values(constants_1.CouchDBGroupOperator).indexOf(selectorKeys[0]) !== -1)
|
|
17
|
+
switch (selectorKeys[0]) {
|
|
18
|
+
case constants_1.CouchDBGroupOperator.AND:
|
|
19
|
+
condition[constants_1.CouchDBGroupOperator.AND] = [
|
|
20
|
+
...Object.values(condition[constants_1.CouchDBGroupOperator.AND]).reduce((accum, val) => {
|
|
21
|
+
const keys = Object.keys(val);
|
|
22
|
+
if (keys.length !== 1)
|
|
23
|
+
throw new Error("Too many keys in query selector. should be one");
|
|
24
|
+
const k = keys[0];
|
|
25
|
+
if (k === constants_1.CouchDBGroupOperator.AND)
|
|
26
|
+
accum.push(...val[k]);
|
|
27
|
+
else
|
|
28
|
+
accum.push(val);
|
|
29
|
+
return accum;
|
|
30
|
+
}, []),
|
|
31
|
+
];
|
|
32
|
+
query.selector = condition;
|
|
33
|
+
break;
|
|
34
|
+
case constants_1.CouchDBGroupOperator.OR: {
|
|
35
|
+
const s = {};
|
|
36
|
+
s[constants_1.CouchDBGroupOperator.AND] = [
|
|
37
|
+
condition,
|
|
38
|
+
...Object.entries(query.selector).map(([key, val]) => {
|
|
39
|
+
const result = {};
|
|
40
|
+
result[key] = val;
|
|
41
|
+
return result;
|
|
42
|
+
}),
|
|
43
|
+
];
|
|
44
|
+
query.selector = s;
|
|
45
|
+
break;
|
|
46
|
+
}
|
|
47
|
+
default:
|
|
48
|
+
throw new Error("This should be impossible");
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
Object.entries(condition).forEach(([key, val]) => {
|
|
52
|
+
if (query.selector[key])
|
|
53
|
+
console.warn((0, decorator_validation_1.sf)("A {0} query param is about to be overridden: {1} by {2}", key, query.selector[key], val));
|
|
54
|
+
query.selector[key] = val;
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
return query;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
exports.CouchDBWhereClause = CouchDBWhereClause;
|
|
61
|
+
|
|
62
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,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QUNFLENBQUM7WUFDSixNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUU7Z0JBQy9DLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7b0JBQ3JCLE9BQU8sQ0FBQyxJQUFJLENBQ1YsSUFBQSx5QkFBRSxFQUNBLHlEQUF5RCxFQUN6RCxHQUFHLEVBQ0gsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQXNCLEVBQ3hDLEdBQXdCLENBQ3pCLENBQ0YsQ0FBQztnQkFDSixLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztZQUM1QixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Q0FDRjtBQXpFRCxnREF5RUMiLCJmaWxlIjoicXVlcnkvV2hlcmVDbGF1c2UuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25kaXRpb24sIFdoZXJlQ2xhdXNlIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgeyBNYW5nb09wZXJhdG9yLCBNYW5nb1F1ZXJ5LCBNYW5nb1NlbGVjdG9yIH0gZnJvbSBcIm5hbm9cIjtcbmltcG9ydCB7IE1vZGVsQXJnIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgQ291Y2hEQkdyb3VwT3BlcmF0b3IgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IHNmIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgQ291Y2hEQktleXMgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBjbGFzcyBDb3VjaERCV2hlcmVDbGF1c2UgZXh0ZW5kcyBXaGVyZUNsYXVzZTxNYW5nb1F1ZXJ5PiB7XG4gIGNvbnN0cnVjdG9yKGNsYXVzZTogTW9kZWxBcmc8V2hlcmVDbGF1c2U8TWFuZ29RdWVyeT4+KSB7XG4gICAgc3VwZXIoY2xhdXNlKTtcbiAgfVxuXG4gIGJ1aWxkKHF1ZXJ5OiBNYW5nb1F1ZXJ5KTogTWFuZ29RdWVyeSB7XG4gICAgY29uc3QgY29uZGl0aW9uOiBNYW5nb1NlbGVjdG9yID0gdGhpcy5hZGFwdGVyLnBhcnNlQ29uZGl0aW9uKFxuICAgICAgQ29uZGl0aW9uLmFuZChcbiAgICAgICAgdGhpcy5jb25kaXRpb24gYXMgQ29uZGl0aW9uLFxuICAgICAgICBDb25kaXRpb24uYXR0cmlidXRlKENvdWNoREJLZXlzLlRBQkxFKS5lcShcbiAgICAgICAgICBxdWVyeS5zZWxlY3RvcltDb3VjaERCS2V5cy5UQUJMRV1cbiAgICAgICAgKVxuICAgICAgKVxuICAgICkuc2VsZWN0b3I7XG5cbiAgICBjb25zdCBzZWxlY3RvcktleXMgPSBPYmplY3Qua2V5cyhjb25kaXRpb24pIGFzIE1hbmdvT3BlcmF0b3JbXTtcbiAgICBpZiAoXG4gICAgICBzZWxlY3RvcktleXMubGVuZ3RoID09PSAxICYmXG4gICAgICBPYmplY3QudmFsdWVzKENvdWNoREJHcm91cE9wZXJhdG9yKS5pbmRleE9mKHNlbGVjdG9yS2V5c1swXSkgIT09IC0xXG4gICAgKVxuICAgICAgc3dpdGNoIChzZWxlY3RvcktleXNbMF0pIHtcbiAgICAgICAgY2FzZSBDb3VjaERCR3JvdXBPcGVyYXRvci5BTkQ6XG4gICAgICAgICAgY29uZGl0aW9uW0NvdWNoREJHcm91cE9wZXJhdG9yLkFORF0gPSBbXG4gICAgICAgICAgICAuLi5PYmplY3QudmFsdWVzKFxuICAgICAgICAgICAgICBjb25kaXRpb25bQ291Y2hEQkdyb3VwT3BlcmF0b3IuQU5EXSBhcyBNYW5nb1NlbGVjdG9yXG4gICAgICAgICAgICApLnJlZHVjZSgoYWNjdW06IE1hbmdvU2VsZWN0b3JbXSwgdmFsOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHZhbCk7XG4gICAgICAgICAgICAgIGlmIChrZXlzLmxlbmd0aCAhPT0gMSlcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgICBcIlRvbyBtYW55IGtleXMgaW4gcXVlcnkgc2VsZWN0b3IuIHNob3VsZCBiZSBvbmVcIlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGNvbnN0IGsgPSBrZXlzWzBdO1xuICAgICAgICAgICAgICBpZiAoayA9PT0gQ291Y2hEQkdyb3VwT3BlcmF0b3IuQU5EKVxuICAgICAgICAgICAgICAgIGFjY3VtLnB1c2goLi4uKHZhbFtrXSBhcyBhbnlbXSkpO1xuICAgICAgICAgICAgICBlbHNlIGFjY3VtLnB1c2godmFsKTtcbiAgICAgICAgICAgICAgcmV0dXJuIGFjY3VtO1xuICAgICAgICAgICAgfSwgW10pLFxuICAgICAgICAgIF07XG4gICAgICAgICAgcXVlcnkuc2VsZWN0b3IgPSBjb25kaXRpb247XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgQ291Y2hEQkdyb3VwT3BlcmF0b3IuT1I6IHtcbiAgICAgICAgICBjb25zdCBzOiBSZWNvcmQ8YW55LCBhbnk+ID0ge307XG4gICAgICAgICAgc1tDb3VjaERCR3JvdXBPcGVyYXRvci5BTkRdID0gW1xuICAgICAgICAgICAgY29uZGl0aW9uLFxuICAgICAgICAgICAgLi4uT2JqZWN0LmVudHJpZXMocXVlcnkuc2VsZWN0b3IpLm1hcCgoW2tleSwgdmFsXSkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCByZXN1bHQ6IFJlY29yZDxhbnksIGFueT4gPSB7fTtcbiAgICAgICAgICAgICAgcmVzdWx0W2tleV0gPSB2YWw7XG4gICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICBdO1xuICAgICAgICAgIHF1ZXJ5LnNlbGVjdG9yID0gcztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRoaXMgc2hvdWxkIGJlIGltcG9zc2libGVcIik7XG4gICAgICB9XG4gICAgZWxzZSB7XG4gICAgICBPYmplY3QuZW50cmllcyhjb25kaXRpb24pLmZvckVhY2goKFtrZXksIHZhbF0pID0+IHtcbiAgICAgICAgaWYgKHF1ZXJ5LnNlbGVjdG9yW2tleV0pXG4gICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgc2YoXG4gICAgICAgICAgICAgIFwiQSB7MH0gcXVlcnkgcGFyYW0gaXMgYWJvdXQgdG8gYmUgb3ZlcnJpZGRlbjogezF9IGJ5IHsyfVwiLFxuICAgICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAgIHF1ZXJ5LnNlbGVjdG9yW2tleV0gYXMgdW5rbm93biBhcyBzdHJpbmcsXG4gICAgICAgICAgICAgIHZhbCBhcyB1bmtub3duIGFzIHN0cmluZ1xuICAgICAgICAgICAgKVxuICAgICAgICAgICk7XG4gICAgICAgIHF1ZXJ5LnNlbGVjdG9yW2tleV0gPSB2YWw7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcXVlcnk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -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,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CouchDBConst = exports.CouchDBGroupOperator = exports.CouchDBOperator = void 0;
|
|
4
|
+
exports.CouchDBOperator = {
|
|
5
|
+
EQUAL: "$eq",
|
|
6
|
+
DIFFERENT: "$ne",
|
|
7
|
+
BIGGER: "$gt",
|
|
8
|
+
BIGGER_EQ: "$gte",
|
|
9
|
+
SMALLER: "$lt",
|
|
10
|
+
SMALLER_EQ: "$lte",
|
|
11
|
+
// BETWEEN = "BETWEEN",
|
|
12
|
+
NOT: "$not",
|
|
13
|
+
IN: "$in",
|
|
14
|
+
// IS = "IS",
|
|
15
|
+
REGEXP: "$regex",
|
|
16
|
+
};
|
|
17
|
+
exports.CouchDBGroupOperator = {
|
|
18
|
+
AND: "$and",
|
|
19
|
+
OR: "$or",
|
|
20
|
+
};
|
|
21
|
+
exports.CouchDBConst = {
|
|
22
|
+
NULL: "null",
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9xdWVyeS9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRWEsUUFBQSxlQUFlLEdBQWtDO0lBQzVELEtBQUssRUFBRSxLQUFLO0lBQ1osU0FBUyxFQUFFLEtBQUs7SUFDaEIsTUFBTSxFQUFFLEtBQUs7SUFDYixTQUFTLEVBQUUsTUFBTTtJQUNqQixPQUFPLEVBQUUsS0FBSztJQUNkLFVBQVUsRUFBRSxNQUFNO0lBQ2xCLHVCQUF1QjtJQUN2QixHQUFHLEVBQUUsTUFBTTtJQUNYLEVBQUUsRUFBRSxLQUFLO0lBQ1QsYUFBYTtJQUNiLE1BQU0sRUFBRSxRQUFRO0NBQ2pCLENBQUM7QUFFVyxRQUFBLG9CQUFvQixHQUFrQztJQUNqRSxHQUFHLEVBQUUsTUFBTTtJQUNYLEVBQUUsRUFBRSxLQUFLO0NBQ1YsQ0FBQztBQUVXLFFBQUEsWUFBWSxHQUEyQjtJQUNsRCxJQUFJLEVBQUUsTUFBTTtDQUNiLENBQUMiLCJmaWxlIjoicXVlcnkvY29uc3RhbnRzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWFuZ29PcGVyYXRvciB9IGZyb20gXCJuYW5vXCI7XG5cbmV4cG9ydCBjb25zdCBDb3VjaERCT3BlcmF0b3I6IFJlY29yZDxzdHJpbmcsIE1hbmdvT3BlcmF0b3I+ID0ge1xuICBFUVVBTDogXCIkZXFcIixcbiAgRElGRkVSRU5UOiBcIiRuZVwiLFxuICBCSUdHRVI6IFwiJGd0XCIsXG4gIEJJR0dFUl9FUTogXCIkZ3RlXCIsXG4gIFNNQUxMRVI6IFwiJGx0XCIsXG4gIFNNQUxMRVJfRVE6IFwiJGx0ZVwiLFxuICAvLyBCRVRXRUVOID0gXCJCRVRXRUVOXCIsXG4gIE5PVDogXCIkbm90XCIsXG4gIElOOiBcIiRpblwiLFxuICAvLyBJUyA9IFwiSVNcIixcbiAgUkVHRVhQOiBcIiRyZWdleFwiLFxufTtcblxuZXhwb3J0IGNvbnN0IENvdWNoREJHcm91cE9wZXJhdG9yOiBSZWNvcmQ8c3RyaW5nLCBNYW5nb09wZXJhdG9yPiA9IHtcbiAgQU5EOiBcIiRhbmRcIixcbiAgT1I6IFwiJG9yXCIsXG59O1xuXG5leHBvcnQgY29uc3QgQ291Y2hEQkNvbnN0OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBOVUxMOiBcIm51bGxcIixcbn07XG4iXX0=
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Factory = void 0;
|
|
4
|
+
const core_1 = require("@decaf-ts/core");
|
|
5
|
+
const core_2 = require("@decaf-ts/core");
|
|
6
|
+
const core_3 = require("@decaf-ts/core");
|
|
7
|
+
const core_4 = require("@decaf-ts/core");
|
|
8
|
+
const core_5 = require("@decaf-ts/core");
|
|
9
|
+
const FromClause_1 = require("./FromClause.cjs");
|
|
10
|
+
const db_decorators_1 = require("@decaf-ts/db-decorators");
|
|
11
|
+
const InsertClause_1 = require("./InsertClause.cjs");
|
|
12
|
+
const Statement_1 = require("./Statement.cjs");
|
|
13
|
+
const WhereClause_1 = require("./WhereClause.cjs");
|
|
14
|
+
const SelectClause_1 = require("./SelectClause.cjs");
|
|
15
|
+
const ValuesClause_1 = require("./ValuesClause.cjs");
|
|
16
|
+
const constants_1 = require("./constants.cjs");
|
|
17
|
+
class Factory extends core_1.ClauseFactory {
|
|
18
|
+
constructor(adapter) {
|
|
19
|
+
super(adapter);
|
|
20
|
+
}
|
|
21
|
+
from(statement, selector) {
|
|
22
|
+
return new FromClause_1.CouchDBFromClause({ statement: statement, selector: selector });
|
|
23
|
+
}
|
|
24
|
+
groupBy(statement, selector) {
|
|
25
|
+
return new (class extends core_5.GroupByClause {
|
|
26
|
+
constructor(clause) {
|
|
27
|
+
super(clause);
|
|
28
|
+
}
|
|
29
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
30
|
+
build(query) {
|
|
31
|
+
throw new db_decorators_1.InternalError("Not implemented");
|
|
32
|
+
}
|
|
33
|
+
})({
|
|
34
|
+
statement: statement,
|
|
35
|
+
selector: selector,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
insert() {
|
|
39
|
+
return new InsertClause_1.CouchDBInsertClause({
|
|
40
|
+
statement: new Statement_1.CouchDBStatement(this.adapter),
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
limit(statement, selector) {
|
|
44
|
+
return new (class extends core_2.LimitClause {
|
|
45
|
+
constructor(clause) {
|
|
46
|
+
super(clause);
|
|
47
|
+
}
|
|
48
|
+
build(query) {
|
|
49
|
+
query.limit = this.selector;
|
|
50
|
+
return query;
|
|
51
|
+
}
|
|
52
|
+
})({
|
|
53
|
+
statement: statement,
|
|
54
|
+
selector: selector,
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
offset(statement, selector) {
|
|
58
|
+
return new (class extends core_3.OffsetClause {
|
|
59
|
+
constructor(clause) {
|
|
60
|
+
super(clause);
|
|
61
|
+
}
|
|
62
|
+
build(query) {
|
|
63
|
+
const skip = parseInt(this.selector);
|
|
64
|
+
if (isNaN(skip))
|
|
65
|
+
throw new core_1.QueryError("Failed to parse offset");
|
|
66
|
+
query.skip = skip;
|
|
67
|
+
return query;
|
|
68
|
+
}
|
|
69
|
+
})({
|
|
70
|
+
statement: statement,
|
|
71
|
+
selector: selector,
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
orderBy(statement, selector) {
|
|
75
|
+
return new (class extends core_4.OrderByClause {
|
|
76
|
+
constructor(clause) {
|
|
77
|
+
super(clause);
|
|
78
|
+
}
|
|
79
|
+
build(query) {
|
|
80
|
+
query.sort = query.sort || [];
|
|
81
|
+
query.selector = query.selector || {};
|
|
82
|
+
this.selector.forEach((s) => {
|
|
83
|
+
const [selector, value] = s;
|
|
84
|
+
const rec = {};
|
|
85
|
+
rec[selector] = value;
|
|
86
|
+
query.sort.push(rec);
|
|
87
|
+
if (!query.selector[selector]) {
|
|
88
|
+
query.selector[selector] = {};
|
|
89
|
+
query.selector[selector][constants_1.CouchDBOperator.BIGGER] = null;
|
|
90
|
+
}
|
|
91
|
+
// query.fields = query.fields || [];
|
|
92
|
+
// query.fields = [...new Set([...query.fields, selector]).keys()]
|
|
93
|
+
});
|
|
94
|
+
return query;
|
|
95
|
+
}
|
|
96
|
+
})({
|
|
97
|
+
statement: statement,
|
|
98
|
+
selector: selector,
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
select(selector) {
|
|
102
|
+
return new SelectClause_1.CouchDBSelectClause({
|
|
103
|
+
statement: new Statement_1.CouchDBStatement(this.adapter),
|
|
104
|
+
selector: selector,
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
values(statement, values) {
|
|
108
|
+
return new ValuesClause_1.CouchDBValuesClause({
|
|
109
|
+
statement: statement,
|
|
110
|
+
values: values,
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
where(statement, condition) {
|
|
114
|
+
return new WhereClause_1.CouchDBWhereClause({
|
|
115
|
+
statement: statement,
|
|
116
|
+
condition: condition,
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
exports.Factory = Factory;
|
|
121
|
+
|
|
122
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,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O1lBQ2hDLFNBQVMsRUFBRSxTQUFTO1lBQ3BCLE1BQU0sRUFBRSxNQUFNO1NBQ2YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELEtBQUssQ0FDSCxTQUFnQyxFQUNoQyxTQUFvQjtRQUVwQixPQUFPLElBQUksZ0NBQWtCLENBQUM7WUFDNUIsU0FBUyxFQUFFLFNBQVM7WUFDcEIsU0FBUyxFQUFFLFNBQVM7U0FDckIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBM0lELDBCQTJJQyIsImZpbGUiOiJxdWVyeS9mYWN0b3J5LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2xhdXNlRmFjdG9yeSxcbiAgQ29uZGl0aW9uLFxuICBGcm9tQ2xhdXNlLFxuICBGcm9tU2VsZWN0b3IsXG4gIEdyb3VwQnlTZWxlY3RvcixcbiAgTGltaXRTZWxlY3RvcixcbiAgT2Zmc2V0U2VsZWN0b3IsXG4gIE9yZGVyQnlTZWxlY3RvcixcbiAgUXVlcnlFcnJvcixcbiAgU2VsZWN0U2VsZWN0b3IsXG4gIFN0YXRlbWVudCxcbn0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgeyBEb2N1bWVudFNjb3BlLCBNYW5nb1F1ZXJ5LCBNYW5nb1NlbGVjdG9yIH0gZnJvbSBcIm5hbm9cIjtcbmltcG9ydCB7IExpbWl0Q2xhdXNlIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgeyBTZWxlY3RDbGF1c2UgfSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7IFdoZXJlQ2xhdXNlIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgeyBPZmZzZXRDbGF1c2UgfSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7IE9yZGVyQnlDbGF1c2UgfSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7IEdyb3VwQnlDbGF1c2UgfSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7IFZhbHVlc0NsYXVzZSB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgSW5zZXJ0Q2xhdXNlIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgeyBDb3VjaERCRnJvbUNsYXVzZSB9IGZyb20gXCIuL0Zyb21DbGF1c2VcIjtcbmltcG9ydCB7IE1vZGVsQXJnLCBNb2RlbCB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IEludGVybmFsRXJyb3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbmltcG9ydCB7IENvdWNoREJJbnNlcnRDbGF1c2UgfSBmcm9tIFwiLi9JbnNlcnRDbGF1c2VcIjtcbmltcG9ydCB7IENvdWNoREJTdGF0ZW1lbnQgfSBmcm9tIFwiLi9TdGF0ZW1lbnRcIjtcbmltcG9ydCB7IENvdWNoREJXaGVyZUNsYXVzZSB9IGZyb20gXCIuL1doZXJlQ2xhdXNlXCI7XG5pbXBvcnQgeyBDb3VjaERCU2VsZWN0Q2xhdXNlIH0gZnJvbSBcIi4vU2VsZWN0Q2xhdXNlXCI7XG5pbXBvcnQgeyBDb3VjaERCVmFsdWVzQ2xhdXNlIH0gZnJvbSBcIi4vVmFsdWVzQ2xhdXNlXCI7XG5pbXBvcnQgeyBDb3VjaERCT3BlcmF0b3IgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IENvdWNoREJBZGFwdGVyIH0gZnJvbSBcIi4uL2FkYXB0ZXJcIjtcblxuZXhwb3J0IGNsYXNzIEZhY3RvcnkgZXh0ZW5kcyBDbGF1c2VGYWN0b3J5PERvY3VtZW50U2NvcGU8YW55PiwgTWFuZ29RdWVyeT4ge1xuICBjb25zdHJ1Y3RvcihhZGFwdGVyOiBDb3VjaERCQWRhcHRlcikge1xuICAgIHN1cGVyKGFkYXB0ZXIpO1xuICB9XG5cbiAgZnJvbTxNIGV4dGVuZHMgTW9kZWw+KFxuICAgIHN0YXRlbWVudDogU3RhdGVtZW50PE1hbmdvUXVlcnk+LFxuICAgIHNlbGVjdG9yOiBGcm9tU2VsZWN0b3I8TT5cbiAgKTogRnJvbUNsYXVzZTxNYW5nb1F1ZXJ5LCBNPiB7XG4gICAgcmV0dXJuIG5ldyBDb3VjaERCRnJvbUNsYXVzZSh7IHN0YXRlbWVudDogc3RhdGVtZW50LCBzZWxlY3Rvcjogc2VsZWN0b3IgfSk7XG4gIH1cblxuICBncm91cEJ5KFxuICAgIHN0YXRlbWVudDogU3RhdGVtZW50PE1hbmdvUXVlcnk+LFxuICAgIHNlbGVjdG9yOiBHcm91cEJ5U2VsZWN0b3JcbiAgKTogR3JvdXBCeUNsYXVzZTxNYW5nb1F1ZXJ5PiB7XG4gICAgcmV0dXJuIG5ldyAoY2xhc3MgZXh0ZW5kcyBHcm91cEJ5Q2xhdXNlPE1hbmdvUXVlcnk+IHtcbiAgICAgIGNvbnN0cnVjdG9yKGNsYXVzZTogTW9kZWxBcmc8R3JvdXBCeUNsYXVzZTxNYW5nb1F1ZXJ5Pj4pIHtcbiAgICAgICAgc3VwZXIoY2xhdXNlKTtcbiAgICAgIH1cblxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgYnVpbGQocXVlcnk6IE1hbmdvUXVlcnkpOiBNYW5nb1F1ZXJ5IHtcbiAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXCJOb3QgaW1wbGVtZW50ZWRcIik7XG4gICAgICB9XG4gICAgfSkoe1xuICAgICAgc3RhdGVtZW50OiBzdGF0ZW1lbnQsXG4gICAgICBzZWxlY3Rvcjogc2VsZWN0b3IsXG4gICAgfSk7XG4gIH1cblxuICBpbnNlcnQ8TSBleHRlbmRzIE1vZGVsPigpOiBJbnNlcnRDbGF1c2U8TWFuZ29RdWVyeSwgTT4ge1xuICAgIHJldHVybiBuZXcgQ291Y2hEQkluc2VydENsYXVzZSh7XG4gICAgICBzdGF0ZW1lbnQ6IG5ldyBDb3VjaERCU3RhdGVtZW50KHRoaXMuYWRhcHRlciBhcyBDb3VjaERCQWRhcHRlciksXG4gICAgfSk7XG4gIH1cblxuICBsaW1pdChcbiAgICBzdGF0ZW1lbnQ6IFN0YXRlbWVudDxNYW5nb1F1ZXJ5PixcbiAgICBzZWxlY3RvcjogTGltaXRTZWxlY3RvclxuICApOiBMaW1pdENsYXVzZTxNYW5nb1F1ZXJ5PiB7XG4gICAgcmV0dXJuIG5ldyAoY2xhc3MgZXh0ZW5kcyBMaW1pdENsYXVzZTxNYW5nb1F1ZXJ5PiB7XG4gICAgICBjb25zdHJ1Y3RvcihjbGF1c2U6IE1vZGVsQXJnPExpbWl0Q2xhdXNlPE1hbmdvUXVlcnk+Pikge1xuICAgICAgICBzdXBlcihjbGF1c2UpO1xuICAgICAgfVxuXG4gICAgICBidWlsZChxdWVyeTogTWFuZ29RdWVyeSk6IE1hbmdvUXVlcnkge1xuICAgICAgICBxdWVyeS5saW1pdCA9IHRoaXMuc2VsZWN0b3IgYXMgbnVtYmVyO1xuICAgICAgICByZXR1cm4gcXVlcnk7XG4gICAgICB9XG4gICAgfSkoe1xuICAgICAgc3RhdGVtZW50OiBzdGF0ZW1lbnQsXG4gICAgICBzZWxlY3Rvcjogc2VsZWN0b3IsXG4gICAgfSk7XG4gIH1cblxuICBvZmZzZXQoXG4gICAgc3RhdGVtZW50OiBTdGF0ZW1lbnQ8TWFuZ29RdWVyeT4sXG4gICAgc2VsZWN0b3I6IE9mZnNldFNlbGVjdG9yXG4gICk6IE9mZnNldENsYXVzZTxNYW5nb1F1ZXJ5PiB7XG4gICAgcmV0dXJuIG5ldyAoY2xhc3MgZXh0ZW5kcyBPZmZzZXRDbGF1c2U8TWFuZ29RdWVyeT4ge1xuICAgICAgY29uc3RydWN0b3IoY2xhdXNlOiBNb2RlbEFyZzxPZmZzZXRDbGF1c2U8TWFuZ29RdWVyeT4+KSB7XG4gICAgICAgIHN1cGVyKGNsYXVzZSk7XG4gICAgICB9XG5cbiAgICAgIGJ1aWxkKHF1ZXJ5OiBNYW5nb1F1ZXJ5KTogTWFuZ29RdWVyeSB7XG4gICAgICAgIGNvbnN0IHNraXA6IG51bWJlciA9IHBhcnNlSW50KHRoaXMuc2VsZWN0b3IgYXMgdW5rbm93biBhcyBzdHJpbmcpO1xuICAgICAgICBpZiAoaXNOYU4oc2tpcCkpIHRocm93IG5ldyBRdWVyeUVycm9yKFwiRmFpbGVkIHRvIHBhcnNlIG9mZnNldFwiKTtcbiAgICAgICAgcXVlcnkuc2tpcCA9IHNraXA7XG4gICAgICAgIHJldHVybiBxdWVyeTtcbiAgICAgIH1cbiAgICB9KSh7XG4gICAgICBzdGF0ZW1lbnQ6IHN0YXRlbWVudCxcbiAgICAgIHNlbGVjdG9yOiBzZWxlY3RvcixcbiAgICB9KTtcbiAgfVxuXG4gIG9yZGVyQnkoXG4gICAgc3RhdGVtZW50OiBTdGF0ZW1lbnQ8TWFuZ29RdWVyeT4sXG4gICAgc2VsZWN0b3I6IE9yZGVyQnlTZWxlY3RvcltdXG4gICk6IE9yZGVyQnlDbGF1c2U8TWFuZ29RdWVyeT4ge1xuICAgIHJldHVybiBuZXcgKGNsYXNzIGV4dGVuZHMgT3JkZXJCeUNsYXVzZTxNYW5nb1F1ZXJ5PiB7XG4gICAgICBjb25zdHJ1Y3RvcihjbGF1c2U6IE1vZGVsQXJnPE9yZGVyQnlDbGF1c2U8TWFuZ29RdWVyeT4+KSB7XG4gICAgICAgIHN1cGVyKGNsYXVzZSk7XG4gICAgICB9XG5cbiAgICAgIGJ1aWxkKHF1ZXJ5OiBNYW5nb1F1ZXJ5KTogTWFuZ29RdWVyeSB7XG4gICAgICAgIHF1ZXJ5LnNvcnQgPSBxdWVyeS5zb3J0IHx8IFtdO1xuICAgICAgICBxdWVyeS5zZWxlY3RvciA9IHF1ZXJ5LnNlbGVjdG9yIHx8ICh7fSBhcyBNYW5nb1NlbGVjdG9yKTtcbiAgICAgICAgdGhpcy5zZWxlY3RvciEuZm9yRWFjaCgocykgPT4ge1xuICAgICAgICAgIGNvbnN0IFtzZWxlY3RvciwgdmFsdWVdID0gcztcbiAgICAgICAgICBjb25zdCByZWM6IGFueSA9IHt9O1xuICAgICAgICAgIHJlY1tzZWxlY3Rvcl0gPSB2YWx1ZTtcbiAgICAgICAgICAocXVlcnkuc29ydCBhcyBhbnlbXSkucHVzaChyZWMgYXMgYW55KTtcbiAgICAgICAgICBpZiAoIXF1ZXJ5LnNlbGVjdG9yW3NlbGVjdG9yXSkge1xuICAgICAgICAgICAgcXVlcnkuc2VsZWN0b3Jbc2VsZWN0b3JdID0ge30gYXMgTWFuZ29TZWxlY3RvcjtcbiAgICAgICAgICAgIChxdWVyeS5zZWxlY3RvcltzZWxlY3Rvcl0gYXMgTWFuZ29TZWxlY3RvcilbXG4gICAgICAgICAgICAgIENvdWNoREJPcGVyYXRvci5CSUdHRVJcbiAgICAgICAgICAgIF0gPSBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBxdWVyeS5maWVsZHMgPSBxdWVyeS5maWVsZHMgfHwgW107XG4gICAgICAgICAgLy8gcXVlcnkuZmllbGRzID0gWy4uLm5ldyBTZXQoWy4uLnF1ZXJ5LmZpZWxkcywgc2VsZWN0b3JdKS5rZXlzKCldXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcXVlcnk7XG4gICAgICB9XG4gICAgfSkoe1xuICAgICAgc3RhdGVtZW50OiBzdGF0ZW1lbnQsXG4gICAgICBzZWxlY3Rvcjogc2VsZWN0b3IsXG4gICAgfSk7XG4gIH1cblxuICBzZWxlY3Q8TSBleHRlbmRzIE1vZGVsPihcbiAgICBzZWxlY3RvcjogU2VsZWN0U2VsZWN0b3IgfCB1bmRlZmluZWRcbiAgKTogU2VsZWN0Q2xhdXNlPE1hbmdvUXVlcnksIE0+IHtcbiAgICByZXR1cm4gbmV3IENvdWNoREJTZWxlY3RDbGF1c2Uoe1xuICAgICAgc3RhdGVtZW50OiBuZXcgQ291Y2hEQlN0YXRlbWVudCh0aGlzLmFkYXB0ZXIpLFxuICAgICAgc2VsZWN0b3I6IHNlbGVjdG9yLFxuICAgIH0pO1xuICB9XG5cbiAgdmFsdWVzPE0gZXh0ZW5kcyBNb2RlbD4oXG4gICAgc3RhdGVtZW50OiBTdGF0ZW1lbnQ8TWFuZ29RdWVyeT4sXG4gICAgdmFsdWVzOiBNW11cbiAgKTogVmFsdWVzQ2xhdXNlPE1hbmdvUXVlcnksIE0+IHtcbiAgICByZXR1cm4gbmV3IENvdWNoREJWYWx1ZXNDbGF1c2U8TT4oe1xuICAgICAgc3RhdGVtZW50OiBzdGF0ZW1lbnQsXG4gICAgICB2YWx1ZXM6IHZhbHVlcyxcbiAgICB9KTtcbiAgfVxuXG4gIHdoZXJlKFxuICAgIHN0YXRlbWVudDogU3RhdGVtZW50PE1hbmdvUXVlcnk+LFxuICAgIGNvbmRpdGlvbjogQ29uZGl0aW9uXG4gICk6IFdoZXJlQ2xhdXNlPE1hbmdvUXVlcnk+IHtcbiAgICByZXR1cm4gbmV3IENvdWNoREJXaGVyZUNsYXVzZSh7XG4gICAgICBzdGF0ZW1lbnQ6IHN0YXRlbWVudCxcbiAgICAgIGNvbmRpdGlvbjogY29uZGl0aW9uLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -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
|
+
}
|