@decaf-ts/for-fabric 0.1.74 → 0.1.76
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-fabric.cjs +1 -1
- package/dist/for-fabric.cjs.map +1 -1
- package/dist/for-fabric.js +1 -1
- package/dist/for-fabric.js.map +1 -1
- package/lib/cli-module.cjs +43 -13
- package/lib/cli-module.js.map +1 -1
- package/lib/cli-utils.cjs +10 -4
- package/lib/cli-utils.d.ts +2 -2
- package/lib/cli-utils.js.map +1 -1
- package/lib/client/FabricClientAdapter.cjs +36 -1
- package/lib/client/FabricClientAdapter.d.ts +12 -1
- package/lib/client/FabricClientAdapter.js.map +1 -1
- package/lib/client/FabricClientRepository.cjs +36 -0
- package/lib/client/FabricClientRepository.d.ts +7 -0
- package/lib/client/FabricClientRepository.js.map +1 -1
- package/lib/client/FabricClientStatement.cjs +321 -18
- package/lib/client/FabricClientStatement.d.ts +52 -1
- package/lib/client/FabricClientStatement.js.map +1 -1
- package/lib/client/collections/generation.cjs +7 -0
- package/lib/client/collections/generation.d.ts +2 -0
- package/lib/client/collections/generation.js.map +1 -1
- package/lib/client/fabric-fs.d.ts +1 -1
- package/lib/client/indexes/generation.cjs +37 -79
- package/lib/client/indexes/generation.d.ts +5 -12
- package/lib/client/indexes/generation.js.map +1 -1
- package/lib/client/utils.d.ts +1 -1
- package/lib/contract/Product.cjs +1 -1
- package/lib/contract/Product.js.map +1 -1
- package/lib/contract/SegregatedPrivateDocumentContract.cjs +30 -0
- package/lib/contract/SegregatedPrivateDocumentContract.d.ts +5 -0
- package/lib/contract/SegregatedPrivateDocumentContract.js.map +1 -0
- package/lib/contract/SegregatedSharedDocumentContract.cjs +30 -0
- package/lib/contract/SegregatedSharedDocumentContract.d.ts +5 -0
- package/lib/contract/SegregatedSharedDocumentContract.js.map +1 -0
- package/lib/contract/User.cjs +1 -1
- package/lib/contract/User.js.map +1 -1
- package/lib/contract/index.cjs +4 -0
- package/lib/contract/index.js.map +1 -1
- package/lib/contract/models/Market.cjs +1 -1
- package/lib/contract/models/Market.js.map +1 -1
- package/lib/contract/models/OtherProductShared.cjs +2 -2
- package/lib/contract/models/OtherProductShared.js.map +1 -1
- package/lib/contract/models/SegregatedDocument.cjs +94 -0
- package/lib/contract/models/SegregatedDocument.d.ts +18 -0
- package/lib/contract/models/SegregatedDocument.js.map +1 -0
- package/lib/contracts/ContractAdapter.cjs +177 -25
- package/lib/contracts/ContractAdapter.d.ts +8 -1
- package/lib/contracts/ContractAdapter.js.map +1 -1
- package/lib/contracts/ContractContext.cjs +29 -0
- package/lib/contracts/ContractContext.d.ts +16 -0
- package/lib/contracts/ContractContext.js.map +1 -1
- package/lib/contracts/FabricContractSequence.cjs +44 -0
- package/lib/contracts/FabricContractSequence.d.ts +10 -0
- package/lib/contracts/FabricContractSequence.js.map +1 -1
- package/lib/contracts/FabricContractStatement.cjs +1 -86
- package/lib/contracts/FabricContractStatement.d.ts +2 -4
- package/lib/contracts/FabricContractStatement.js.map +1 -1
- package/lib/contracts/crud/crud-contract.cjs +35 -0
- package/lib/contracts/crud/crud-contract.d.ts +7 -0
- package/lib/contracts/crud/crud-contract.js.map +1 -1
- package/lib/contracts/crud/serialized-crud-contract.cjs +63 -0
- package/lib/contracts/crud/serialized-crud-contract.d.ts +7 -0
- package/lib/contracts/crud/serialized-crud-contract.js.map +1 -1
- package/lib/contracts/types.d.ts +2 -1
- package/lib/esm/cli-module.js +45 -15
- package/lib/esm/cli-module.js.map +1 -1
- package/lib/esm/cli-utils.d.ts +2 -2
- package/lib/esm/cli-utils.js +10 -4
- package/lib/esm/cli-utils.js.map +1 -1
- package/lib/esm/client/FabricClientAdapter.d.ts +12 -1
- package/lib/esm/client/FabricClientAdapter.js +36 -1
- package/lib/esm/client/FabricClientAdapter.js.map +1 -1
- package/lib/esm/client/FabricClientRepository.d.ts +7 -0
- package/lib/esm/client/FabricClientRepository.js +36 -0
- package/lib/esm/client/FabricClientRepository.js.map +1 -1
- package/lib/esm/client/FabricClientStatement.d.ts +52 -1
- package/lib/esm/client/FabricClientStatement.js +323 -20
- package/lib/esm/client/FabricClientStatement.js.map +1 -1
- package/lib/esm/client/collections/generation.d.ts +2 -0
- package/lib/esm/client/collections/generation.js +6 -0
- package/lib/esm/client/collections/generation.js.map +1 -1
- package/lib/esm/client/fabric-fs.d.ts +1 -1
- package/lib/esm/client/indexes/generation.d.ts +5 -12
- package/lib/esm/client/indexes/generation.js +36 -80
- package/lib/esm/client/indexes/generation.js.map +1 -1
- package/lib/esm/client/utils.d.ts +1 -1
- package/lib/esm/contract/Product.js +1 -1
- package/lib/esm/contract/Product.js.map +1 -1
- package/lib/esm/contract/SegregatedPrivateDocumentContract.d.ts +5 -0
- package/lib/esm/contract/SegregatedPrivateDocumentContract.js +27 -0
- package/lib/esm/contract/SegregatedPrivateDocumentContract.js.map +1 -0
- package/lib/esm/contract/SegregatedSharedDocumentContract.d.ts +5 -0
- package/lib/esm/contract/SegregatedSharedDocumentContract.js +27 -0
- package/lib/esm/contract/SegregatedSharedDocumentContract.js.map +1 -0
- package/lib/esm/contract/User.js +1 -1
- package/lib/esm/contract/User.js.map +1 -1
- package/lib/esm/contract/index.js +4 -0
- package/lib/esm/contract/index.js.map +1 -1
- package/lib/esm/contract/models/Market.js +1 -1
- package/lib/esm/contract/models/Market.js.map +1 -1
- package/lib/esm/contract/models/OtherProductShared.js +4 -4
- package/lib/esm/contract/models/OtherProductShared.js.map +1 -1
- package/lib/esm/contract/models/SegregatedDocument.d.ts +18 -0
- package/lib/esm/contract/models/SegregatedDocument.js +91 -0
- package/lib/esm/contract/models/SegregatedDocument.js.map +1 -0
- package/lib/esm/contracts/ContractAdapter.d.ts +8 -1
- package/lib/esm/contracts/ContractAdapter.js +178 -26
- package/lib/esm/contracts/ContractAdapter.js.map +1 -1
- package/lib/esm/contracts/ContractContext.d.ts +16 -0
- package/lib/esm/contracts/ContractContext.js +29 -0
- package/lib/esm/contracts/ContractContext.js.map +1 -1
- package/lib/esm/contracts/FabricContractSequence.d.ts +10 -0
- package/lib/esm/contracts/FabricContractSequence.js +44 -0
- package/lib/esm/contracts/FabricContractSequence.js.map +1 -1
- package/lib/esm/contracts/FabricContractStatement.d.ts +2 -4
- package/lib/esm/contracts/FabricContractStatement.js +1 -86
- package/lib/esm/contracts/FabricContractStatement.js.map +1 -1
- package/lib/esm/contracts/crud/crud-contract.d.ts +7 -0
- package/lib/esm/contracts/crud/crud-contract.js +35 -0
- package/lib/esm/contracts/crud/crud-contract.js.map +1 -1
- package/lib/esm/contracts/crud/serialized-crud-contract.d.ts +7 -0
- package/lib/esm/contracts/crud/serialized-crud-contract.js +63 -0
- package/lib/esm/contracts/crud/serialized-crud-contract.js.map +1 -1
- package/lib/esm/contracts/types.d.ts +2 -1
- package/lib/esm/shared/decorators.d.ts +23 -4
- package/lib/esm/shared/decorators.js +147 -53
- package/lib/esm/shared/decorators.js.map +1 -1
- package/lib/esm/shared/overrides/overrides.js +20 -13
- package/lib/esm/shared/overrides/overrides.js.map +1 -1
- package/lib/esm/shared/types.d.ts +2 -0
- package/lib/esm/version.d.ts +1 -1
- package/lib/esm/version.js +1 -1
- package/lib/shared/decorators.cjs +149 -53
- package/lib/shared/decorators.d.ts +23 -4
- package/lib/shared/decorators.js.map +1 -1
- package/lib/shared/overrides/overrides.cjs +20 -13
- package/lib/shared/overrides/overrides.js.map +1 -1
- package/lib/shared/types.d.ts +2 -0
- package/lib/version.cjs +1 -1
- package/lib/version.d.ts +1 -1
- package/package.json +3 -5
|
@@ -2,8 +2,11 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.FabricClientStatement = void 0;
|
|
4
4
|
const core_1 = require("@decaf-ts/core");
|
|
5
|
+
const decorator_validation_1 = require("@decaf-ts/decorator-validation");
|
|
6
|
+
const for_couchdb_1 = require("@decaf-ts/for-couchdb");
|
|
5
7
|
const logging_1 = require("@decaf-ts/logging");
|
|
6
8
|
const db_decorators_1 = require("@decaf-ts/db-decorators");
|
|
9
|
+
const decoration_1 = require("@decaf-ts/decoration");
|
|
7
10
|
class FabricClientStatement extends core_1.Statement {
|
|
8
11
|
constructor(adapter, overrides) {
|
|
9
12
|
super(adapter, overrides);
|
|
@@ -63,30 +66,330 @@ class FabricClientStatement extends core_1.Statement {
|
|
|
63
66
|
}
|
|
64
67
|
if (this.selectSelector)
|
|
65
68
|
method.push(core_1.QueryClause.SELECT, this.selectSelector.join(` ${core_1.QueryClause.AND.toLowerCase()} `));
|
|
66
|
-
if (this.
|
|
67
|
-
method.push(core_1.QueryClause.ORDER_BY, this.
|
|
68
|
-
args.push(this.
|
|
69
|
-
}
|
|
70
|
-
// if (this.groupBySelector)
|
|
71
|
-
// method.push(QueryClause.GROUP_BY, this.groupBySelector as string);
|
|
72
|
-
// if (this.limitSelector) params.limit = this.limitSelector;
|
|
73
|
-
// if (this.offsetSelector) {
|
|
74
|
-
// params.skip = this.offsetSelector;
|
|
75
|
-
// }
|
|
69
|
+
if (this.orderBySelectors?.length) {
|
|
70
|
+
method.push(core_1.QueryClause.ORDER_BY, this.orderBySelectors[0][0]);
|
|
71
|
+
args.push(this.orderBySelectors[0][1]);
|
|
72
|
+
}
|
|
76
73
|
prepared.method = (0, logging_1.toCamelCase)(method.join(" "));
|
|
77
74
|
prepared.params = params;
|
|
78
75
|
this.prepared = prepared;
|
|
79
76
|
return this;
|
|
80
77
|
}
|
|
78
|
+
/**
|
|
79
|
+
* @description Processes a record from CouchDB/Fabric
|
|
80
|
+
* @summary Extracts the ID from a CouchDB document and reverts it to a model instance
|
|
81
|
+
*/
|
|
82
|
+
processRecord(r, pkAttr, sequenceType, ctx) {
|
|
83
|
+
if (r[for_couchdb_1.CouchDBKeys.ID]) {
|
|
84
|
+
const [, ...keyArgs] = r[for_couchdb_1.CouchDBKeys.ID].split(for_couchdb_1.CouchDBKeys.SEPARATOR);
|
|
85
|
+
const id = keyArgs.join("_");
|
|
86
|
+
return this.adapter.revert(r, this.fromSelector, core_1.Sequence.parseValue(sequenceType, id), undefined, ctx);
|
|
87
|
+
}
|
|
88
|
+
return r;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* @description Executes a raw Mango query
|
|
92
|
+
* @summary Sends a raw Mango query to Fabric and processes the results
|
|
93
|
+
*/
|
|
94
|
+
async raw(rawInput, ...args) {
|
|
95
|
+
const { ctx } = this.logCtx(args, this.raw);
|
|
96
|
+
const aggregator = rawInput?.aggregateInfo;
|
|
97
|
+
if (rawInput?.aggregate && aggregator) {
|
|
98
|
+
return this.executeAggregate(aggregator, ctx);
|
|
99
|
+
}
|
|
100
|
+
const results = await this.adapter.raw(rawInput, true, this.fromSelector, ctx);
|
|
101
|
+
const pkAttr = decorator_validation_1.Model.pk(this.fromSelector);
|
|
102
|
+
const type = decoration_1.Metadata.get(this.fromSelector, decoration_1.Metadata.key(db_decorators_1.DBKeys.ID, pkAttr))?.type;
|
|
103
|
+
if (!this.selectSelector)
|
|
104
|
+
return results.map((r) => this.processRecord(r, pkAttr, type, ctx));
|
|
105
|
+
return results;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* @description Builds a CouchDB Mango query from the statement
|
|
109
|
+
* @summary Converts the statement's conditions, selectors, and options into a CouchDB Mango query
|
|
110
|
+
*/
|
|
81
111
|
build() {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
112
|
+
const log = this.log.for(this.build);
|
|
113
|
+
const aggregateQuery = this.buildAggregateQuery();
|
|
114
|
+
if (aggregateQuery)
|
|
115
|
+
return aggregateQuery;
|
|
116
|
+
const selectors = {};
|
|
117
|
+
selectors[for_couchdb_1.CouchDBKeys.TABLE] = {};
|
|
118
|
+
selectors[for_couchdb_1.CouchDBKeys.TABLE] = decorator_validation_1.Model.tableName(this.fromSelector);
|
|
119
|
+
const query = { selector: selectors };
|
|
120
|
+
if (this.selectSelector)
|
|
121
|
+
query.fields = this.selectSelector;
|
|
122
|
+
if (this.whereCondition) {
|
|
123
|
+
const condition = this.parseCondition(core_1.Condition.and(this.whereCondition, core_1.Condition.attribute(for_couchdb_1.CouchDBKeys.TABLE).eq(query.selector[for_couchdb_1.CouchDBKeys.TABLE]))).selector;
|
|
124
|
+
const selectorKeys = Object.keys(condition);
|
|
125
|
+
if (selectorKeys.length === 1 &&
|
|
126
|
+
Object.values(for_couchdb_1.CouchDBGroupOperator).indexOf(selectorKeys[0]) !== -1)
|
|
127
|
+
switch (selectorKeys[0]) {
|
|
128
|
+
case for_couchdb_1.CouchDBGroupOperator.AND:
|
|
129
|
+
condition[for_couchdb_1.CouchDBGroupOperator.AND] = [
|
|
130
|
+
...Object.values(condition[for_couchdb_1.CouchDBGroupOperator.AND]).reduce((accum, val) => {
|
|
131
|
+
const keys = Object.keys(val);
|
|
132
|
+
if (keys.length !== 1)
|
|
133
|
+
throw new Error("Too many keys in query selector. should be one");
|
|
134
|
+
const k = keys[0];
|
|
135
|
+
if (k === for_couchdb_1.CouchDBGroupOperator.AND)
|
|
136
|
+
accum.push(...val[k]);
|
|
137
|
+
else
|
|
138
|
+
accum.push(val);
|
|
139
|
+
return accum;
|
|
140
|
+
}, []),
|
|
141
|
+
];
|
|
142
|
+
query.selector = condition;
|
|
143
|
+
break;
|
|
144
|
+
case for_couchdb_1.CouchDBGroupOperator.OR: {
|
|
145
|
+
const s = {};
|
|
146
|
+
s[for_couchdb_1.CouchDBGroupOperator.AND] = [
|
|
147
|
+
condition,
|
|
148
|
+
...Object.entries(query.selector).map(([key, val]) => {
|
|
149
|
+
const result = {};
|
|
150
|
+
result[key] = val;
|
|
151
|
+
return result;
|
|
152
|
+
}),
|
|
153
|
+
];
|
|
154
|
+
query.selector = s;
|
|
155
|
+
break;
|
|
156
|
+
}
|
|
157
|
+
default:
|
|
158
|
+
throw new Error("This should be impossible");
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
Object.entries(condition).forEach(([key, val]) => {
|
|
162
|
+
if (query.selector[key])
|
|
163
|
+
log.warn(`A ${key} query param is about to be overridden: ${query.selector[key]} by ${val}`);
|
|
164
|
+
query.selector[key] = val;
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
if (this.orderBySelectors?.length) {
|
|
169
|
+
query.sort = query.sort || [];
|
|
170
|
+
query.selector = query.selector || {};
|
|
171
|
+
for (const [selectorKey, direction] of this.orderBySelectors) {
|
|
172
|
+
const selector = selectorKey;
|
|
173
|
+
const rec = {};
|
|
174
|
+
rec[selector] = direction;
|
|
175
|
+
query.sort.push(rec);
|
|
176
|
+
if (!query.selector[selector]) {
|
|
177
|
+
query.selector[selector] = {};
|
|
178
|
+
query.selector[selector][for_couchdb_1.CouchDBOperator.BIGGER] =
|
|
179
|
+
null;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
if (this.limitSelector) {
|
|
184
|
+
query.limit = this.limitSelector;
|
|
185
|
+
}
|
|
186
|
+
else {
|
|
187
|
+
log.warn(`No limit selector defined. Using default couchdb limit of ${for_couchdb_1.CouchDBQueryLimit}`);
|
|
188
|
+
query.limit = for_couchdb_1.CouchDBQueryLimit;
|
|
189
|
+
}
|
|
190
|
+
if (this.offsetSelector)
|
|
191
|
+
query.skip = this.offsetSelector;
|
|
192
|
+
return query;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* @description Parses a condition into a CouchDB Mango query selector
|
|
196
|
+
* @summary Converts a Condition object into a CouchDB Mango query selector structure
|
|
197
|
+
*/
|
|
198
|
+
parseCondition(condition) {
|
|
199
|
+
function merge(op, obj1, obj2) {
|
|
200
|
+
const result = { selector: {} };
|
|
201
|
+
result.selector[op] = [obj1, obj2];
|
|
202
|
+
return result;
|
|
203
|
+
}
|
|
204
|
+
const { attr1, operator, comparison } = condition;
|
|
205
|
+
if (operator === core_1.Operator.BETWEEN) {
|
|
206
|
+
const attr = attr1;
|
|
207
|
+
if (!Array.isArray(comparison) || comparison.length !== 2)
|
|
208
|
+
throw new core_1.QueryError("BETWEEN operator requires [min, max] comparison");
|
|
209
|
+
const [min, max] = comparison;
|
|
210
|
+
const opBetween = {};
|
|
211
|
+
opBetween[attr] = {};
|
|
212
|
+
opBetween[attr][(0, for_couchdb_1.translateOperators)(core_1.Operator.BIGGER_EQ)] = min;
|
|
213
|
+
opBetween[attr][(0, for_couchdb_1.translateOperators)(core_1.Operator.SMALLER_EQ)] = max;
|
|
214
|
+
return { selector: opBetween };
|
|
215
|
+
}
|
|
216
|
+
let op = {};
|
|
217
|
+
if ([core_1.GroupOperator.AND, core_1.GroupOperator.OR, core_1.Operator.NOT].indexOf(operator) === -1) {
|
|
218
|
+
op[attr1] = {};
|
|
219
|
+
op[attr1][(0, for_couchdb_1.translateOperators)(operator)] =
|
|
220
|
+
comparison;
|
|
221
|
+
}
|
|
222
|
+
else if (operator === core_1.Operator.NOT) {
|
|
223
|
+
op = this.parseCondition(attr1).selector;
|
|
224
|
+
op[(0, for_couchdb_1.translateOperators)(core_1.Operator.NOT)] = {};
|
|
225
|
+
op[(0, for_couchdb_1.translateOperators)(core_1.Operator.NOT)][attr1.attr1] = comparison;
|
|
226
|
+
}
|
|
227
|
+
else {
|
|
228
|
+
const op1 = this.parseCondition(attr1).selector;
|
|
229
|
+
const op2 = this.parseCondition(comparison).selector;
|
|
230
|
+
op = merge((0, for_couchdb_1.translateOperators)(operator), op1, op2).selector;
|
|
231
|
+
}
|
|
232
|
+
return { selector: op };
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* @description Builds an aggregate query if aggregation is requested
|
|
236
|
+
* @summary Checks for aggregate operations and returns a special MangoQuery for them
|
|
237
|
+
*/
|
|
238
|
+
buildAggregateQuery() {
|
|
239
|
+
if (!this.fromSelector)
|
|
240
|
+
return undefined;
|
|
241
|
+
if (this.avgSelector) {
|
|
242
|
+
const attribute = String(this.avgSelector);
|
|
243
|
+
const sumInfo = this.createAggregateDescriptor("sum", attribute);
|
|
244
|
+
const countInfo = this.createAggregateDescriptor("count", attribute);
|
|
245
|
+
if (!sumInfo || !countInfo)
|
|
246
|
+
throw new core_1.QueryError(`Avg operation requires sum and count views for attribute ${attribute}`);
|
|
247
|
+
return this.createAggregateQuery({
|
|
248
|
+
kind: "avg",
|
|
249
|
+
attribute,
|
|
250
|
+
sumDescriptor: sumInfo.descriptor,
|
|
251
|
+
countDescriptor: countInfo.descriptor,
|
|
252
|
+
});
|
|
253
|
+
}
|
|
254
|
+
if (typeof this.countDistinctSelector !== "undefined") {
|
|
255
|
+
const attribute = this.countDistinctSelector == null
|
|
256
|
+
? undefined
|
|
257
|
+
: String(this.countDistinctSelector);
|
|
258
|
+
const info = this.createAggregateDescriptor("distinct", attribute);
|
|
259
|
+
if (info) {
|
|
260
|
+
info.countDistinct = true;
|
|
261
|
+
return this.createAggregateQuery(info);
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
const aggregatorUsed = typeof this.countSelector !== "undefined" ||
|
|
265
|
+
typeof this.countDistinctSelector !== "undefined" ||
|
|
266
|
+
!!this.minSelector ||
|
|
267
|
+
!!this.maxSelector ||
|
|
268
|
+
!!this.sumSelector ||
|
|
269
|
+
!!this.distinctSelector;
|
|
270
|
+
const aggregatorChecks = [
|
|
271
|
+
[
|
|
272
|
+
"count",
|
|
273
|
+
(this.countSelector ?? undefined),
|
|
274
|
+
],
|
|
275
|
+
["max", this.maxSelector],
|
|
276
|
+
["min", this.minSelector],
|
|
277
|
+
["sum", this.sumSelector],
|
|
278
|
+
["distinct", this.distinctSelector],
|
|
279
|
+
];
|
|
280
|
+
for (const [kind, selector] of aggregatorChecks) {
|
|
281
|
+
const attribute = selector ? String(selector) : undefined;
|
|
282
|
+
const info = this.createAggregateDescriptor(kind, attribute);
|
|
283
|
+
if (info)
|
|
284
|
+
return this.createAggregateQuery(info);
|
|
285
|
+
}
|
|
286
|
+
if (aggregatorUsed) {
|
|
287
|
+
throw new core_1.QueryError(`No CouchDB view metadata found for table ${decorator_validation_1.Model.tableName(this.fromSelector)} aggregator`);
|
|
288
|
+
}
|
|
289
|
+
return undefined;
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* @description Creates an aggregate descriptor for a view-based aggregation
|
|
293
|
+
*/
|
|
294
|
+
createAggregateDescriptor(kind, attribute) {
|
|
295
|
+
if (!this.fromSelector)
|
|
296
|
+
return undefined;
|
|
297
|
+
const metas = (0, for_couchdb_1.findViewMetadata)(this.fromSelector, kind, attribute);
|
|
298
|
+
if (!metas.length)
|
|
299
|
+
return undefined;
|
|
300
|
+
const meta = metas[0];
|
|
301
|
+
const tableName = decorator_validation_1.Model.tableName(this.fromSelector);
|
|
302
|
+
const viewName = (0, for_couchdb_1.generateViewName)(tableName, meta.attribute, kind, meta);
|
|
303
|
+
const ddoc = meta.ddoc || (0, for_couchdb_1.generateDesignDocName)(tableName, viewName);
|
|
304
|
+
const options = {
|
|
305
|
+
reduce: meta.reduce !== undefined ? true : !meta.returnDocs,
|
|
306
|
+
};
|
|
307
|
+
if (kind === "distinct" || kind === "groupBy")
|
|
308
|
+
options.group = true;
|
|
309
|
+
return {
|
|
310
|
+
kind,
|
|
311
|
+
meta,
|
|
312
|
+
descriptor: {
|
|
313
|
+
ddoc,
|
|
314
|
+
view: viewName,
|
|
315
|
+
options,
|
|
316
|
+
},
|
|
317
|
+
};
|
|
318
|
+
}
|
|
319
|
+
/**
|
|
320
|
+
* @description Creates the special aggregate MangoQuery marker
|
|
321
|
+
*/
|
|
322
|
+
createAggregateQuery(info) {
|
|
323
|
+
return {
|
|
324
|
+
selector: {},
|
|
325
|
+
aggregate: true,
|
|
326
|
+
aggregateInfo: info,
|
|
327
|
+
};
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* @description Gets the adapter cast to FabricClientAdapter for view access
|
|
331
|
+
*/
|
|
332
|
+
getFabricAdapter() {
|
|
333
|
+
return this.adapter;
|
|
334
|
+
}
|
|
335
|
+
/**
|
|
336
|
+
* @description Executes an aggregate query via adapter's view method
|
|
337
|
+
*/
|
|
338
|
+
async executeAggregate(info, ctx) {
|
|
339
|
+
if (!this.isViewAggregate(info)) {
|
|
340
|
+
return this.handleAverage(info, ctx);
|
|
341
|
+
}
|
|
342
|
+
const fabricAdapter = this.getFabricAdapter();
|
|
343
|
+
const viewInfo = info;
|
|
344
|
+
const response = await fabricAdapter.view(viewInfo.descriptor.ddoc, viewInfo.descriptor.view, viewInfo.descriptor.options, ctx);
|
|
345
|
+
return this.processViewResponse(info, response);
|
|
346
|
+
}
|
|
347
|
+
/**
|
|
348
|
+
* @description Handles average calculation from sum and count views
|
|
349
|
+
*/
|
|
350
|
+
async handleAverage(info, ctx) {
|
|
351
|
+
if (info.kind !== "avg")
|
|
352
|
+
throw new core_1.QueryError("Average descriptor is not valid");
|
|
353
|
+
const fabricAdapter = this.getFabricAdapter();
|
|
354
|
+
const [sumDesc, countDesc] = [info.sumDescriptor, info.countDescriptor];
|
|
355
|
+
const [sumResponse, countResponse] = await Promise.all([
|
|
356
|
+
fabricAdapter.view(sumDesc.ddoc, sumDesc.view, sumDesc.options, ctx),
|
|
357
|
+
fabricAdapter.view(countDesc.ddoc, countDesc.view, countDesc.options, ctx),
|
|
358
|
+
]);
|
|
359
|
+
const sum = sumResponse.rows?.[0]?.value ?? 0;
|
|
360
|
+
const count = countResponse.rows?.[0]?.value ?? 0;
|
|
361
|
+
if (!count)
|
|
362
|
+
return 0;
|
|
363
|
+
return (sum / count);
|
|
364
|
+
}
|
|
365
|
+
/**
|
|
366
|
+
* @description Processes the view response based on aggregate kind
|
|
367
|
+
*/
|
|
368
|
+
processViewResponse(info, response) {
|
|
369
|
+
if (info.kind === "avg")
|
|
370
|
+
throw new core_1.QueryError("Average results should be handled before processing rows");
|
|
371
|
+
const rows = response.rows || [];
|
|
372
|
+
const viewInfo = info;
|
|
373
|
+
const meta = viewInfo.meta;
|
|
374
|
+
if (viewInfo.countDistinct) {
|
|
375
|
+
return (rows.length || 0);
|
|
376
|
+
}
|
|
377
|
+
if (viewInfo.kind === "distinct" || viewInfo.kind === "groupBy") {
|
|
378
|
+
return rows.map((row) => row.key ?? row.value);
|
|
379
|
+
}
|
|
380
|
+
if (meta.returnDocs) {
|
|
381
|
+
return rows.map((row) => row.value ?? row.doc ?? row);
|
|
382
|
+
}
|
|
383
|
+
if (!rows.length) {
|
|
384
|
+
return (viewInfo.kind === "count" ? 0 : null);
|
|
385
|
+
}
|
|
386
|
+
return (rows[0].value ?? rows[0].key ?? null);
|
|
387
|
+
}
|
|
388
|
+
/**
|
|
389
|
+
* @description Type guard to check if info is a view-based aggregate
|
|
390
|
+
*/
|
|
391
|
+
isViewAggregate(info) {
|
|
392
|
+
return info.kind !== "avg";
|
|
90
393
|
}
|
|
91
394
|
}
|
|
92
395
|
exports.FabricClientStatement = FabricClientStatement;
|
|
@@ -8,6 +8,57 @@ export declare class FabricClientStatement<M extends Model, R> extends Statement
|
|
|
8
8
|
protected squash(ctx: Context<FabricClientFlags>): PreparedStatement<any> | undefined;
|
|
9
9
|
protected executePrepared(...argz: MaybeContextualArg<Context<FabricClientFlags>>): Promise<R>;
|
|
10
10
|
prepare(ctx?: Context<FabricClientFlags>): Promise<StatementExecutor<M, R>>;
|
|
11
|
+
/**
|
|
12
|
+
* @description Processes a record from CouchDB/Fabric
|
|
13
|
+
* @summary Extracts the ID from a CouchDB document and reverts it to a model instance
|
|
14
|
+
*/
|
|
15
|
+
protected processRecord(r: any, pkAttr: keyof M, sequenceType: "Number" | "BigInt" | undefined, ctx: Context<FabricClientFlags>): any;
|
|
16
|
+
/**
|
|
17
|
+
* @description Executes a raw Mango query
|
|
18
|
+
* @summary Sends a raw Mango query to Fabric and processes the results
|
|
19
|
+
*/
|
|
20
|
+
raw<R>(rawInput: MangoQuery, ...args: any[]): Promise<R>;
|
|
21
|
+
/**
|
|
22
|
+
* @description Builds a CouchDB Mango query from the statement
|
|
23
|
+
* @summary Converts the statement's conditions, selectors, and options into a CouchDB Mango query
|
|
24
|
+
*/
|
|
11
25
|
protected build(): MangoQuery;
|
|
12
|
-
|
|
26
|
+
/**
|
|
27
|
+
* @description Parses a condition into a CouchDB Mango query selector
|
|
28
|
+
* @summary Converts a Condition object into a CouchDB Mango query selector structure
|
|
29
|
+
*/
|
|
30
|
+
protected parseCondition(condition: Condition<M>): MangoQuery;
|
|
31
|
+
/**
|
|
32
|
+
* @description Builds an aggregate query if aggregation is requested
|
|
33
|
+
* @summary Checks for aggregate operations and returns a special MangoQuery for them
|
|
34
|
+
*/
|
|
35
|
+
private buildAggregateQuery;
|
|
36
|
+
/**
|
|
37
|
+
* @description Creates an aggregate descriptor for a view-based aggregation
|
|
38
|
+
*/
|
|
39
|
+
private createAggregateDescriptor;
|
|
40
|
+
/**
|
|
41
|
+
* @description Creates the special aggregate MangoQuery marker
|
|
42
|
+
*/
|
|
43
|
+
private createAggregateQuery;
|
|
44
|
+
/**
|
|
45
|
+
* @description Gets the adapter cast to FabricClientAdapter for view access
|
|
46
|
+
*/
|
|
47
|
+
private getFabricAdapter;
|
|
48
|
+
/**
|
|
49
|
+
* @description Executes an aggregate query via adapter's view method
|
|
50
|
+
*/
|
|
51
|
+
private executeAggregate;
|
|
52
|
+
/**
|
|
53
|
+
* @description Handles average calculation from sum and count views
|
|
54
|
+
*/
|
|
55
|
+
private handleAverage;
|
|
56
|
+
/**
|
|
57
|
+
* @description Processes the view response based on aggregate kind
|
|
58
|
+
*/
|
|
59
|
+
private processViewResponse;
|
|
60
|
+
/**
|
|
61
|
+
* @description Type guard to check if info is a view-based aggregate
|
|
62
|
+
*/
|
|
63
|
+
private isViewAggregate;
|
|
13
64
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FabricClientStatement.js","sourceRoot":"","sources":["../../src/client/FabricClientStatement.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FabricClientStatement.js","sourceRoot":"","sources":["../../src/client/FabricClientStatement.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,8 +5,10 @@ exports.privateCollectionFor = privateCollectionFor;
|
|
|
5
5
|
exports.sharedCollectionFor = sharedCollectionFor;
|
|
6
6
|
exports.extractCollections = extractCollections;
|
|
7
7
|
exports.writeCollections = writeCollections;
|
|
8
|
+
exports.writeCollectionDesignDocs = writeCollectionDesignDocs;
|
|
8
9
|
const decorator_validation_1 = require("@decaf-ts/decorator-validation");
|
|
9
10
|
const db_decorators_1 = require("@decaf-ts/db-decorators");
|
|
11
|
+
const generation_1 = require("./../indexes/generation.cjs");
|
|
10
12
|
function collectionFor(collectionName, policy, requiredPeerCount, maxPeerCount, blockToLive, memberOnlyRead, memberOnlyWrite) {
|
|
11
13
|
return {
|
|
12
14
|
name: collectionName,
|
|
@@ -99,4 +101,9 @@ function writeCollections(cols, p = process.cwd(), fileName = "collections_confi
|
|
|
99
101
|
ensureDirectoryExistence(file);
|
|
100
102
|
fs.writeFileSync(file, JSON.stringify(cols, undefined, 2));
|
|
101
103
|
}
|
|
104
|
+
function writeCollectionDesignDocs(docs, p = process.cwd(), collection) {
|
|
105
|
+
if (!docs?.length)
|
|
106
|
+
return;
|
|
107
|
+
(0, generation_1.writeDesignDocs)(docs, p, collection);
|
|
108
|
+
}
|
|
102
109
|
//# sourceMappingURL=generation.js.map
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { OrderDirection } from "@decaf-ts/core";
|
|
2
2
|
import { Constructor } from "@decaf-ts/decoration";
|
|
3
|
+
import { CouchDBDesignDoc } from "@decaf-ts/for-couchdb";
|
|
3
4
|
import { Model } from "@decaf-ts/decorator-validation";
|
|
4
5
|
export type Index = {
|
|
5
6
|
index: {
|
|
@@ -53,3 +54,4 @@ export declare function extractCollections<M extends Model>(m: Constructor<M>, m
|
|
|
53
54
|
shared: PrivateCollection[];
|
|
54
55
|
}>;
|
|
55
56
|
export declare function writeCollections(cols: PrivateCollection[], p?: string, fileName?: string): void;
|
|
57
|
+
export declare function writeCollectionDesignDocs(docs: CouchDBDesignDoc[], p?: string, collection?: string): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generation.js","sourceRoot":"","sources":["../../../src/client/collections/generation.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"generation.js","sourceRoot":"","sources":["../../../src/client/collections/generation.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,7 +18,7 @@ export declare function contentOfLoadFile(contentOrPath: string | Uint8Array, fi
|
|
|
18
18
|
* @function readFile
|
|
19
19
|
* @memberOf module:for-fabric.client
|
|
20
20
|
*/
|
|
21
|
-
export declare function readFile(contentOrPath: string | Buffer): Promise<
|
|
21
|
+
export declare function readFile(contentOrPath: string | Buffer): Promise<NonSharedBuffer>;
|
|
22
22
|
/**
|
|
23
23
|
* @description Creates a Certificate Authority user
|
|
24
24
|
* @summary Initializes a user with the given credentials for interacting with a Fabric CA
|