@travetto/model-mongo 8.0.6 → 8.0.7

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 (2) hide show
  1. package/package.json +2 -2
  2. package/src/service.ts +23 -15
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@travetto/model-mongo",
3
- "version": "8.0.6",
3
+ "version": "8.0.7",
4
4
  "description": "Mongo backing for the travetto model module.",
5
5
  "keywords": [
6
6
  "database",
@@ -32,7 +32,7 @@
32
32
  "@travetto/config": "^8.0.3",
33
33
  "@travetto/model": "^8.0.4",
34
34
  "@travetto/model-indexed": "^8.0.4",
35
- "@travetto/model-query": "^8.0.6",
35
+ "@travetto/model-query": "^8.0.7",
36
36
  "mongodb": "^7.6.0"
37
37
  },
38
38
  "peerDependencies": {
package/src/service.ts CHANGED
@@ -58,6 +58,7 @@ import {
58
58
  type ModelQueryCrudSupport,
59
59
  ModelQueryCrudUtil,
60
60
  type ModelQueryFacet,
61
+ type FacetModelQuery,
61
62
  type ModelQueryFacetSupport,
62
63
  type ModelQuerySuggestSupport,
63
64
  ModelQuerySuggestUtil,
@@ -66,6 +67,7 @@ import {
66
67
  type NumberFieldAggregateResult,
67
68
  type PageableModelQuery,
68
69
  QueryVerifier,
70
+ type SuggestModelQuery,
69
71
  type ValidComparableFields,
70
72
  type ValidStringFields,
71
73
  type WhereClause
@@ -713,13 +715,14 @@ export class MongoModelService
713
715
  }
714
716
 
715
717
  // Facet
716
- async facetByQuery<T extends ModelType>(cls: Class<T>, field: ValidStringFields<T>, query?: ModelQuery<T>): Promise<ModelQueryFacet[]> {
718
+ async facetByQuery<T extends ModelType>(
719
+ cls: Class<T>,
720
+ field: ValidStringFields<T>,
721
+ query?: FacetModelQuery<T>
722
+ ): Promise<ModelQueryFacet[]> {
717
723
  await QueryVerifier.verify(cls, query);
718
724
 
719
725
  const col = await this.getStore(cls);
720
- if (query) {
721
- await QueryVerifier.verify(cls, query);
722
- }
723
726
 
724
727
  let queryObject: Record<string, unknown> = { [field]: { $exists: true } };
725
728
 
@@ -736,17 +739,22 @@ export class MongoModelService
736
739
  $sum: 1
737
740
  }
738
741
  }
739
- }
742
+ },
743
+ {
744
+ $sort: {
745
+ count: -1
746
+ }
747
+ },
748
+ ...(query?.offset !== undefined ? [{ $skip: query.offset }] : []),
749
+ ...(query?.limit !== undefined ? [{ $limit: query.limit }] : [])
740
750
  ];
741
751
 
742
752
  const result = await col.aggregate<{ _id: ObjectId; count: number }>(aggregations).toArray();
743
753
 
744
- return result
745
- .map(item => ({
746
- key: MongoUtil.idToString(item._id),
747
- count: item.count
748
- }))
749
- .toSorted((a, b) => b.count - a.count);
754
+ return result.map(item => ({
755
+ key: MongoUtil.idToString(item._id),
756
+ count: item.count
757
+ }));
750
758
  }
751
759
 
752
760
  // Aggregate
@@ -791,24 +799,24 @@ export class MongoModelService
791
799
  cls: Class<T>,
792
800
  field: ValidStringFields<T>,
793
801
  prefix?: string,
794
- query?: PageableModelQuery<T>
802
+ query?: SuggestModelQuery<T>
795
803
  ): Promise<string[]> {
796
804
  await QueryVerifier.verify(cls, query);
797
805
  const resolvedQuery = ModelQuerySuggestUtil.getSuggestFieldQuery<T>(cls, field, prefix, query);
798
806
  const results = await this.query<T>(cls, resolvedQuery);
799
- return ModelQuerySuggestUtil.combineSuggestResults<T, string>(cls, field, prefix, results, a => a, query?.limit);
807
+ return ModelQuerySuggestUtil.combineSuggestResults<T, string>(cls, field, prefix, results, a => a, query);
800
808
  }
801
809
 
802
810
  async suggestByQuery<T extends ModelType>(
803
811
  cls: Class<T>,
804
812
  field: ValidStringFields<T>,
805
813
  prefix?: string,
806
- query?: PageableModelQuery<T>
814
+ query?: SuggestModelQuery<T>
807
815
  ): Promise<T[]> {
808
816
  await QueryVerifier.verify(cls, query);
809
817
  const resolvedQuery = ModelQuerySuggestUtil.getSuggestQuery<T>(cls, field, prefix, query);
810
818
  const results = await this.query<T>(cls, resolvedQuery);
811
- return ModelQuerySuggestUtil.combineSuggestResults(cls, field, prefix, results, (_, b) => b, query?.limit);
819
+ return ModelQuerySuggestUtil.combineSuggestResults(cls, field, prefix, results, (_, b) => b, query);
812
820
  }
813
821
 
814
822
  // Other