@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.
- package/package.json +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.
|
|
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.
|
|
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>(
|
|
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
|
-
.
|
|
746
|
-
|
|
747
|
-
|
|
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?:
|
|
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
|
|
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?:
|
|
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
|
|
819
|
+
return ModelQuerySuggestUtil.combineSuggestResults(cls, field, prefix, results, (_, b) => b, query);
|
|
812
820
|
}
|
|
813
821
|
|
|
814
822
|
// Other
|