@travetto/model-query 8.0.0-alpha.3 → 8.0.0-alpha.30
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 +24 -14
- package/__index__.ts +5 -6
- package/package.json +5 -5
- package/src/internal/types.ts +16 -10
- package/src/model/indexes.ts +36 -0
- package/src/model/query.ts +5 -7
- package/src/model/where-clause.ts +31 -29
- package/src/types/crud.ts +4 -4
- package/src/types/facet.ts +5 -5
- package/src/types/query.ts +2 -2
- package/src/types/suggest.ts +15 -5
- package/src/util/crud.ts +2 -2
- package/src/util/facet.ts +2 -2
- package/src/util/query.ts +29 -26
- package/src/util/suggest.ts +28 -11
- package/src/verifier.ts +24 -30
- package/support/doc.support.tsx +6 -7
- package/support/test/crud.ts +90 -52
- package/support/test/facet.ts +23 -15
- package/support/test/model.ts +34 -2
- package/support/test/polymorphism.ts +24 -26
- package/support/test/query.ts +353 -119
- package/support/test/suggest.ts +60 -8
|
@@ -1,24 +1,22 @@
|
|
|
1
1
|
import assert from 'node:assert';
|
|
2
2
|
|
|
3
|
-
import {
|
|
4
|
-
import { NotFoundError, type ModelCrudSupport } from '@travetto/model';
|
|
3
|
+
import { type ModelCrudSupport, NotFoundError } from '@travetto/model';
|
|
5
4
|
import { castTo } from '@travetto/runtime';
|
|
5
|
+
import { Suite, Test } from '@travetto/test';
|
|
6
6
|
|
|
7
7
|
import { BaseModelSuite } from '@travetto/model/support/test/base.ts';
|
|
8
|
-
import { Doctor, Engineer,
|
|
8
|
+
import { Doctor, Engineer, Firefighter, Worker } from '@travetto/model/support/test/polymorphism.ts';
|
|
9
9
|
|
|
10
10
|
import type { ModelQueryCrudSupport } from '../../src/types/crud.ts';
|
|
11
|
-
import type { ModelQuerySupport } from '../../src/types/query.ts';
|
|
12
11
|
import type { ModelQueryFacetSupport } from '../../src/types/facet.ts';
|
|
12
|
+
import type { ModelQuerySupport } from '../../src/types/query.ts';
|
|
13
13
|
import type { ModelQuerySuggestSupport } from '../../src/types/suggest.ts';
|
|
14
|
-
|
|
14
|
+
import { ModelQueryCrudUtil } from '../../src/util/crud.ts';
|
|
15
15
|
import { ModelQueryFacetUtil } from '../../src/util/facet.ts';
|
|
16
16
|
import { ModelQuerySuggestUtil } from '../../src/util/suggest.ts';
|
|
17
|
-
import { ModelQueryCrudUtil } from '../../src/util/crud.ts';
|
|
18
17
|
|
|
19
18
|
@Suite()
|
|
20
19
|
export abstract class ModelQueryPolymorphismSuite extends BaseModelSuite<ModelQuerySupport & ModelCrudSupport> {
|
|
21
|
-
|
|
22
20
|
@Test()
|
|
23
21
|
async testQuery() {
|
|
24
22
|
const svc = await this.service;
|
|
@@ -36,9 +34,9 @@ export abstract class ModelQueryPolymorphismSuite extends BaseModelSuite<ModelQu
|
|
|
36
34
|
assert((await svc.query(Doctor, {})).length === 2);
|
|
37
35
|
assert((await svc.query(Engineer, {})).length === 1);
|
|
38
36
|
|
|
39
|
-
assert(await svc.queryCount(Worker, { where: { name: 'bob' } }) === 1);
|
|
40
|
-
assert(await svc.queryCount(Doctor, { where: { name: 'bob' } }) === 1);
|
|
41
|
-
assert(await svc.queryCount(Engineer, { where: { name: 'bob' } }) === 0);
|
|
37
|
+
assert((await svc.queryCount(Worker, { where: { name: 'bob' } })) === 1);
|
|
38
|
+
assert((await svc.queryCount(Doctor, { where: { name: 'bob' } })) === 1);
|
|
39
|
+
assert((await svc.queryCount(Engineer, { where: { name: 'bob' } })) === 0);
|
|
42
40
|
|
|
43
41
|
assert((await svc.queryOne(Worker, { where: { name: 'bob' } })) instanceof Doctor);
|
|
44
42
|
await assert.rejects(() => svc.queryOne(Firefighter, { where: { name: 'bob' } }), NotFoundError);
|
|
@@ -55,7 +53,7 @@ export abstract class ModelQueryPolymorphismSuite extends BaseModelSuite<ModelQu
|
|
|
55
53
|
];
|
|
56
54
|
|
|
57
55
|
await this.saveAll(Worker, [doc, doc2, fire, eng]);
|
|
58
|
-
assert(await this.getSize(Worker) === 4);
|
|
56
|
+
assert((await this.getSize(Worker)) === 4);
|
|
59
57
|
|
|
60
58
|
const c = await svc.updatePartialByQuery(Doctor, { where: { specialty: 'feet' } }, { specialty: 'eyes' });
|
|
61
59
|
assert(c === 1);
|
|
@@ -66,8 +64,8 @@ export abstract class ModelQueryPolymorphismSuite extends BaseModelSuite<ModelQu
|
|
|
66
64
|
|
|
67
65
|
assert(removed === 1);
|
|
68
66
|
|
|
69
|
-
assert(await this.getSize(Worker) === 3);
|
|
70
|
-
assert(await this.getSize(Firefighter) === 0);
|
|
67
|
+
assert((await this.getSize(Worker)) === 3);
|
|
68
|
+
assert((await this.getSize(Firefighter)) === 0);
|
|
71
69
|
}
|
|
72
70
|
|
|
73
71
|
@Test({ skip: ModelQueryPolymorphismSuite.ifNot(ModelQuerySuggestUtil.isSupported) })
|
|
@@ -81,17 +79,17 @@ export abstract class ModelQueryPolymorphismSuite extends BaseModelSuite<ModelQu
|
|
|
81
79
|
];
|
|
82
80
|
|
|
83
81
|
await this.saveAll(Worker, [doc, doc2, fire, eng]);
|
|
84
|
-
assert(await this.getSize(Worker) === 4);
|
|
82
|
+
assert((await this.getSize(Worker)) === 4);
|
|
85
83
|
|
|
86
|
-
assert((await svc.
|
|
87
|
-
assert((await svc.
|
|
88
|
-
assert((await svc.
|
|
89
|
-
assert((await svc.
|
|
90
|
-
assert((await svc.
|
|
91
|
-
assert((await svc.
|
|
84
|
+
assert((await svc.suggestByQuery(Worker, 'name', '')).length === 4);
|
|
85
|
+
assert((await svc.suggestValuesByQuery(Worker, 'name', '')).length === 4);
|
|
86
|
+
assert((await svc.suggestByQuery(Worker, 'name', 'r')).length === 1);
|
|
87
|
+
assert((await svc.suggestByQuery(Worker, 'name', 'r'))[0] instanceof Firefighter);
|
|
88
|
+
assert((await svc.suggestByQuery(Doctor, 'name', 'r')).length === 0);
|
|
89
|
+
assert((await svc.suggestByQuery(Firefighter, 'name', 'r')).length === 1);
|
|
92
90
|
|
|
93
|
-
assert((await svc.
|
|
94
|
-
assert((await svc.
|
|
91
|
+
assert((await svc.suggestValuesByQuery(Firefighter, 'name', 'r')).length === 1);
|
|
92
|
+
assert((await svc.suggestValuesByQuery(Firefighter, 'name', 'r'))[0] === 'rob');
|
|
95
93
|
}
|
|
96
94
|
|
|
97
95
|
@Test({ skip: ModelQueryPolymorphismSuite.ifNot(ModelQueryFacetUtil.isSupported) })
|
|
@@ -105,10 +103,10 @@ export abstract class ModelQueryPolymorphismSuite extends BaseModelSuite<ModelQu
|
|
|
105
103
|
];
|
|
106
104
|
|
|
107
105
|
await this.saveAll(Worker, [doc, doc2, fire, eng]);
|
|
108
|
-
assert(await this.getSize(Worker) === 4);
|
|
106
|
+
assert((await this.getSize(Worker)) === 4);
|
|
109
107
|
|
|
110
|
-
assert((await svc.
|
|
111
|
-
const docFacet = await svc.
|
|
108
|
+
assert((await svc.facetByQuery(Worker, 'name')).length === 4);
|
|
109
|
+
const docFacet = await svc.facetByQuery(Doctor, 'specialty');
|
|
112
110
|
assert.deepStrictEqual(docFacet, [{ count: 2, key: 'eyes' }]);
|
|
113
111
|
}
|
|
114
|
-
}
|
|
112
|
+
}
|