@decaf-ts/for-couchdb 0.4.30 → 0.4.32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/dist/for-couchdb.cjs +1 -1
  2. package/dist/for-couchdb.cjs.map +1 -1
  3. package/dist/for-couchdb.js +1 -1
  4. package/dist/for-couchdb.js.map +1 -1
  5. package/lib/adapter.d.ts +12 -1
  6. package/lib/adapter.js.map +1 -1
  7. package/lib/decorators.cjs +9 -39
  8. package/lib/decorators.d.ts +2 -5
  9. package/lib/decorators.js.map +1 -1
  10. package/lib/esm/adapter.d.ts +12 -1
  11. package/lib/esm/adapter.js.map +1 -1
  12. package/lib/esm/decorators.d.ts +2 -5
  13. package/lib/esm/decorators.js +5 -33
  14. package/lib/esm/decorators.js.map +1 -1
  15. package/lib/esm/index.d.ts +1 -1
  16. package/lib/esm/index.js +1 -1
  17. package/lib/esm/indexes/generator.js +68 -38
  18. package/lib/esm/indexes/generator.js.map +1 -1
  19. package/lib/esm/query/Statement.d.ts +32 -2
  20. package/lib/esm/query/Statement.js +445 -12
  21. package/lib/esm/query/Statement.js.map +1 -1
  22. package/lib/esm/types.d.ts +11 -0
  23. package/lib/esm/views/generator.d.ts +8 -2
  24. package/lib/esm/views/generator.js +31 -4
  25. package/lib/esm/views/generator.js.map +1 -1
  26. package/lib/esm/views/types.d.ts +6 -20
  27. package/lib/index.cjs +1 -1
  28. package/lib/index.d.ts +1 -1
  29. package/lib/indexes/generator.cjs +67 -37
  30. package/lib/indexes/generator.js.map +1 -1
  31. package/lib/query/Statement.cjs +444 -11
  32. package/lib/query/Statement.d.ts +32 -2
  33. package/lib/query/Statement.js.map +1 -1
  34. package/lib/types.d.ts +11 -0
  35. package/lib/views/generator.cjs +31 -0
  36. package/lib/views/generator.d.ts +8 -2
  37. package/lib/views/generator.js.map +1 -1
  38. package/lib/views/types.d.ts +6 -20
  39. package/package.json +1 -1
@@ -1,10 +1,11 @@
1
- import { Condition, GroupOperator, Operator, Sequence, Statement, } from "@decaf-ts/core";
1
+ import { Condition, GroupOperator, Operator, QueryError, Sequence, Statement, UnsupportedError, } from "@decaf-ts/core";
2
2
  import { Model } from "@decaf-ts/decorator-validation";
3
3
  import { translateOperators } from "./translate.js";
4
4
  import { CouchDBKeys } from "./../constants.js";
5
5
  import { CouchDBGroupOperator, CouchDBOperator, CouchDBQueryLimit, } from "./constants.js";
6
6
  import { DBKeys } from "@decaf-ts/db-decorators";
7
7
  import { Metadata } from "@decaf-ts/decoration";
8
+ import { generateDesignDocName, generateViewName, findViewMetadata, } from "./../views/generator.js";
8
9
  /**
9
10
  * @description Statement builder for CouchDB Mango queries
10
11
  * @summary Provides a fluent interface for building CouchDB Mango queries with type safety
@@ -28,6 +29,7 @@ import { Metadata } from "@decaf-ts/decoration";
28
29
  export class CouchDBStatement extends Statement {
29
30
  constructor(adapter) {
30
31
  super(adapter);
32
+ this.attributeTypeCache = new Map();
31
33
  }
32
34
  /**
33
35
  * @description Builds a CouchDB Mango query from the statement
@@ -87,6 +89,16 @@ export class CouchDBStatement extends Statement {
87
89
  */
88
90
  build() {
89
91
  const log = this.log.for(this.build);
92
+ this.manualAggregation = undefined;
93
+ const aggregateInfo = this.buildAggregateInfo();
94
+ if (aggregateInfo) {
95
+ if (this.shouldUseManualAggregation()) {
96
+ this.manualAggregation = aggregateInfo;
97
+ }
98
+ else {
99
+ return this.createAggregateQuery(aggregateInfo);
100
+ }
101
+ }
90
102
  const selectors = {};
91
103
  selectors[CouchDBKeys.TABLE] = {};
92
104
  selectors[CouchDBKeys.TABLE] = Model.tableName(this.fromSelector);
@@ -139,23 +151,26 @@ export class CouchDBStatement extends Statement {
139
151
  });
140
152
  }
141
153
  }
142
- if (this.orderBySelector) {
154
+ if (this.orderBySelectors?.length) {
143
155
  query.sort = query.sort || [];
144
156
  query.selector = query.selector || {};
145
- const [selector, value] = this.orderBySelector;
146
- const rec = {};
147
- rec[selector] = value;
148
- query.sort.push(rec);
149
- if (!query.selector[selector]) {
150
- query.selector[selector] = {};
151
- query.selector[selector][CouchDBOperator.BIGGER] =
152
- null;
157
+ for (const [selectorKey, direction] of this.orderBySelectors) {
158
+ const selector = selectorKey;
159
+ const rec = {};
160
+ rec[selector] = direction;
161
+ query.sort.push(rec);
162
+ if (!query.selector[selector]) {
163
+ query.selector[selector] = {};
164
+ query.selector[selector][CouchDBOperator.BIGGER] =
165
+ null;
166
+ }
153
167
  }
154
168
  }
169
+ const hasManualAggregate = !!this.manualAggregation;
155
170
  if (this.limitSelector) {
156
171
  query.limit = this.limitSelector;
157
172
  }
158
- else {
173
+ else if (!hasManualAggregate) {
159
174
  log.warn(`No limit selector defined. Using default couchdb limit of ${CouchDBQueryLimit}`);
160
175
  query.limit = CouchDBQueryLimit;
161
176
  }
@@ -188,11 +203,24 @@ export class CouchDBStatement extends Statement {
188
203
  */
189
204
  async raw(rawInput, ...args) {
190
205
  const { ctx } = this.logCtx(args, this.raw);
206
+ const aggregator = rawInput?.aggregateInfo;
207
+ if (rawInput?.aggregate && aggregator) {
208
+ return this.executeAggregate(aggregator, ctx);
209
+ }
191
210
  const results = await this.adapter.raw(rawInput, true, ctx);
192
211
  const pkAttr = Model.pk(this.fromSelector);
193
212
  const type = Metadata.get(this.fromSelector, Metadata.key(DBKeys.ID, pkAttr))?.type;
213
+ const processed = results.map((r) => this.processRecord(r, pkAttr, type, ctx));
214
+ if (this.manualAggregation) {
215
+ const manualResult = this.executeManualAggregation(processed, this.manualAggregation, ctx);
216
+ this.manualAggregation = undefined;
217
+ return manualResult;
218
+ }
219
+ if (!this.selectSelector && this.groupBySelectors?.length) {
220
+ return this.groupSelectResults(processed);
221
+ }
194
222
  if (!this.selectSelector)
195
- return results.map((r) => this.processRecord(r, pkAttr, type, ctx));
223
+ return processed;
196
224
  return results;
197
225
  }
198
226
  /**
@@ -230,6 +258,400 @@ export class CouchDBStatement extends Statement {
230
258
  *
231
259
  * Statement-->>Statement: Return query with selector
232
260
  */
261
+ buildAggregateInfo() {
262
+ if (!this.fromSelector)
263
+ return undefined;
264
+ if (this.avgSelector) {
265
+ const attribute = String(this.avgSelector);
266
+ const sumInfo = this.createAggregateDescriptor("sum", attribute);
267
+ if (!sumInfo)
268
+ throw this.missingDecorator("sum", attribute);
269
+ const countInfo = this.createAggregateDescriptor("count", attribute);
270
+ if (!countInfo)
271
+ throw this.missingDecorator("count", attribute);
272
+ return {
273
+ kind: "avg",
274
+ attribute,
275
+ sumDescriptor: sumInfo.descriptor,
276
+ countDescriptor: countInfo.descriptor,
277
+ };
278
+ }
279
+ if (typeof this.countDistinctSelector !== "undefined") {
280
+ const attribute = this.resolveSelectorAttribute(this.countDistinctSelector);
281
+ const info = this.createAggregateDescriptor("distinct", attribute);
282
+ if (!info)
283
+ throw this.missingDecorator("distinct", attribute);
284
+ info.countDistinct = true;
285
+ return info;
286
+ }
287
+ if (typeof this.countSelector !== "undefined") {
288
+ const attribute = this.resolveSelectorAttribute(this.countSelector);
289
+ const info = this.createAggregateDescriptor("count", attribute);
290
+ if (!info)
291
+ throw this.missingDecorator("count", attribute);
292
+ return info;
293
+ }
294
+ if (this.maxSelector) {
295
+ const attribute = this.resolveSelectorAttribute(this.maxSelector);
296
+ const info = this.createAggregateDescriptor("max", attribute);
297
+ if (!info)
298
+ throw this.missingDecorator("max", attribute);
299
+ return info;
300
+ }
301
+ if (this.minSelector) {
302
+ const attribute = this.resolveSelectorAttribute(this.minSelector);
303
+ const info = this.createAggregateDescriptor("min", attribute);
304
+ if (!info)
305
+ throw this.missingDecorator("min", attribute);
306
+ return info;
307
+ }
308
+ if (this.sumSelector) {
309
+ const attribute = this.resolveSelectorAttribute(this.sumSelector);
310
+ const info = this.createAggregateDescriptor("sum", attribute);
311
+ if (!info)
312
+ throw this.missingDecorator("sum", attribute);
313
+ return info;
314
+ }
315
+ if (this.distinctSelector) {
316
+ const attribute = this.resolveSelectorAttribute(this.distinctSelector);
317
+ const info = this.createAggregateDescriptor("distinct", attribute);
318
+ if (!info)
319
+ throw this.missingDecorator("distinct", attribute);
320
+ return info;
321
+ }
322
+ return undefined;
323
+ }
324
+ createAggregateDescriptor(kind, attribute) {
325
+ if (!this.fromSelector)
326
+ return undefined;
327
+ const metas = findViewMetadata(this.fromSelector, kind, attribute);
328
+ if (!metas.length)
329
+ return undefined;
330
+ const meta = metas[0];
331
+ const tableName = Model.tableName(this.fromSelector);
332
+ const viewName = generateViewName(tableName, meta.attribute, kind, meta);
333
+ const ddoc = meta.ddoc || generateDesignDocName(tableName, viewName);
334
+ const options = {
335
+ reduce: meta.reduce !== undefined ? true : !meta.returnDocs,
336
+ };
337
+ if (kind === "distinct" || kind === "groupBy")
338
+ options.group = true;
339
+ return {
340
+ kind,
341
+ meta,
342
+ descriptor: {
343
+ ddoc,
344
+ view: viewName,
345
+ options,
346
+ },
347
+ };
348
+ }
349
+ createAggregateQuery(info) {
350
+ return {
351
+ selector: {},
352
+ aggregate: true,
353
+ aggregateInfo: info,
354
+ };
355
+ }
356
+ shouldUseManualAggregation() {
357
+ return !!this.whereCondition;
358
+ }
359
+ async executeAggregate(info, ctx) {
360
+ if (!this.isViewAggregate(info)) {
361
+ return this.handleAverage(info, ctx);
362
+ }
363
+ const couchAdapter = this.getCouchAdapter();
364
+ const viewInfo = info;
365
+ const response = await couchAdapter.view(viewInfo.descriptor.ddoc, viewInfo.descriptor.view, viewInfo.descriptor.options, ctx);
366
+ return this.processViewResponse(info, response);
367
+ }
368
+ async handleAverage(info, ctx) {
369
+ if (info.kind !== "avg")
370
+ throw new QueryError("Average descriptor is not valid");
371
+ const [sumDesc, countDesc] = [info.sumDescriptor, info.countDescriptor];
372
+ const couchAdapter = this.getCouchAdapter();
373
+ const [sumResponse, countResponse] = await Promise.all([
374
+ couchAdapter.view(sumDesc.ddoc, sumDesc.view, sumDesc.options, ctx),
375
+ couchAdapter.view(countDesc.ddoc, countDesc.view, countDesc.options, ctx),
376
+ ]);
377
+ const sum = sumResponse.rows?.[0]?.value ?? 0;
378
+ const count = countResponse.rows?.[0]?.value ?? 0;
379
+ if (!count)
380
+ return 0;
381
+ return (sum / count);
382
+ }
383
+ executeManualAggregation(docs, info,
384
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
385
+ ctx) {
386
+ if (!this.fromSelector)
387
+ throw new QueryError("Manual aggregation requires a target model");
388
+ if (info.kind === "avg") {
389
+ return this.computeAverage(docs, info.attribute);
390
+ }
391
+ if (info.kind === "groupBy") {
392
+ return this.computeGroupBy(docs, info.meta.attribute);
393
+ }
394
+ const attribute = info.meta.attribute;
395
+ switch (info.kind) {
396
+ case "count": {
397
+ if (info.countDistinct) {
398
+ return this.computeDistinctCount(docs, attribute);
399
+ }
400
+ return this.computeCount(docs, attribute);
401
+ }
402
+ case "distinct":
403
+ if (info.countDistinct) {
404
+ return this.computeDistinctCount(docs, attribute);
405
+ }
406
+ return this.computeDistinctValues(docs, attribute);
407
+ case "sum":
408
+ return this.computeSum(docs, attribute);
409
+ case "min":
410
+ return this.computeMinMax(docs, attribute, "min");
411
+ case "max":
412
+ return this.computeMinMax(docs, attribute, "max");
413
+ default:
414
+ throw new QueryError(`Unsupported manual aggregation ${info.kind}`);
415
+ }
416
+ }
417
+ computeCount(docs, attribute) {
418
+ if (!attribute)
419
+ return docs.length;
420
+ const values = this.collectValues(docs, attribute);
421
+ return values.filter((value) => value !== undefined && value !== null)
422
+ .length;
423
+ }
424
+ computeDistinctCount(docs, attribute) {
425
+ const values = attribute
426
+ ? this.collectValues(docs, attribute).filter((value) => value !== undefined && value !== null)
427
+ : docs;
428
+ const seen = new Set();
429
+ values.forEach((value) => seen.add(JSON.stringify(value)));
430
+ return seen.size;
431
+ }
432
+ computeDistinctValues(docs, attribute) {
433
+ if (!attribute)
434
+ return [];
435
+ const values = this.collectValues(docs, attribute);
436
+ const seen = new Set();
437
+ const unique = [];
438
+ values.forEach((value) => {
439
+ const key = JSON.stringify(value);
440
+ if (!seen.has(key)) {
441
+ seen.add(key);
442
+ unique.push(value);
443
+ }
444
+ });
445
+ return unique;
446
+ }
447
+ computeSum(docs, attribute) {
448
+ if (!attribute)
449
+ return docs.length;
450
+ const values = this.collectValues(docs, attribute).filter((value) => value !== undefined && value !== null);
451
+ const sum = values.reduce((acc, value) => acc + this.toNumericValue(value, attribute, "SUM operation"), 0);
452
+ return sum;
453
+ }
454
+ computeAverage(docs, attribute) {
455
+ if (!attribute)
456
+ return 0;
457
+ const values = this.collectValues(docs, attribute).filter((value) => value !== undefined && value !== null);
458
+ if (!values.length)
459
+ return 0;
460
+ const sum = values.reduce((acc, value) => acc + this.toNumericValue(value, attribute, "AVG operation"), 0);
461
+ return (sum / values.length);
462
+ }
463
+ computeMinMax(docs, attribute, mode) {
464
+ if (!attribute)
465
+ return null;
466
+ const values = this.collectValues(docs, attribute).filter((value) => value !== undefined && value !== null);
467
+ let currentValue = null;
468
+ let currentComparable = null;
469
+ for (const value of values) {
470
+ const normalized = this.normalizeComparable(value);
471
+ if (normalized === null)
472
+ continue;
473
+ if (currentComparable === null) {
474
+ currentComparable = normalized;
475
+ currentValue = value;
476
+ continue;
477
+ }
478
+ if ((mode === "min" && normalized < currentComparable) ||
479
+ (mode === "max" && normalized > currentComparable)) {
480
+ currentComparable = normalized;
481
+ currentValue = value;
482
+ }
483
+ }
484
+ return currentValue;
485
+ }
486
+ computeGroupBy(docs, attribute) {
487
+ const grouped = {};
488
+ const values = this.collectValues(docs, attribute);
489
+ docs.forEach((doc, index) => {
490
+ const key = this.groupKey(values[index]);
491
+ if (!grouped[key])
492
+ grouped[key] = [];
493
+ grouped[key].push(doc);
494
+ });
495
+ return grouped;
496
+ }
497
+ groupSelectResults(docs) {
498
+ if (!this.groupBySelectors?.length)
499
+ return {};
500
+ const attribute = this.resolveSelectorAttribute(this.groupBySelectors[0]);
501
+ if (!attribute)
502
+ return {};
503
+ const grouped = {};
504
+ docs.forEach((doc) => {
505
+ const key = this.groupKey(this.convertValueByAttribute(attribute, doc[attribute]));
506
+ if (!grouped[key])
507
+ grouped[key] = [];
508
+ grouped[key].push(doc);
509
+ });
510
+ return grouped;
511
+ }
512
+ collectValues(docs, attribute) {
513
+ return docs.map((doc) => {
514
+ if (!doc || typeof doc !== "object")
515
+ return undefined;
516
+ return this.convertValueByAttribute(attribute, doc[attribute]);
517
+ });
518
+ }
519
+ convertValueByAttribute(attribute, value) {
520
+ if (!this.fromSelector)
521
+ return value;
522
+ const attributeType = this.getAttributeType(attribute);
523
+ if (attributeType === "date") {
524
+ if (value instanceof Date)
525
+ return value;
526
+ const parsed = new Date(value);
527
+ if (!Number.isNaN(parsed.getTime()))
528
+ return parsed;
529
+ }
530
+ if (typeof value === "string" && attribute.toLowerCase().includes("date")) {
531
+ const parsed = new Date(value);
532
+ if (!Number.isNaN(parsed.getTime()))
533
+ return parsed;
534
+ }
535
+ return value;
536
+ }
537
+ getAttributeType(attribute) {
538
+ if (!attribute || !this.fromSelector)
539
+ return undefined;
540
+ if (this.attributeTypeCache.has(attribute)) {
541
+ return this.attributeTypeCache.get(attribute);
542
+ }
543
+ const metaType = Metadata.type(this.fromSelector, attribute) ??
544
+ Metadata.getPropDesignTypes?.(this.fromSelector, attribute)
545
+ ?.designType;
546
+ const normalized = this.normalizeMetaType(metaType);
547
+ this.attributeTypeCache.set(attribute, normalized);
548
+ return normalized;
549
+ }
550
+ normalizeMetaType(metaType) {
551
+ if (!metaType)
552
+ return undefined;
553
+ if (typeof metaType === "string")
554
+ return metaType.toLowerCase();
555
+ if (typeof metaType === "function" && metaType.name)
556
+ return metaType.name.toLowerCase();
557
+ return undefined;
558
+ }
559
+ normalizeComparable(value) {
560
+ if (typeof value === "number")
561
+ return value;
562
+ if (typeof value === "bigint")
563
+ return Number(value);
564
+ if (value instanceof Date)
565
+ return value.getTime();
566
+ if (typeof value === "string" && !isNaN(Number(value)))
567
+ return Number(value);
568
+ return null;
569
+ }
570
+ groupKey(value) {
571
+ if (value === undefined)
572
+ return "undefined";
573
+ if (value === null)
574
+ return "null";
575
+ if (typeof value === "symbol")
576
+ return value.toString();
577
+ if (typeof value === "object") {
578
+ try {
579
+ return JSON.stringify(value);
580
+ }
581
+ catch {
582
+ return String(value);
583
+ }
584
+ }
585
+ return String(value);
586
+ }
587
+ toNumericValue(value, field, context) {
588
+ if (typeof value === "number")
589
+ return value;
590
+ if (typeof value === "bigint")
591
+ return Number(value);
592
+ if (value instanceof Date)
593
+ return value.getTime();
594
+ if (typeof value === "string" && !isNaN(Number(value)))
595
+ return Number(value);
596
+ throw new QueryError(`${context} on "${field}" requires numeric values, but got ${typeof value}`);
597
+ }
598
+ convertAggregateValue(attribute, value) {
599
+ if (!attribute)
600
+ return value;
601
+ return this.convertValueByAttribute(attribute, value);
602
+ }
603
+ resolveSelectorAttribute(selector) {
604
+ if (selector == null)
605
+ return undefined;
606
+ return String(selector);
607
+ }
608
+ missingDecorator(kind, attribute) {
609
+ const decorator = this.decoratorForKind(kind);
610
+ const table = this.fromSelector
611
+ ? Model.tableName(this.fromSelector)
612
+ : "<unknown table>";
613
+ const attributeDesc = attribute ? ` on "${attribute}"` : "";
614
+ return new UnsupportedError(`${decorator} decorator is required for CouchDB ${kind} aggregation${attributeDesc} on table "${table}".`);
615
+ }
616
+ decoratorForKind(kind) {
617
+ const map = {
618
+ count: "@count",
619
+ sum: "@sum",
620
+ min: "@min",
621
+ max: "@max",
622
+ distinct: "@distinct",
623
+ groupBy: "@groupBy",
624
+ view: "@view",
625
+ avg: "@avg",
626
+ };
627
+ return map[kind] || `@${kind}`;
628
+ }
629
+ processViewResponse(info, response) {
630
+ if (info.kind === "avg")
631
+ throw new QueryError("Average results should be handled before processing rows");
632
+ const rows = response.rows || [];
633
+ const viewInfo = info;
634
+ const meta = viewInfo.meta;
635
+ if (viewInfo.countDistinct) {
636
+ return (rows.length || 0);
637
+ }
638
+ if (viewInfo.kind === "distinct" || viewInfo.kind === "groupBy") {
639
+ return rows.map((row) => this.convertAggregateValue(viewInfo.meta.attribute, row.key ?? row.value));
640
+ }
641
+ if (meta.returnDocs) {
642
+ return rows.map((row) => row.value ?? row.doc ?? row);
643
+ }
644
+ if (!rows.length) {
645
+ return (viewInfo.kind === "count" ? 0 : null);
646
+ }
647
+ return this.convertAggregateValue(viewInfo.meta.attribute, rows[0].value ?? rows[0].key ?? null);
648
+ }
649
+ isViewAggregate(info) {
650
+ return info.kind !== "avg";
651
+ }
652
+ getCouchAdapter() {
653
+ return this.adapter;
654
+ }
233
655
  parseCondition(condition) {
234
656
  /**
235
657
  * @description Merges two selectors with a logical operator
@@ -245,6 +667,17 @@ export class CouchDBStatement extends Statement {
245
667
  return result;
246
668
  }
247
669
  const { attr1, operator, comparison } = condition;
670
+ if (operator === Operator.BETWEEN) {
671
+ const attr = attr1;
672
+ if (!Array.isArray(comparison) || comparison.length !== 2)
673
+ throw new QueryError("BETWEEN operator requires [min, max] comparison");
674
+ const [min, max] = comparison;
675
+ const opBetween = {};
676
+ opBetween[attr] = {};
677
+ opBetween[attr][translateOperators(Operator.BIGGER_EQ)] = min;
678
+ opBetween[attr][translateOperators(Operator.SMALLER_EQ)] = max;
679
+ return { selector: opBetween };
680
+ }
248
681
  let op = {};
249
682
  if ([GroupOperator.AND, GroupOperator.OR, Operator.NOT].indexOf(operator) === -1) {
250
683
  op[attr1] = {};
@@ -1 +1 @@
1
- {"version":3,"file":"Statement.js","sourceRoot":"","sources":["../../../src/query/Statement.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Statement.js","sourceRoot":"","sources":["../../../src/query/Statement.ts"],"names":[],"mappings":"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"}
@@ -153,3 +153,14 @@ export interface MangoQuery {
153
153
  * Optional, default: false. */
154
154
  execution_stats?: boolean;
155
155
  }
156
+ export interface ViewRow<D = any> {
157
+ id?: string;
158
+ key?: any;
159
+ value?: any;
160
+ doc?: D;
161
+ }
162
+ export interface ViewResponse<D = any> {
163
+ total_rows?: number;
164
+ offset?: number;
165
+ rows: ViewRow<D>[];
166
+ }
@@ -1,7 +1,13 @@
1
+ import { ViewKind } from "@decaf-ts/core";
1
2
  import { Model } from "@decaf-ts/decorator-validation";
2
3
  import { Constructor } from "@decaf-ts/decoration";
3
4
  import { CreateIndexRequest } from "../types";
4
- import { CouchDBDesignDoc, ViewIndexDefinition, ViewMetadata } from "./types";
5
+ import { Operator } from "@decaf-ts/core";
6
+ import { CouchDBDesignDoc, CouchDBViewMetadata, ViewIndexDefinition } from "./types";
7
+ export declare function generateViewName(tableName: string, attr: string, kind: ViewKind, meta: CouchDBViewMetadata, separator?: string): string;
8
+ export declare function generateDesignDocName(tableName: string, viewName: string, separator?: string): string;
9
+ export declare function findViewMetadata<M extends Model>(model: Constructor<M>, kind: ViewKind, attribute?: string): CouchDBViewMetadata[];
10
+ export declare function collectViewMetadata(model: Constructor<Model>, key: Operator, kind: ViewKind): CouchDBViewMetadata[];
5
11
  export declare function generateViews<M extends Model>(models: Constructor<M>[]): CouchDBDesignDoc[];
6
12
  export declare function generateViewIndexes<M extends Model>(models: Constructor<M>[]): CreateIndexRequest[];
7
- export declare function viewIndexDefinition(meta: ViewMetadata): ViewIndexDefinition;
13
+ export declare function viewIndexDefinition(meta: CouchDBViewMetadata): ViewIndexDefinition;
@@ -1,4 +1,4 @@
1
- import { Condition, GroupOperator, OrderDirection } from "@decaf-ts/core";
1
+ import { Condition, GroupOperator, OrderDirection, } from "@decaf-ts/core";
2
2
  import { DefaultSeparator } from "@decaf-ts/db-decorators";
3
3
  import { Metadata } from "@decaf-ts/decoration";
4
4
  import { Model } from "@decaf-ts/decorator-validation";
@@ -150,16 +150,42 @@ function normalizeViewMetadata(kind, attr, meta, tableName) {
150
150
  : defaultReduce(kind);
151
151
  return { map, reduce };
152
152
  }
153
- function generateViewName(tableName, attr, kind, meta, separator = DefaultSeparator) {
153
+ export function generateViewName(tableName, attr, kind, meta, separator = DefaultSeparator) {
154
154
  if (meta.name)
155
155
  return meta.name;
156
156
  const parts = [tableName, attr, kind, "view"];
157
157
  return parts.join(separator).replace(/\s+/g, "_");
158
158
  }
159
- function generateDesignDocName(tableName, viewName, separator = DefaultSeparator) {
159
+ export function generateDesignDocName(tableName, viewName, separator = DefaultSeparator) {
160
160
  return [tableName, viewName, CouchDBKeys.DDOC].join(separator);
161
161
  }
162
- function collectViewMetadata(model, key, kind) {
162
+ export function findViewMetadata(model, kind, attribute) {
163
+ const viewKeyMap = {
164
+ view: Operator.VIEW,
165
+ groupBy: Operator.GROUP_BY,
166
+ count: Operator.COUNT,
167
+ sum: Operator.SUM,
168
+ max: Operator.MAX,
169
+ min: Operator.MIN,
170
+ distinct: Operator.DISTINCT,
171
+ };
172
+ const key = viewKeyMap[kind];
173
+ if (!key)
174
+ return [];
175
+ const meta = Metadata.get(model, key) || {};
176
+ return Object.entries(meta).flatMap(([attr, entries]) => {
177
+ if (!entries || typeof entries !== "object")
178
+ return [];
179
+ return Object.values(entries)
180
+ .map((entry) => ({
181
+ ...entry,
182
+ kind,
183
+ attribute: entry.attribute || attr,
184
+ }))
185
+ .filter((entry) => !attribute || entry.attribute === attribute);
186
+ });
187
+ }
188
+ export function collectViewMetadata(model, key, kind) {
163
189
  const meta = Metadata.get(model, key) || {};
164
190
  return Object.entries(meta).flatMap(([attr, entries]) => {
165
191
  if (!entries || typeof entries !== "object")
@@ -188,6 +214,7 @@ export function generateViews(models) {
188
214
  models.forEach((m) => {
189
215
  const tableName = Model.tableName(m);
190
216
  const metas = viewKeys.flatMap(([key, kind]) => collectViewMetadata(m, key, kind));
217
+ console.log("generateViews", tableName, metas.length);
191
218
  metas.forEach((meta) => {
192
219
  const attr = meta.attribute;
193
220
  const viewName = generateViewName(tableName, attr, meta.kind, meta);