@decaf-ts/for-couchdb 0.4.3 → 0.4.4
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/dist/for-couchdb.cjs +1 -1
- package/dist/for-couchdb.cjs.map +1 -1
- package/dist/for-couchdb.js +1 -1
- package/dist/for-couchdb.js.map +1 -1
- package/lib/adapter.cjs +77 -37
- package/lib/adapter.d.ts +50 -22
- package/lib/adapter.js.map +1 -1
- package/lib/esm/adapter.d.ts +50 -22
- package/lib/esm/adapter.js +70 -30
- package/lib/esm/adapter.js.map +1 -1
- package/lib/esm/index.d.ts +2 -2
- package/lib/esm/index.js +2 -2
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/indexes/generator.js +4 -3
- package/lib/esm/indexes/generator.js.map +1 -1
- package/lib/esm/query/Paginator.d.ts +1 -1
- package/lib/esm/query/Paginator.js +4 -3
- package/lib/esm/query/Paginator.js.map +1 -1
- package/lib/esm/query/Statement.d.ts +6 -5
- package/lib/esm/query/Statement.js +8 -7
- package/lib/esm/query/Statement.js.map +1 -1
- package/lib/esm/repository.d.ts +39 -0
- package/lib/esm/repository.js +147 -0
- package/lib/esm/repository.js.map +1 -0
- package/lib/esm/sequences/Sequence.d.ts +19 -18
- package/lib/esm/sequences/Sequence.js +33 -28
- package/lib/esm/sequences/Sequence.js.map +1 -1
- package/lib/index.cjs +2 -2
- package/lib/index.d.ts +2 -2
- package/lib/index.js.map +1 -1
- package/lib/indexes/generator.cjs +3 -2
- package/lib/indexes/generator.js.map +1 -1
- package/lib/query/Paginator.cjs +4 -3
- package/lib/query/Paginator.d.ts +1 -1
- package/lib/query/Paginator.js.map +1 -1
- package/lib/query/Statement.cjs +7 -6
- package/lib/query/Statement.d.ts +6 -5
- package/lib/query/Statement.js.map +1 -1
- package/lib/repository.cjs +151 -0
- package/lib/repository.d.ts +39 -0
- package/lib/repository.js.map +1 -0
- package/lib/sequences/Sequence.cjs +31 -26
- package/lib/sequences/Sequence.d.ts +19 -18
- package/lib/sequences/Sequence.js.map +1 -1
- package/package.json +1 -2
- package/lib/esm/interfaces/CouchDBRepository.d.ts +0 -16
- package/lib/esm/interfaces/CouchDBRepository.js +0 -2
- package/lib/esm/interfaces/CouchDBRepository.js.map +0 -1
- package/lib/esm/interfaces/index.d.ts +0 -1
- package/lib/esm/interfaces/index.js +0 -2
- package/lib/esm/interfaces/index.js.map +0 -1
- package/lib/interfaces/CouchDBRepository.cjs +0 -3
- package/lib/interfaces/CouchDBRepository.d.ts +0 -16
- package/lib/interfaces/CouchDBRepository.js.map +0 -1
- package/lib/interfaces/index.cjs +0 -18
- package/lib/interfaces/index.d.ts +0 -1
- package/lib/interfaces/index.js.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Sequence as Seq } from "./../model/CouchDBSequence.js";
|
|
2
|
-
import { InternalError, NotFoundError } from "@decaf-ts/db-decorators";
|
|
3
|
-
import { Repository } from "@decaf-ts/core";
|
|
2
|
+
import { Context, InternalError, NotFoundError, OperationKeys, } from "@decaf-ts/db-decorators";
|
|
3
|
+
import { Repository, } from "@decaf-ts/core";
|
|
4
4
|
import { Sequence } from "@decaf-ts/core";
|
|
5
5
|
/**
|
|
6
6
|
* @summary Abstract implementation of a Sequence
|
|
@@ -13,17 +13,19 @@ import { Sequence } from "@decaf-ts/core";
|
|
|
13
13
|
*/
|
|
14
14
|
export class CouchDBSequence extends Sequence {
|
|
15
15
|
constructor(options, adapter) {
|
|
16
|
-
super(options);
|
|
16
|
+
super(options, adapter);
|
|
17
17
|
this.repo = Repository.forModel(Seq, adapter.alias);
|
|
18
18
|
}
|
|
19
19
|
/**
|
|
20
20
|
* @summary Retrieves the current value for the sequence
|
|
21
21
|
* @protected
|
|
22
22
|
*/
|
|
23
|
-
async current() {
|
|
23
|
+
async current(...args) {
|
|
24
|
+
const contextArgs = await Context.args(OperationKeys.READ, Seq, args, this.adapter);
|
|
25
|
+
const ctx = contextArgs.context;
|
|
24
26
|
const { name, startWith } = this.options;
|
|
25
27
|
try {
|
|
26
|
-
const sequence = await this.repo.read(name);
|
|
28
|
+
const sequence = await this.repo.read(name, ctx);
|
|
27
29
|
return this.parse(sequence.current);
|
|
28
30
|
}
|
|
29
31
|
catch (e) {
|
|
@@ -40,15 +42,6 @@ export class CouchDBSequence extends Sequence {
|
|
|
40
42
|
throw new InternalError(`Failed to retrieve current value for sequence ${name}: ${e}`);
|
|
41
43
|
}
|
|
42
44
|
}
|
|
43
|
-
/**
|
|
44
|
-
* @summary Parses the {@link Sequence} value
|
|
45
|
-
*
|
|
46
|
-
* @protected
|
|
47
|
-
* @param value
|
|
48
|
-
*/
|
|
49
|
-
parse(value) {
|
|
50
|
-
return Sequence.parseValue(this.options.type, value);
|
|
51
|
-
}
|
|
52
45
|
/**
|
|
53
46
|
* @summary increments the sequence
|
|
54
47
|
* @description Sequence specific implementation
|
|
@@ -57,7 +50,7 @@ export class CouchDBSequence extends Sequence {
|
|
|
57
50
|
* @param count
|
|
58
51
|
* @protected
|
|
59
52
|
*/
|
|
60
|
-
async increment(current, count) {
|
|
53
|
+
async increment(current, count, ctx) {
|
|
61
54
|
const { type, incrementBy, name } = this.options;
|
|
62
55
|
let next;
|
|
63
56
|
const toIncrementBy = count || incrementBy;
|
|
@@ -75,34 +68,46 @@ export class CouchDBSequence extends Sequence {
|
|
|
75
68
|
}
|
|
76
69
|
let seq;
|
|
77
70
|
try {
|
|
78
|
-
seq = await this.repo.update(new Seq({ id: name, current: next }));
|
|
71
|
+
seq = await this.repo.update(new Seq({ id: name, current: next }), ctx);
|
|
79
72
|
}
|
|
80
73
|
catch (e) {
|
|
81
74
|
if (!(e instanceof NotFoundError))
|
|
82
75
|
throw e;
|
|
83
|
-
seq = await this.repo.create(new Seq({ id: name, current: next }));
|
|
76
|
+
seq = await this.repo.create(new Seq({ id: name, current: next }), ctx);
|
|
84
77
|
}
|
|
85
78
|
return seq.current;
|
|
86
79
|
}
|
|
87
80
|
/**
|
|
88
|
-
* @
|
|
89
|
-
* @
|
|
90
|
-
*
|
|
91
|
-
*
|
|
81
|
+
* @description Gets the next value in the sequence
|
|
82
|
+
* @summary Retrieves the current value of the sequence and increments it by the
|
|
83
|
+
* configured increment amount. This is the main method used to get a new sequential value.
|
|
84
|
+
* @return A promise that resolves to the next value in the sequence
|
|
92
85
|
*/
|
|
93
|
-
async next() {
|
|
94
|
-
const
|
|
95
|
-
|
|
86
|
+
async next(...argz) {
|
|
87
|
+
const contextArgs = await Context.args(OperationKeys.UPDATE, Seq, argz, this.adapter);
|
|
88
|
+
const { context, args } = contextArgs;
|
|
89
|
+
const current = await this.current(...args);
|
|
90
|
+
return this.increment(current, undefined, context);
|
|
96
91
|
}
|
|
97
|
-
|
|
98
|
-
|
|
92
|
+
/**
|
|
93
|
+
* @description Generates a range of sequential values
|
|
94
|
+
* @summary Retrieves a specified number of sequential values from the sequence.
|
|
95
|
+
* This is useful when you need to allocate multiple IDs at once.
|
|
96
|
+
* The method increments the sequence by the total amount needed and returns all values in the range.
|
|
97
|
+
* @param {number} count - The number of sequential values to generate
|
|
98
|
+
* @return A promise that resolves to an array of sequential values
|
|
99
|
+
*/
|
|
100
|
+
async range(count, ...argz) {
|
|
101
|
+
const contextArgs = await Context.args(OperationKeys.UPDATE, Seq, argz, this.adapter);
|
|
102
|
+
const { context, args } = contextArgs;
|
|
103
|
+
const current = (await this.current(...args));
|
|
99
104
|
const incrementBy = this.parse(this.options.incrementBy);
|
|
100
|
-
const next = await this.increment(current, this.parse(count) * incrementBy);
|
|
105
|
+
const next = await this.increment(current, this.parse(count) * incrementBy, context);
|
|
101
106
|
const range = [];
|
|
102
107
|
for (let i = 1; i <= count; i++) {
|
|
103
108
|
range.push(current + incrementBy * this.parse(i));
|
|
104
109
|
}
|
|
105
|
-
if (range[range.length - 1] !== next)
|
|
110
|
+
if (range[range.length - 1] !== next && this.options.type !== "String")
|
|
106
111
|
throw new InternalError("Miscalculation of range");
|
|
107
112
|
return range;
|
|
108
113
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sequence.js","sourceRoot":"","sources":["../../../src/sequences/Sequence.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,GAAG,EAAE,sCAAiC;AAC3D,OAAO,
|
|
1
|
+
{"version":3,"file":"Sequence.js","sourceRoot":"","sources":["../../../src/sequences/Sequence.ts"],"names":[],"mappings":"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"}
|
package/lib/index.cjs
CHANGED
|
@@ -17,9 +17,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
17
17
|
exports.PACKAGE_NAME = exports.VERSION = void 0;
|
|
18
18
|
const decoration_1 = require("@decaf-ts/decoration");
|
|
19
19
|
__exportStar(require("./indexes/index.cjs"), exports);
|
|
20
|
-
__exportStar(require("./interfaces/index.cjs"), exports);
|
|
21
20
|
__exportStar(require("./model/index.cjs"), exports);
|
|
22
21
|
__exportStar(require("./sequences/index.cjs"), exports);
|
|
22
|
+
__exportStar(require("./repository.cjs"), exports);
|
|
23
23
|
__exportStar(require("./adapter.cjs"), exports);
|
|
24
24
|
__exportStar(require("./constants.cjs"), exports);
|
|
25
25
|
__exportStar(require("./errors.cjs"), exports);
|
|
@@ -36,7 +36,7 @@ __exportStar(require("./query/index.cjs"), exports);
|
|
|
36
36
|
* @summary The version string of the for-couchdb package
|
|
37
37
|
* @const VERSION
|
|
38
38
|
*/
|
|
39
|
-
exports.VERSION = "0.4.
|
|
39
|
+
exports.VERSION = "0.4.3";
|
|
40
40
|
/**
|
|
41
41
|
* @description Stores the current package name
|
|
42
42
|
* @summary The version string of the for-couchdb package
|
package/lib/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export * from "./indexes";
|
|
2
|
-
export * from "./interfaces";
|
|
3
2
|
export * from "./model";
|
|
4
3
|
export * from "./sequences";
|
|
4
|
+
export * from "./repository";
|
|
5
5
|
export * from "./adapter";
|
|
6
6
|
export * from "./constants";
|
|
7
7
|
export * from "./errors";
|
|
@@ -18,7 +18,7 @@ export * from "./query";
|
|
|
18
18
|
* @summary The version string of the for-couchdb package
|
|
19
19
|
* @const VERSION
|
|
20
20
|
*/
|
|
21
|
-
export declare const VERSION = "0.4.
|
|
21
|
+
export declare const VERSION = "0.4.3";
|
|
22
22
|
/**
|
|
23
23
|
* @description Stores the current package name
|
|
24
24
|
* @summary The version string of the for-couchdb package
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,qDAAgD;AAEhD,sDAA0B;AAC1B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,qDAAgD;AAEhD,sDAA0B;AAC1B,oDAAwB;AACxB,wDAA4B;AAC5B,mDAA6B;AAC7B,gDAA0B;AAC1B,kDAA4B;AAC5B,+CAAyB;AACzB,8CAAwB;AACxB,8CAAwB;AACxB,oDAAwB;AAExB;;;;GAIG;AAEH;;;;GAIG;AACU,QAAA,OAAO,GAAG,aAAa,CAAC;AAErC;;;;GAIG;AACU,QAAA,YAAY,GAAG,aAAa,CAAC;AAE1C,qBAAQ,CAAC,eAAe,CAAC,oBAAY,EAAE,eAAO,CAAC,CAAC"}
|
|
@@ -4,6 +4,7 @@ exports.generateIndexes = generateIndexes;
|
|
|
4
4
|
const core_1 = require("@decaf-ts/core");
|
|
5
5
|
const constants_1 = require("./../constants.cjs");
|
|
6
6
|
const db_decorators_1 = require("@decaf-ts/db-decorators");
|
|
7
|
+
const decorator_validation_1 = require("@decaf-ts/decorator-validation");
|
|
7
8
|
const constants_2 = require("./../query/constants.cjs");
|
|
8
9
|
/**
|
|
9
10
|
* @description Generates a name for a CouchDB index
|
|
@@ -82,12 +83,12 @@ function generateIndexes(models) {
|
|
|
82
83
|
type: "json",
|
|
83
84
|
};
|
|
84
85
|
models.forEach((m) => {
|
|
85
|
-
const ind =
|
|
86
|
+
const ind = decorator_validation_1.Model.indexes(m);
|
|
86
87
|
Object.entries(ind).forEach(([key, value]) => {
|
|
87
88
|
const k = Object.keys(value)[0];
|
|
88
89
|
// eslint-disable-next-line prefer-const
|
|
89
90
|
let { directions, compositions } = value[k];
|
|
90
|
-
const tableName =
|
|
91
|
+
const tableName = decorator_validation_1.Model.tableName(m);
|
|
91
92
|
compositions = compositions || [];
|
|
92
93
|
function generate(sort) {
|
|
93
94
|
const name = [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../src/indexes/generator.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../src/indexes/generator.ts"],"names":[],"mappings":"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"}
|
package/lib/query/Paginator.cjs
CHANGED
|
@@ -131,10 +131,11 @@ class CouchDBPaginator extends core_1.Paginator {
|
|
|
131
131
|
* end
|
|
132
132
|
*/
|
|
133
133
|
async page(page = 1) {
|
|
134
|
+
const { ctx } = this.adapter["logCtx"]([page], this.page);
|
|
134
135
|
const statement = Object.assign({}, this.statement);
|
|
135
136
|
if (!this._recordCount || !this._totalPages) {
|
|
136
137
|
this._totalPages = this._recordCount = 0;
|
|
137
|
-
const results = (await this.adapter.raw({ ...statement, limit: undefined })) || [];
|
|
138
|
+
const results = (await this.adapter.raw({ ...statement, limit: undefined }, true, ctx)) || [];
|
|
138
139
|
this._recordCount = results.length;
|
|
139
140
|
if (this._recordCount > 0) {
|
|
140
141
|
const size = statement?.limit || this.size;
|
|
@@ -147,7 +148,7 @@ class CouchDBPaginator extends core_1.Paginator {
|
|
|
147
148
|
throw new core_1.PagingError("No bookmark. Did you start in the first page?");
|
|
148
149
|
statement["bookmark"] = this.bookMark;
|
|
149
150
|
}
|
|
150
|
-
const rawResult = await this.adapter.raw(statement, false);
|
|
151
|
+
const rawResult = await this.adapter.raw(statement, false, ctx);
|
|
151
152
|
const { docs, bookmark, warning } = rawResult;
|
|
152
153
|
if (warning)
|
|
153
154
|
this.log.for(this.page).warn(warning);
|
|
@@ -161,7 +162,7 @@ class CouchDBPaginator extends core_1.Paginator {
|
|
|
161
162
|
//no fields means we need to revert to saving process
|
|
162
163
|
const originalId = d._id.split(constants_1.CouchDBKeys.SEPARATOR);
|
|
163
164
|
originalId.splice(0, 1); // remove the table name
|
|
164
|
-
return this.adapter.revert(d, this.clazz,
|
|
165
|
+
return this.adapter.revert(d, this.clazz, core_1.Sequence.parseValue(type, originalId.join(constants_1.CouchDBKeys.SEPARATOR)), undefined, ctx);
|
|
165
166
|
});
|
|
166
167
|
this.bookMark = bookmark;
|
|
167
168
|
this._currentPage = page;
|
package/lib/query/Paginator.d.ts
CHANGED
|
@@ -53,7 +53,7 @@ export declare class CouchDBPaginator<M extends Model, R> extends Paginator<M, R
|
|
|
53
53
|
* @param {number} size - The page size
|
|
54
54
|
* @param {Constructor<M>} clazz - The model constructor
|
|
55
55
|
*/
|
|
56
|
-
constructor(adapter: CouchDBAdapter<any, any, any
|
|
56
|
+
constructor(adapter: CouchDBAdapter<any, any, any>, query: MangoQuery, size: number, clazz: Constructor<M>);
|
|
57
57
|
/**
|
|
58
58
|
* @description Prepares a query for pagination
|
|
59
59
|
* @summary Modifies the raw query to include pagination parameters
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Paginator.js","sourceRoot":"","sources":["../../src/query/Paginator.ts"],"names":[],"mappings":";;;AAAA,yCAAkE;AAClE,2DAAgE;AAEhE,yEAAuD;AAEvD,kDAA2C;AAC3C,qDAA6D;AAE7D;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAa,gBAAqC,SAAQ,gBAIzD;IAOC;;;;;OAKG;IACH,IAAa,KAAK;QAChB,MAAM,IAAI,6BAAa,CAAC,kDAAkD,CAAC,CAAC;IAC9E,CAAC;IAED;;;;;OAKG;IACH,IAAa,KAAK;QAChB,MAAM,IAAI,6BAAa,CACrB,mDAAmD,CACpD,CAAC;IACJ,CAAC;IAED;;;;;;;OAOG;IACH,YACE,
|
|
1
|
+
{"version":3,"file":"Paginator.js","sourceRoot":"","sources":["../../src/query/Paginator.ts"],"names":[],"mappings":"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"}
|
package/lib/query/Statement.cjs
CHANGED
|
@@ -93,7 +93,7 @@ class CouchDBStatement extends core_1.Statement {
|
|
|
93
93
|
const log = this.log.for(this.build);
|
|
94
94
|
const selectors = {};
|
|
95
95
|
selectors[constants_1.CouchDBKeys.TABLE] = {};
|
|
96
|
-
selectors[constants_1.CouchDBKeys.TABLE] =
|
|
96
|
+
selectors[constants_1.CouchDBKeys.TABLE] = decorator_validation_1.Model.tableName(this.fromSelector);
|
|
97
97
|
const query = { selector: selectors };
|
|
98
98
|
if (this.selectSelector)
|
|
99
99
|
query.fields = this.selectSelector;
|
|
@@ -192,11 +192,11 @@ class CouchDBStatement extends core_1.Statement {
|
|
|
192
192
|
* @param {"Number" | "BigInt" | undefined} sequenceType - The type of the sequence
|
|
193
193
|
* @return {any} The processed record
|
|
194
194
|
*/
|
|
195
|
-
processRecord(r, pkAttr, sequenceType) {
|
|
195
|
+
processRecord(r, pkAttr, sequenceType, ctx) {
|
|
196
196
|
if (r[constants_1.CouchDBKeys.ID]) {
|
|
197
197
|
const [, ...keyArgs] = r[constants_1.CouchDBKeys.ID].split(constants_1.CouchDBKeys.SEPARATOR);
|
|
198
198
|
const id = keyArgs.join("_");
|
|
199
|
-
return this.adapter.revert(r, this.fromSelector,
|
|
199
|
+
return this.adapter.revert(r, this.fromSelector, core_1.Sequence.parseValue(sequenceType, id), undefined, ctx);
|
|
200
200
|
}
|
|
201
201
|
return r;
|
|
202
202
|
}
|
|
@@ -207,12 +207,13 @@ class CouchDBStatement extends core_1.Statement {
|
|
|
207
207
|
* @param {MangoQuery} rawInput - The raw Mango query to execute
|
|
208
208
|
* @return {Promise<R>} A promise that resolves to the query results
|
|
209
209
|
*/
|
|
210
|
-
async raw(rawInput) {
|
|
211
|
-
const
|
|
210
|
+
async raw(rawInput, ...args) {
|
|
211
|
+
const { ctx } = this.logCtx(args, this.raw);
|
|
212
|
+
const results = await this.adapter.raw(rawInput, true, ctx);
|
|
212
213
|
const pkAttr = decorator_validation_1.Model.pk(this.fromSelector);
|
|
213
214
|
const type = decoration_1.Metadata.get(this.fromSelector, decoration_1.Metadata.key(db_decorators_1.DBKeys.ID, pkAttr))?.type;
|
|
214
215
|
if (!this.selectSelector)
|
|
215
|
-
return results.map((r) => this.processRecord(r, pkAttr, type));
|
|
216
|
+
return results.map((r) => this.processRecord(r, pkAttr, type, ctx));
|
|
216
217
|
return results;
|
|
217
218
|
}
|
|
218
219
|
/**
|
package/lib/query/Statement.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { Condition, Paginator, Statement } from "@decaf-ts/core";
|
|
2
2
|
import { MangoQuery } from "../types";
|
|
3
3
|
import { Model } from "@decaf-ts/decorator-validation";
|
|
4
|
-
import {
|
|
4
|
+
import type { Context } from "@decaf-ts/db-decorators";
|
|
5
|
+
import { Adapter } from "@decaf-ts/core";
|
|
5
6
|
/**
|
|
6
7
|
* @description Statement builder for CouchDB Mango queries
|
|
7
8
|
* @summary Provides a fluent interface for building CouchDB Mango queries with type safety
|
|
@@ -22,8 +23,8 @@ import { CouchDBAdapter } from "../adapter";
|
|
|
22
23
|
* .limit(10)
|
|
23
24
|
* .execute();
|
|
24
25
|
*/
|
|
25
|
-
export declare class CouchDBStatement<M extends Model, R> extends Statement<
|
|
26
|
-
constructor(adapter:
|
|
26
|
+
export declare class CouchDBStatement<M extends Model, A extends Adapter<any, any, MangoQuery, any>, R> extends Statement<M, A, R, MangoQuery> {
|
|
27
|
+
constructor(adapter: A);
|
|
27
28
|
/**
|
|
28
29
|
* @description Builds a CouchDB Mango query from the statement
|
|
29
30
|
* @summary Converts the statement's conditions, selectors, and options into a CouchDB Mango query
|
|
@@ -98,7 +99,7 @@ export declare class CouchDBStatement<M extends Model, R> extends Statement<Mang
|
|
|
98
99
|
* @param {"Number" | "BigInt" | undefined} sequenceType - The type of the sequence
|
|
99
100
|
* @return {any} The processed record
|
|
100
101
|
*/
|
|
101
|
-
protected processRecord(r: any, pkAttr: keyof M, sequenceType: "Number" | "BigInt" | undefined): any;
|
|
102
|
+
protected processRecord(r: any, pkAttr: keyof M, sequenceType: "Number" | "BigInt" | undefined, ctx: Context): any;
|
|
102
103
|
/**
|
|
103
104
|
* @description Executes a raw Mango query
|
|
104
105
|
* @summary Sends a raw Mango query to CouchDB and processes the results
|
|
@@ -106,7 +107,7 @@ export declare class CouchDBStatement<M extends Model, R> extends Statement<Mang
|
|
|
106
107
|
* @param {MangoQuery} rawInput - The raw Mango query to execute
|
|
107
108
|
* @return {Promise<R>} A promise that resolves to the query results
|
|
108
109
|
*/
|
|
109
|
-
raw<R>(rawInput: MangoQuery): Promise<R>;
|
|
110
|
+
raw<R>(rawInput: MangoQuery, ...args: any[]): Promise<R>;
|
|
110
111
|
/**
|
|
111
112
|
* @description Parses a condition into a CouchDB Mango query selector
|
|
112
113
|
* @summary Converts a Condition object into a CouchDB Mango query selector structure
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Statement.js","sourceRoot":"","sources":["../../src/query/Statement.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"Statement.js","sourceRoot":"","sources":["../../src/query/Statement.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CouchDBRepository = void 0;
|
|
4
|
+
const core_1 = require("@decaf-ts/core");
|
|
5
|
+
const decorator_validation_1 = require("@decaf-ts/decorator-validation");
|
|
6
|
+
const adapter_1 = require("./adapter.cjs");
|
|
7
|
+
const db_decorators_1 = require("@decaf-ts/db-decorators");
|
|
8
|
+
class CouchDBRepository extends core_1.Repository {
|
|
9
|
+
constructor(adapter, model) {
|
|
10
|
+
super(adapter, model);
|
|
11
|
+
}
|
|
12
|
+
assignMetadata(target, source) {
|
|
13
|
+
const apply = (instance, carrier) => {
|
|
14
|
+
const metadataSource = carrier ?? instance;
|
|
15
|
+
const metadata = adapter_1.CouchDBAdapter.getMetadata(metadataSource);
|
|
16
|
+
if (metadata)
|
|
17
|
+
adapter_1.CouchDBAdapter.setMetadata(instance, metadata);
|
|
18
|
+
return instance;
|
|
19
|
+
};
|
|
20
|
+
if (Array.isArray(target)) {
|
|
21
|
+
return target.map((model, index) => {
|
|
22
|
+
const carrier = Array.isArray(source) ? source[index] : source;
|
|
23
|
+
return apply(model, carrier);
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
const carrier = Array.isArray(source) ? source?.[0] : source;
|
|
27
|
+
return apply(target, carrier);
|
|
28
|
+
}
|
|
29
|
+
async create(model, ...args) {
|
|
30
|
+
const result = await super.create(model, ...args);
|
|
31
|
+
this.assignMetadata(result);
|
|
32
|
+
this.assignMetadata(model, result);
|
|
33
|
+
return result;
|
|
34
|
+
}
|
|
35
|
+
async createAll(models, ...args) {
|
|
36
|
+
const results = await super.createAll(models, ...args);
|
|
37
|
+
this.assignMetadata(results);
|
|
38
|
+
this.assignMetadata(models, results);
|
|
39
|
+
return results;
|
|
40
|
+
}
|
|
41
|
+
async read(id, ...args) {
|
|
42
|
+
const result = await super.read(id, ...args);
|
|
43
|
+
return this.assignMetadata(result);
|
|
44
|
+
}
|
|
45
|
+
async readAll(ids, ...args) {
|
|
46
|
+
const results = await super.readAll(ids, ...args);
|
|
47
|
+
return this.assignMetadata(results);
|
|
48
|
+
}
|
|
49
|
+
async update(model, ...args) {
|
|
50
|
+
const result = await super.update(model, ...args);
|
|
51
|
+
this.assignMetadata(result);
|
|
52
|
+
this.assignMetadata(model, result);
|
|
53
|
+
return result;
|
|
54
|
+
}
|
|
55
|
+
async updateAll(models, ...args) {
|
|
56
|
+
const results = await super.updateAll(models, ...args);
|
|
57
|
+
this.assignMetadata(results);
|
|
58
|
+
this.assignMetadata(models, results);
|
|
59
|
+
return results;
|
|
60
|
+
}
|
|
61
|
+
async delete(id, ...args) {
|
|
62
|
+
const result = await super.delete(id, ...args);
|
|
63
|
+
return this.assignMetadata(result);
|
|
64
|
+
}
|
|
65
|
+
async deleteAll(ids, ...args) {
|
|
66
|
+
const results = await super.deleteAll(ids, ...args);
|
|
67
|
+
return this.assignMetadata(results);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* @description Prepares a model for update.
|
|
71
|
+
* @summary Validates the model and prepares it for update in the database.
|
|
72
|
+
* @param {M} model - The model to update.
|
|
73
|
+
* @param {...any[]} args - Additional arguments.
|
|
74
|
+
* @return The prepared model and context arguments.
|
|
75
|
+
* @throws {InternalError} If the model has no primary key value.
|
|
76
|
+
* @throws {ValidationError} If the model fails validation.
|
|
77
|
+
*/
|
|
78
|
+
async updatePrefix(model, ...args) {
|
|
79
|
+
const contextArgs = await db_decorators_1.Context.args(db_decorators_1.OperationKeys.UPDATE, this.class, args, this.adapter, this._overrides || {});
|
|
80
|
+
const shouldRunHandlers = contextArgs.context.get("ignoreHandlers") !== false;
|
|
81
|
+
const shouldValidate = !contextArgs.context.get("ignoreValidation");
|
|
82
|
+
const pk = model[this.pk];
|
|
83
|
+
if (!pk)
|
|
84
|
+
throw new db_decorators_1.InternalError(`No value for the Id is defined under the property ${this.pk}`);
|
|
85
|
+
const oldModel = await this.read(pk, ...contextArgs.args);
|
|
86
|
+
model = decorator_validation_1.Model.merge(oldModel, model, this.class);
|
|
87
|
+
if (shouldRunHandlers)
|
|
88
|
+
await (0, db_decorators_1.enforceDBDecorators)(this, contextArgs.context, model, db_decorators_1.OperationKeys.UPDATE, db_decorators_1.OperationKeys.ON, oldModel);
|
|
89
|
+
if (shouldValidate) {
|
|
90
|
+
const errors = await Promise.resolve(model.hasErrors(oldModel, ...decorator_validation_1.Model.relations(this.class), ...(contextArgs.context.get("ignoredValidationProperties") || [])));
|
|
91
|
+
if (errors)
|
|
92
|
+
throw new db_decorators_1.ValidationError(errors.toString());
|
|
93
|
+
}
|
|
94
|
+
const oldMetadata = adapter_1.CouchDBAdapter.getMetadata(oldModel);
|
|
95
|
+
if (oldMetadata)
|
|
96
|
+
adapter_1.CouchDBAdapter.setMetadata(model, oldMetadata);
|
|
97
|
+
return [model, ...contextArgs.args];
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* @description Prepares multiple models for update.
|
|
101
|
+
* @summary Validates multiple models and prepares them for update in the database.
|
|
102
|
+
* @param {M[]} models - The models to update.
|
|
103
|
+
* @param {...any[]} args - Additional arguments.
|
|
104
|
+
* @return {Promise<any[]>} The prepared models and context arguments.
|
|
105
|
+
* @throws {InternalError} If any model has no primary key value.
|
|
106
|
+
* @throws {ValidationError} If any model fails validation.
|
|
107
|
+
*/
|
|
108
|
+
async updateAllPrefix(models, ...args) {
|
|
109
|
+
const contextArgs = await db_decorators_1.Context.args(db_decorators_1.OperationKeys.UPDATE, this.class, args, this.adapter, this._overrides || {});
|
|
110
|
+
const shouldRunHandlers = contextArgs.context.get("ignoreHandlers") !== false;
|
|
111
|
+
const shouldValidate = !contextArgs.context.get("ignoreValidation");
|
|
112
|
+
const ids = models.map((m) => {
|
|
113
|
+
const id = m[this.pk];
|
|
114
|
+
if (!id)
|
|
115
|
+
throw new db_decorators_1.InternalError("missing id on update operation");
|
|
116
|
+
return id;
|
|
117
|
+
});
|
|
118
|
+
const oldModels = await this.readAll(ids, ...contextArgs.args);
|
|
119
|
+
models = models.map((m, i) => {
|
|
120
|
+
m = decorator_validation_1.Model.merge(oldModels[i], m, this.class);
|
|
121
|
+
const oldMetadata = adapter_1.CouchDBAdapter.getMetadata(oldModels[i]);
|
|
122
|
+
if (oldMetadata)
|
|
123
|
+
adapter_1.CouchDBAdapter.setMetadata(m, oldMetadata);
|
|
124
|
+
return m;
|
|
125
|
+
});
|
|
126
|
+
if (shouldRunHandlers)
|
|
127
|
+
await Promise.all(models.map((m, i) => (0, db_decorators_1.enforceDBDecorators)(this, contextArgs.context, m, db_decorators_1.OperationKeys.UPDATE, db_decorators_1.OperationKeys.ON, oldModels[i])));
|
|
128
|
+
if (shouldValidate) {
|
|
129
|
+
const ignoredProps = contextArgs.context.get("ignoredValidationProperties") || [];
|
|
130
|
+
const errors = await Promise.all(models.map((m, i) => Promise.resolve(m.hasErrors(oldModels[i], m, ...ignoredProps))));
|
|
131
|
+
const errorMessages = errors.reduce((accum, e, i) => {
|
|
132
|
+
if (e)
|
|
133
|
+
accum =
|
|
134
|
+
typeof accum === "string"
|
|
135
|
+
? accum + `\n - ${i}: ${e.toString()}`
|
|
136
|
+
: ` - ${i}: ${e.toString()}`;
|
|
137
|
+
return accum;
|
|
138
|
+
}, undefined);
|
|
139
|
+
if (errorMessages)
|
|
140
|
+
throw new db_decorators_1.ValidationError(errorMessages);
|
|
141
|
+
}
|
|
142
|
+
models.forEach((m, i) => {
|
|
143
|
+
const oldMetadata = adapter_1.CouchDBAdapter.getMetadata(oldModels[i]);
|
|
144
|
+
if (oldMetadata)
|
|
145
|
+
adapter_1.CouchDBAdapter.setMetadata(m, oldMetadata);
|
|
146
|
+
});
|
|
147
|
+
return [models, ...contextArgs.args];
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
exports.CouchDBRepository = CouchDBRepository;
|
|
151
|
+
//# sourceMappingURL=repository.js.map
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { MaybeContextualArg, Repository } from "@decaf-ts/core";
|
|
2
|
+
import { Model } from "@decaf-ts/decorator-validation";
|
|
3
|
+
import { Constructor } from "@decaf-ts/decoration";
|
|
4
|
+
import { CouchDBAdapter } from "./adapter";
|
|
5
|
+
import { ContextOf } from "@decaf-ts/core";
|
|
6
|
+
import type { PrimaryKeyType } from "@decaf-ts/db-decorators";
|
|
7
|
+
export declare class CouchDBRepository<M extends Model, A extends CouchDBAdapter<any, any, any>> extends Repository<M, A> {
|
|
8
|
+
constructor(adapter: A, model: Constructor<M>);
|
|
9
|
+
protected assignMetadata(model: M, source?: M): M;
|
|
10
|
+
protected assignMetadata(models: M[], source?: M[]): M[];
|
|
11
|
+
create(model: M, ...args: MaybeContextualArg<ContextOf<A>>): Promise<M>;
|
|
12
|
+
createAll(models: M[], ...args: MaybeContextualArg<ContextOf<A>>): Promise<M[]>;
|
|
13
|
+
read(id: PrimaryKeyType, ...args: MaybeContextualArg<ContextOf<A>>): Promise<M>;
|
|
14
|
+
readAll(ids: PrimaryKeyType[], ...args: MaybeContextualArg<ContextOf<A>>): Promise<M[]>;
|
|
15
|
+
update(model: M, ...args: MaybeContextualArg<ContextOf<A>>): Promise<M>;
|
|
16
|
+
updateAll(models: M[], ...args: MaybeContextualArg<ContextOf<A>>): Promise<M[]>;
|
|
17
|
+
delete(id: PrimaryKeyType, ...args: MaybeContextualArg<ContextOf<A>>): Promise<M>;
|
|
18
|
+
deleteAll(ids: PrimaryKeyType[], ...args: MaybeContextualArg<ContextOf<A>>): Promise<M[]>;
|
|
19
|
+
/**
|
|
20
|
+
* @description Prepares a model for update.
|
|
21
|
+
* @summary Validates the model and prepares it for update in the database.
|
|
22
|
+
* @param {M} model - The model to update.
|
|
23
|
+
* @param {...any[]} args - Additional arguments.
|
|
24
|
+
* @return The prepared model and context arguments.
|
|
25
|
+
* @throws {InternalError} If the model has no primary key value.
|
|
26
|
+
* @throws {ValidationError} If the model fails validation.
|
|
27
|
+
*/
|
|
28
|
+
protected updatePrefix(model: M, ...args: MaybeContextualArg<ContextOf<A>>): Promise<[M, ...args: any[], ContextOf<A>]>;
|
|
29
|
+
/**
|
|
30
|
+
* @description Prepares multiple models for update.
|
|
31
|
+
* @summary Validates multiple models and prepares them for update in the database.
|
|
32
|
+
* @param {M[]} models - The models to update.
|
|
33
|
+
* @param {...any[]} args - Additional arguments.
|
|
34
|
+
* @return {Promise<any[]>} The prepared models and context arguments.
|
|
35
|
+
* @throws {InternalError} If any model has no primary key value.
|
|
36
|
+
* @throws {ValidationError} If any model fails validation.
|
|
37
|
+
*/
|
|
38
|
+
protected updateAllPrefix(models: M[], ...args: MaybeContextualArg<ContextOf<A>>): Promise<[M[], ...args: any[], ContextOf<A>]>;
|
|
39
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repository.js","sourceRoot":"","sources":["../src/repository.ts"],"names":[],"mappings":"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"}
|