@travetto/model-query 5.0.0 → 5.0.2

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
@@ -57,14 +57,14 @@ export interface ModelQueryCrudSupport extends ModelCrudSupport, ModelQuerySuppo
57
57
  * @param data The data
58
58
  * @param query The additional query to validate
59
59
  */
60
- updateOneWithQuery<T extends ModelType>(cls: Class<T>, data: T, query: ModelQuery<T>): Promise<T>;
60
+ updateByQuery<T extends ModelType>(cls: Class<T>, data: T, query: ModelQuery<T>): Promise<T>;
61
61
  /**
62
- * Update/replace all with partial data, by query
62
+ * Update all with partial data, by query
63
63
  * @param cls The model class
64
64
  * @param query The query to search for
65
65
  * @param data The partial data
66
66
  */
67
- updateByQuery<T extends ModelType>(cls: Class<T>, query: ModelQuery<T>, data: Partial<T>): Promise<number>;
67
+ updatePartialByQuery<T extends ModelType>(cls: Class<T>, query: ModelQuery<T>, data: Partial<T>): Promise<number>;
68
68
  /**
69
69
  * Delete all by query
70
70
  * @param cls The model class
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@travetto/model-query",
3
- "version": "5.0.0",
3
+ "version": "5.0.2",
4
4
  "description": "Datastore abstraction for advanced query support.",
5
5
  "keywords": [
6
6
  "datastore",
@@ -26,12 +26,12 @@
26
26
  "directory": "module/model-query"
27
27
  },
28
28
  "dependencies": {
29
- "@travetto/di": "^5.0.0",
30
- "@travetto/model": "^5.0.0",
31
- "@travetto/schema": "^5.0.0"
29
+ "@travetto/di": "^5.0.2",
30
+ "@travetto/model": "^5.0.2",
31
+ "@travetto/schema": "^5.0.2"
32
32
  },
33
33
  "peerDependencies": {
34
- "@travetto/test": "^5.0.0"
34
+ "@travetto/test": "^5.0.2"
35
35
  },
36
36
  "peerDependenciesMeta": {
37
37
  "@travetto/test": {
@@ -1,3 +1,5 @@
1
+ import { hasFunction } from '@travetto/runtime';
2
+
1
3
  import type { ModelQueryCrudSupport } from '../../service/crud';
2
4
  import type { ModelQueryFacetSupport } from '../../service/facet';
3
5
  import type { ModelQuerySupport } from '../../service/query';
@@ -10,32 +12,20 @@ export class ModelQuerySuggestSupportTarget { }
10
12
 
11
13
  /**
12
14
  * Type guard for determining if service supports query operations
13
- * @param o
14
15
  */
15
- export function isQuerySupported(o: unknown): o is ModelQuerySupport {
16
- return !!o && typeof o === 'object' && 'query' in o && !!o.query;
17
- }
16
+ export const isQuerySupported = hasFunction<ModelQuerySupport>('query');
18
17
 
19
18
  /**
20
19
  * Type guard for determining if service supports query crud operations
21
- * @param o
22
20
  */
23
- export function isQueryCrudSupported(o: unknown): o is ModelQueryCrudSupport {
24
- return !!o && typeof o === 'object' && 'deleteByQuery' in o && !!o.deleteByQuery;
25
- }
21
+ export const isQueryCrudSupported = hasFunction<ModelQueryCrudSupport>('deleteByQuery');
26
22
 
27
23
  /**
28
24
  * Type guard for determining if service supports query facet operations
29
- * @param o
30
25
  */
31
- export function isQueryFacetSupported(o: unknown): o is ModelQueryFacetSupport {
32
- return !!o && typeof o === 'object' && 'facet' in o && !!o.facet;
33
- }
26
+ export const isQueryFacetSupported = hasFunction<ModelQueryFacetSupport>('facet');
34
27
 
35
28
  /**
36
29
  * Type guard for determining if service supports query suggest operations
37
- * @param o
38
30
  */
39
- export function isQuerySuggestSupported(o: unknown): o is ModelQuerySuggestSupport {
40
- return !!o && typeof o === 'object' && 'suggest' in o && !!o.suggest;
41
- }
31
+ export const isQuerySuggestSupported = hasFunction<ModelQuerySuggestSupport>('suggest');
@@ -15,14 +15,14 @@ export interface ModelQueryCrudSupport extends ModelCrudSupport, ModelQuerySuppo
15
15
  * @param data The data
16
16
  * @param query The additional query to validate
17
17
  */
18
- updateOneWithQuery<T extends ModelType>(cls: Class<T>, data: T, query: ModelQuery<T>): Promise<T>;
18
+ updateByQuery<T extends ModelType>(cls: Class<T>, data: T, query: ModelQuery<T>): Promise<T>;
19
19
  /**
20
- * Update/replace all with partial data, by query
20
+ * Update all with partial data, by query
21
21
  * @param cls The model class
22
22
  * @param query The query to search for
23
23
  * @param data The partial data
24
24
  */
25
- updateByQuery<T extends ModelType>(cls: Class<T>, query: ModelQuery<T>, data: Partial<T>): Promise<number>;
25
+ updatePartialByQuery<T extends ModelType>(cls: Class<T>, query: ModelQuery<T>, data: Partial<T>): Promise<number>;
26
26
  /**
27
27
  * Delete all by query
28
28
  * @param cls The model class
@@ -19,7 +19,7 @@ export abstract class ModelQueryCrudSuite extends BaseModelSuite<ModelQueryCrudS
19
19
  assert(todo1.id);
20
20
  assert(todo1.version === 0);
21
21
 
22
- const todo1v2 = await svc.updateOneWithQuery(Todo, Todo.from({
22
+ const todo1v2 = await svc.updateByQuery(Todo, Todo.from({
23
23
  id: todo1.id,
24
24
  text: `${todo1.text}!!`,
25
25
  version: todo1.version + 1
@@ -29,7 +29,7 @@ export abstract class ModelQueryCrudSuite extends BaseModelSuite<ModelQueryCrudS
29
29
  assert(todo1v2.version > todo1.version);
30
30
 
31
31
  await assert.rejects(
32
- () => svc.updateOneWithQuery(Todo, Todo.from({
32
+ () => svc.updateByQuery(Todo, Todo.from({
33
33
  id: todo1.id,
34
34
  text: `${todo1.text}!!`,
35
35
  version: todo1.version + 1
@@ -40,7 +40,7 @@ export abstract class ModelQueryCrudSuite extends BaseModelSuite<ModelQueryCrudS
40
40
 
41
41
  const todo2 = await svc.create(Todo, Todo.from({ text: 'bob2' }));
42
42
 
43
- const result = await svc.updateOneWithQuery(Todo, Todo.from({
43
+ const result = await svc.updateByQuery(Todo, Todo.from({
44
44
  id: todo2.id,
45
45
  text: `${todo1.text}!!`,
46
46
  version: todo1.version + 1
@@ -60,7 +60,7 @@ export abstract class ModelQueryCrudSuite extends BaseModelSuite<ModelQueryCrudS
60
60
 
61
61
  const todo1v = ['a', 'b', 'c', 'd', 'e'].map(x => Todo.from({ ...todo1, text: `${todo1.text}-${x}`, version: todo1.version + 1 }));
62
62
 
63
- const promises = todo1v.map(x => svc.updateOneWithQuery(Todo, x, { where: { version: todo1.version } }));
63
+ const promises = todo1v.map(x => svc.updateByQuery(Todo, x, { where: { version: todo1.version } }));
64
64
 
65
65
  const results = await Promise.allSettled(promises);
66
66
  const rejected = results.filter(x => x.status === 'rejected');
@@ -81,7 +81,7 @@ export abstract class ModelQueryCrudSuite extends BaseModelSuite<ModelQueryCrudS
81
81
  assert.deepStrictEqual(todo2, succeeded.value);
82
82
 
83
83
  const promises2 = ['a', 'b', 'c', 'd', 'e'].map(x => Todo.from({ ...todo2, text: `${todo2.text}-${x}`, version: todo2.version + 2 }));
84
- const results2 = await Promise.allSettled(promises2.map(x => svc.updateOneWithQuery(Todo, x, { where: { version: todo2.version + 1 } })));
84
+ const results2 = await Promise.allSettled(promises2.map(x => svc.updateByQuery(Todo, x, { where: { version: todo2.version + 1 } })));
85
85
  for (const el of results2) {
86
86
  assert(el.status === 'rejected');
87
87
  assert(el.reason instanceof NotFoundError);
@@ -137,7 +137,7 @@ export abstract class ModelQueryCrudSuite extends BaseModelSuite<ModelQueryCrudS
137
137
 
138
138
  assert(await svc.queryCount(Person, { where: { gender: 'm' } }) === 5);
139
139
 
140
- const c = await svc.updateByQuery(Person, { where: { age: { $gt: 3 } } }, { gender: 'f' });
140
+ const c = await svc.updatePartialByQuery(Person, { where: { age: { $gt: 3 } } }, { gender: 'f' });
141
141
 
142
142
  assert((await svc.query(Person, {}))[0].address.street1 === 'street1');
143
143
 
@@ -145,7 +145,7 @@ export abstract class ModelQueryCrudSuite extends BaseModelSuite<ModelQueryCrudS
145
145
 
146
146
  assert(await svc.queryCount(Person, { where: { gender: 'm' } }) === 3);
147
147
 
148
- const c2 = await svc.updateByQuery(Person, { where: { gender: 'm' } }, { gender: 'f' });
148
+ const c2 = await svc.updatePartialByQuery(Person, { where: { gender: 'm' } }, { gender: 'f' });
149
149
 
150
150
  assert(c2 === 3);
151
151
 
@@ -4,7 +4,8 @@ import { Suite, Test } from '@travetto/test';
4
4
  import { BaseModelSuite } from '@travetto/model/support/test/base';
5
5
  import { ModelCrudSupport } from '@travetto/model/src/service/crud';
6
6
  import { Doctor, Engineer, Worker, Firefighter } from '@travetto/model/support/test/polymorphism';
7
- import { NotFoundError } from '@travetto/model/src/error/not-found';
7
+ import { NotFoundError } from '@travetto/model';
8
+ import { castTo } from '@travetto/runtime';
8
9
 
9
10
  import { ModelQueryCrudSupport } from '../../src/service/crud';
10
11
  import { ModelQuerySupport } from '../../src/service/query';
@@ -12,7 +13,6 @@ import { ModelQueryFacetSupport } from '../../src/service/facet';
12
13
  import { ModelQuerySuggestSupport } from '../../src/service/suggest';
13
14
 
14
15
  import { isQueryCrudSupported, isQueryFacetSupported, isQuerySuggestSupported } from '../../src/internal/service/common';
15
- import { castTo } from '@travetto/runtime';
16
16
 
17
17
  @Suite()
18
18
  export abstract class ModelQueryPolymorphismSuite extends BaseModelSuite<ModelQuerySupport & ModelCrudSupport> {
@@ -55,7 +55,7 @@ export abstract class ModelQueryPolymorphismSuite extends BaseModelSuite<ModelQu
55
55
  await this.saveAll(Worker, [doc, doc2, fire, eng]);
56
56
  assert(await this.getSize(Worker) === 4);
57
57
 
58
- const c = await svc.updateByQuery(Doctor, { where: { specialty: 'feet' } }, { specialty: 'eyes' });
58
+ const c = await svc.updatePartialByQuery(Doctor, { where: { specialty: 'feet' } }, { specialty: 'eyes' });
59
59
  assert(c === 1);
60
60
 
61
61
  assert((await svc.queryCount(Doctor, { where: { specialty: 'eyes' } })) === 2);