@travetto/model-query 8.0.0-alpha.14 → 8.0.0-alpha.16

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/README.md CHANGED
@@ -86,7 +86,7 @@ export interface ModelQueryFacetSupport extends ModelQuerySupport {
86
86
  * @param field The field to facet on
87
87
  * @param query Additional query filtering
88
88
  */
89
- facet<T extends ModelType>(cls: Class<T>, field: ValidStringFields<T>, query?: ModelQuery<T>): Promise<ModelQueryFacet[]>;
89
+ facetByQuery<T extends ModelType>(cls: Class<T>, field: ValidStringFields<T>, query?: ModelQuery<T>): Promise<ModelQueryFacet[]>;
90
90
  }
91
91
  ```
92
92
 
@@ -104,7 +104,7 @@ export interface ModelQuerySuggestSupport extends ModelQuerySupport {
104
104
  * @param prefix The search prefix for the given field
105
105
  * @param query A query to filter the search on, in addition to the prefix
106
106
  */
107
- suggest<T extends ModelType>(cls: Class<T>, field: ValidStringFields<T>, prefix?: string, query?: PageableModelQuery<T>): Promise<T[]>;
107
+ suggestByQuery<T extends ModelType>(cls: Class<T>, field: ValidStringFields<T>, prefix?: string, query?: PageableModelQuery<T>): Promise<T[]>;
108
108
  /**
109
109
  * Suggest distinct values for a given cls and a given field
110
110
  *
@@ -113,7 +113,7 @@ export interface ModelQuerySuggestSupport extends ModelQuerySupport {
113
113
  * @param prefix The search prefix for the given field
114
114
  * @param query A query to filter the search on, in addition to the prefix
115
115
  */
116
- suggestValues<T extends ModelType>(cls: Class<T>, field: ValidStringFields<T>, prefix?: string, query?: PageableModelQuery<T>): Promise<string[]>;
116
+ suggestValuesByQuery<T extends ModelType>(cls: Class<T>, field: ValidStringFields<T>, prefix?: string, query?: PageableModelQuery<T>): Promise<string[]>;
117
117
  }
118
118
  ```
119
119
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@travetto/model-query",
3
- "version": "8.0.0-alpha.14",
3
+ "version": "8.0.0-alpha.16",
4
4
  "type": "module",
5
5
  "description": "Datastore abstraction for advanced query support.",
6
6
  "keywords": [
@@ -27,12 +27,12 @@
27
27
  "directory": "module/model-query"
28
28
  },
29
29
  "dependencies": {
30
- "@travetto/di": "^8.0.0-alpha.12",
31
- "@travetto/model": "^8.0.0-alpha.13",
32
- "@travetto/schema": "^8.0.0-alpha.13"
30
+ "@travetto/di": "^8.0.0-alpha.14",
31
+ "@travetto/model": "^8.0.0-alpha.15",
32
+ "@travetto/schema": "^8.0.0-alpha.15"
33
33
  },
34
34
  "peerDependencies": {
35
- "@travetto/test": "^8.0.0-alpha.12"
35
+ "@travetto/test": "^8.0.0-alpha.14"
36
36
  },
37
37
  "peerDependenciesMeta": {
38
38
  "@travetto/test": {
@@ -1,10 +1,11 @@
1
- import type { Primitive, ValidFields, TimeSpan } from '@travetto/runtime';
1
+ import type { Primitive, ValidFields, TimeSpan, ValidTypedFields } from '@travetto/runtime';
2
2
  import type { Point } from '@travetto/schema';
3
3
 
4
4
  export type QueryPrimitive = Primitive | Date | Point;
5
5
  export type QueryPrimitiveArray = QueryPrimitive[];
6
6
  export type DistanceUnit = 'mi' | 'm' | 'km' | 'ft' | 'rad';
7
7
  export type RetainQueryPrimitiveFields<T> = Pick<T, ValidFields<T, QueryPrimitive>>;
8
+ export type ValidStringFields<T> = ValidTypedFields<T, String | string | string[] | String[] | undefined>;
8
9
 
9
10
  type General<T> = {
10
11
  $eq?: T;
@@ -67,11 +68,3 @@ export type WhereClauseRaw<T> =
67
68
  * Full where clause, typed against the input type T
68
69
  */
69
70
  export type WhereClause<T> = WhereClauseRaw<RetainQueryPrimitiveFields<T>>;
70
-
71
- /**
72
- * Provides all the valid string type fields from a given type T
73
- */
74
- export type ValidStringFields<T> = {
75
- [K in Extract<keyof T, string>]:
76
- (T[K] extends (String | string | string[] | String[] | undefined) ? K : never)
77
- }[Extract<keyof T, string>];
@@ -18,5 +18,5 @@ export interface ModelQueryFacetSupport extends ModelQuerySupport {
18
18
  * @param field The field to facet on
19
19
  * @param query Additional query filtering
20
20
  */
21
- facet<T extends ModelType>(cls: Class<T>, field: ValidStringFields<T>, query?: ModelQuery<T>): Promise<ModelQueryFacet[]>;
21
+ facetByQuery<T extends ModelType>(cls: Class<T>, field: ValidStringFields<T>, query?: ModelQuery<T>): Promise<ModelQueryFacet[]>;
22
22
  }
@@ -18,7 +18,7 @@ export interface ModelQuerySuggestSupport extends ModelQuerySupport {
18
18
  * @param prefix The search prefix for the given field
19
19
  * @param query A query to filter the search on, in addition to the prefix
20
20
  */
21
- suggest<T extends ModelType>(cls: Class<T>, field: ValidStringFields<T>, prefix?: string, query?: PageableModelQuery<T>): Promise<T[]>;
21
+ suggestByQuery<T extends ModelType>(cls: Class<T>, field: ValidStringFields<T>, prefix?: string, query?: PageableModelQuery<T>): Promise<T[]>;
22
22
  /**
23
23
  * Suggest distinct values for a given cls and a given field
24
24
  *
@@ -27,5 +27,5 @@ export interface ModelQuerySuggestSupport extends ModelQuerySupport {
27
27
  * @param prefix The search prefix for the given field
28
28
  * @param query A query to filter the search on, in addition to the prefix
29
29
  */
30
- suggestValues<T extends ModelType>(cls: Class<T>, field: ValidStringFields<T>, prefix?: string, query?: PageableModelQuery<T>): Promise<string[]>;
30
+ suggestValuesByQuery<T extends ModelType>(cls: Class<T>, field: ValidStringFields<T>, prefix?: string, query?: PageableModelQuery<T>): Promise<string[]>;
31
31
  }
package/src/util/facet.ts CHANGED
@@ -6,5 +6,5 @@ export class ModelQueryFacetUtil {
6
6
  /**
7
7
  * Type guard for determining if service supports query facet operations
8
8
  */
9
- static isSupported = hasFunction<ModelQueryFacetSupport>('facet');
9
+ static isSupported = hasFunction<ModelQueryFacetSupport>('facetByQuery');
10
10
  }
@@ -14,7 +14,7 @@ export class ModelQuerySuggestUtil {
14
14
  /**
15
15
  * Type guard for determining if service supports query suggest operations
16
16
  */
17
- static isSupported = hasFunction<ModelQuerySuggestSupport>('suggest');
17
+ static isSupported = hasFunction<ModelQuerySuggestSupport>('suggestByQuery');
18
18
 
19
19
  /**
20
20
  * Build regex for suggesting
@@ -36,7 +36,7 @@ export abstract class ModelQueryFacetSuite extends BaseModelSuite<ModelQueryFace
36
36
 
37
37
  assert(saved === 50);
38
38
 
39
- const results = await svc.facet(Person, 'gender');
39
+ const results = await svc.facetByQuery(Person, 'gender');
40
40
 
41
41
  assert(results.length === 2);
42
42
  assert(results[0].count >= results[1].count);
@@ -51,7 +51,7 @@ export abstract class ModelQueryFacetSuite extends BaseModelSuite<ModelQueryFace
51
51
  names[el.name!] = (names[el.name!] || 0) + 1;
52
52
  }
53
53
 
54
- const nameFacet = await svc.facet(Person, 'name');
54
+ const nameFacet = await svc.facetByQuery(Person, 'name');
55
55
  assert(Object.keys(names).length === nameFacet.length);
56
56
  }
57
57
  }
@@ -83,15 +83,15 @@ export abstract class ModelQueryPolymorphismSuite extends BaseModelSuite<ModelQu
83
83
  await this.saveAll(Worker, [doc, doc2, fire, eng]);
84
84
  assert(await this.getSize(Worker) === 4);
85
85
 
86
- assert((await svc.suggest(Worker, 'name', '')).length === 4);
87
- assert((await svc.suggestValues(Worker, 'name', '')).length === 4);
88
- assert((await svc.suggest(Worker, 'name', 'r')).length === 1);
89
- assert((await svc.suggest(Worker, 'name', 'r'))[0] instanceof Firefighter);
90
- assert((await svc.suggest(Doctor, 'name', 'r')).length === 0);
91
- assert((await svc.suggest(Firefighter, 'name', 'r')).length === 1);
92
-
93
- assert((await svc.suggestValues(Firefighter, 'name', 'r')).length === 1);
94
- assert((await svc.suggestValues(Firefighter, 'name', 'r'))[0] === 'rob');
86
+ assert((await svc.suggestByQuery(Worker, 'name', '')).length === 4);
87
+ assert((await svc.suggestValuesByQuery(Worker, 'name', '')).length === 4);
88
+ assert((await svc.suggestByQuery(Worker, 'name', 'r')).length === 1);
89
+ assert((await svc.suggestByQuery(Worker, 'name', 'r'))[0] instanceof Firefighter);
90
+ assert((await svc.suggestByQuery(Doctor, 'name', 'r')).length === 0);
91
+ assert((await svc.suggestByQuery(Firefighter, 'name', 'r')).length === 1);
92
+
93
+ assert((await svc.suggestValuesByQuery(Firefighter, 'name', 'r')).length === 1);
94
+ assert((await svc.suggestValuesByQuery(Firefighter, 'name', 'r'))[0] === 'rob');
95
95
  }
96
96
 
97
97
  @Test({ skip: ModelQueryPolymorphismSuite.ifNot(ModelQueryFacetUtil.isSupported) })
@@ -107,8 +107,8 @@ export abstract class ModelQueryPolymorphismSuite extends BaseModelSuite<ModelQu
107
107
  await this.saveAll(Worker, [doc, doc2, fire, eng]);
108
108
  assert(await this.getSize(Worker) === 4);
109
109
 
110
- assert((await svc.facet(Worker, 'name')).length === 4);
111
- const docFacet = await svc.facet(Doctor, 'specialty');
110
+ assert((await svc.facetByQuery(Worker, 'name')).length === 4);
111
+ const docFacet = await svc.facetByQuery(Doctor, 'specialty');
112
112
  assert.deepStrictEqual(docFacet, [{ count: 2, key: 'eyes' }]);
113
113
  }
114
114
  }
@@ -33,13 +33,13 @@ export abstract class ModelQuerySuggestSuite extends BaseModelSuite<ModelQuerySu
33
33
 
34
34
  await this.#loadPeople();
35
35
 
36
- let suggested = await service.suggestValues(Person, 'name', 'bo');
36
+ let suggested = await service.suggestValuesByQuery(Person, 'name', 'bo');
37
37
  assert(suggested.length === 2);
38
38
 
39
- suggested = await service.suggestValues(Person, 'name', 'b');
39
+ suggested = await service.suggestValuesByQuery(Person, 'name', 'b');
40
40
  assert(suggested.length === 3);
41
41
 
42
- suggested = await service.suggestValues(Person, 'name', 'b', {
42
+ suggested = await service.suggestValuesByQuery(Person, 'name', 'b', {
43
43
  where: {
44
44
  address: {
45
45
  street2: {
@@ -57,7 +57,7 @@ export abstract class ModelQuerySuggestSuite extends BaseModelSuite<ModelQuerySu
57
57
 
58
58
  await this.#loadPeople();
59
59
 
60
- const suggestedEntities = await service.suggest(Person, 'name', 'bo');
60
+ const suggestedEntities = await service.suggestByQuery(Person, 'name', 'bo');
61
61
 
62
62
  assert(suggestedEntities.length === 2);
63
63
  assert(suggestedEntities[0].name === 'Bo');