@contember/engine-content-api 1.1.0-alpha.7 → 1.1.0-beta.1
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/dist/src/acl/Authorizator.d.ts +2 -1
- package/dist/src/acl/Authorizator.d.ts.map +1 -1
- package/dist/src/acl/Authorizator.js +4 -3
- package/dist/src/acl/Authorizator.js.map +1 -1
- package/dist/src/extensions/paginatedHasMany/PaginatedHasManyFieldProviderVisitor.d.ts.map +1 -1
- package/dist/src/extensions/paginatedHasMany/PaginatedHasManyFieldProviderVisitor.js +2 -0
- package/dist/src/extensions/paginatedHasMany/PaginatedHasManyFieldProviderVisitor.js.map +1 -1
- package/dist/src/mapper/Mapper.d.ts.map +1 -1
- package/dist/src/mapper/Mapper.js +10 -12
- package/dist/src/mapper/Mapper.js.map +1 -1
- package/dist/src/mapper/select/ConditionBuilder.d.ts +1 -1
- package/dist/src/mapper/select/ConditionBuilder.d.ts.map +1 -1
- package/dist/src/mapper/select/ConditionBuilder.js +5 -5
- package/dist/src/mapper/select/ConditionBuilder.js.map +1 -1
- package/dist/src/mapper/select/JoinBuilder.js +2 -2
- package/dist/src/mapper/select/JoinBuilder.js.map +1 -1
- package/dist/src/mapper/select/JoinVisitor.js +4 -4
- package/dist/src/mapper/select/JoinVisitor.js.map +1 -1
- package/dist/src/mapper/select/OrderByBuilder.js +2 -2
- package/dist/src/mapper/select/OrderByBuilder.js.map +1 -1
- package/dist/src/mapper/select/Path.d.ts +2 -1
- package/dist/src/mapper/select/Path.d.ts.map +1 -1
- package/dist/src/mapper/select/Path.js +3 -2
- package/dist/src/mapper/select/Path.js.map +1 -1
- package/dist/src/mapper/select/RelationFetcher.js +2 -2
- package/dist/src/mapper/select/RelationFetcher.js.map +1 -1
- package/dist/src/mapper/select/SelectBuilder.d.ts +1 -1
- package/dist/src/mapper/select/SelectBuilder.d.ts.map +1 -1
- package/dist/src/mapper/select/SelectBuilder.js +7 -10
- package/dist/src/mapper/select/SelectBuilder.js.map +1 -1
- package/dist/src/mapper/select/SelectHydrator.d.ts +2 -1
- package/dist/src/mapper/select/SelectHydrator.d.ts.map +1 -1
- package/dist/src/mapper/select/SelectHydrator.js +34 -11
- package/dist/src/mapper/select/SelectHydrator.js.map +1 -1
- package/dist/src/mapper/select/WhereBuilder.d.ts.map +1 -1
- package/dist/src/mapper/select/WhereBuilder.js +5 -4
- package/dist/src/mapper/select/WhereBuilder.js.map +1 -1
- package/dist/src/mapper/select/handlers/FieldsVisitor.js +2 -2
- package/dist/src/mapper/select/handlers/FieldsVisitor.js.map +1 -1
- package/dist/src/mapper/select/handlers/MetaHandler.js +1 -1
- package/dist/src/mapper/select/handlers/MetaHandler.js.map +1 -1
- package/dist/src/schema/CustomTypesProvider.d.ts.map +1 -1
- package/dist/src/schema/CustomTypesProvider.js +18 -3
- package/dist/src/schema/CustomTypesProvider.js.map +1 -1
- package/dist/src/schema/OrderByTypeProvider.d.ts.map +1 -1
- package/dist/src/schema/OrderByTypeProvider.js +2 -0
- package/dist/src/schema/OrderByTypeProvider.js.map +1 -1
- package/dist/src/tsconfig.tsbuildinfo +1 -1
- package/dist/tests/cases/integration/graphQlDb/update/invalidInput.test.js +0 -23
- package/dist/tests/cases/integration/graphQlDb/update/invalidInput.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/query/relations/oneHasMany.test.js +87 -0
- package/dist/tests/cases/integration/graphQlRequests/query/relations/oneHasMany.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/query/sorting/sortNulls.test.d.ts +2 -0
- package/dist/tests/cases/integration/graphQlRequests/query/sorting/sortNulls.test.d.ts.map +1 -0
- package/dist/tests/cases/integration/graphQlRequests/query/sorting/sortNulls.test.js +35 -0
- package/dist/tests/cases/integration/graphQlRequests/query/sorting/sortNulls.test.js.map +1 -0
- package/dist/tests/cases/integration/graphQlSchema/graphQlSchemaBuilder.test.js +1 -1
- package/dist/tests/cases/integration/graphQlSchema/graphQlSchemaBuilder.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlSchema/schema-acl-allowed.gql +2 -0
- package/dist/tests/cases/integration/graphQlSchema/schema-acl-predicate.gql +2 -0
- package/dist/tests/cases/integration/graphQlSchema/schema-acl-predicate2.gql +2 -0
- package/dist/tests/cases/integration/graphQlSchema/schema-acl-restricted-create.gql +2 -0
- package/dist/tests/cases/integration/graphQlSchema/schema-acl-restricted-delete.gql +2 -0
- package/dist/tests/cases/integration/graphQlSchema/schema-acl-restricted-update.gql +2 -0
- package/dist/tests/cases/integration/graphQlSchema/schema-acl.gql +2 -0
- package/dist/tests/cases/integration/graphQlSchema/schema-aliased-type.gql +2 -0
- package/dist/tests/cases/integration/graphQlSchema/schema-basic.gql +2 -0
- package/dist/tests/cases/integration/graphQlSchema/schema-bug-66.gql +2 -0
- package/dist/tests/cases/integration/graphQlSchema/schema-custom-primary.gql +2 -0
- package/dist/tests/cases/integration/graphQlSchema/schema-has-many-reduction.gql +2 -0
- package/dist/tests/cases/integration/graphQlSchema/schema-new-builder.gql +2 -0
- package/dist/tests/cases/integration/graphQlSchema/schema-view-entity.gql +2 -0
- package/dist/tests/cases/unit/uuidType.test.d.ts +2 -0
- package/dist/tests/cases/unit/uuidType.test.d.ts.map +1 -0
- package/dist/tests/cases/unit/uuidType.test.js +23 -0
- package/dist/tests/cases/unit/uuidType.test.js.map +1 -0
- package/dist/tests/src/test.js +1 -1
- package/dist/tests/src/test.js.map +1 -1
- package/dist/tests/tsconfig.tsbuildinfo +1 -1
- package/package.json +10 -10
- package/src/acl/Authorizator.ts +5 -2
- package/src/extensions/paginatedHasMany/PaginatedHasManyFieldProviderVisitor.ts +2 -0
- package/src/mapper/Mapper.ts +10 -13
- package/src/mapper/select/ConditionBuilder.ts +5 -4
- package/src/mapper/select/JoinBuilder.ts +2 -2
- package/src/mapper/select/JoinVisitor.ts +4 -4
- package/src/mapper/select/OrderByBuilder.ts +2 -2
- package/src/mapper/select/Path.ts +4 -2
- package/src/mapper/select/RelationFetcher.ts +2 -2
- package/src/mapper/select/SelectBuilder.ts +7 -11
- package/src/mapper/select/SelectHydrator.ts +52 -19
- package/src/mapper/select/WhereBuilder.ts +6 -3
- package/src/mapper/select/handlers/FieldsVisitor.ts +2 -2
- package/src/mapper/select/handlers/MetaHandler.ts +1 -1
- package/src/schema/CustomTypesProvider.ts +21 -4
- package/src/schema/OrderByTypeProvider.ts +2 -0
- package/tests/cases/integration/graphQlDb/update/invalidInput.test.ts +0 -26
- package/tests/cases/integration/graphQlRequests/query/relations/oneHasMany.test.ts +87 -0
- package/tests/cases/integration/graphQlRequests/query/sorting/sortNulls.test.ts +34 -0
- package/tests/cases/integration/graphQlSchema/graphQlSchemaBuilder.test.ts +1 -1
- package/tests/cases/integration/graphQlSchema/schema-acl-allowed.gql +2 -0
- package/tests/cases/integration/graphQlSchema/schema-acl-predicate.gql +2 -0
- package/tests/cases/integration/graphQlSchema/schema-acl-predicate2.gql +2 -0
- package/tests/cases/integration/graphQlSchema/schema-acl-restricted-create.gql +2 -0
- package/tests/cases/integration/graphQlSchema/schema-acl-restricted-delete.gql +2 -0
- package/tests/cases/integration/graphQlSchema/schema-acl-restricted-update.gql +2 -0
- package/tests/cases/integration/graphQlSchema/schema-acl.gql +2 -0
- package/tests/cases/integration/graphQlSchema/schema-aliased-type.gql +2 -0
- package/tests/cases/integration/graphQlSchema/schema-basic.gql +2 -0
- package/tests/cases/integration/graphQlSchema/schema-bug-66.gql +2 -0
- package/tests/cases/integration/graphQlSchema/schema-custom-primary.gql +2 -0
- package/tests/cases/integration/graphQlSchema/schema-has-many-reduction.gql +2 -0
- package/tests/cases/integration/graphQlSchema/schema-new-builder.gql +2 -0
- package/tests/cases/integration/graphQlSchema/schema-view-entity.gql +2 -0
- package/tests/cases/unit/uuidType.test.ts +25 -0
- package/tests/src/test.ts +1 -1
|
@@ -417,3 +417,90 @@ test('Posts with paginated comments without count (one has many)', async () => {
|
|
|
417
417
|
})
|
|
418
418
|
|
|
419
419
|
|
|
420
|
+
test('Posts with paginated comments (one has many)', async () => {
|
|
421
|
+
await execute({
|
|
422
|
+
schema: new SchemaBuilder()
|
|
423
|
+
.entity('Post', entity => entity.oneHasMany('comments', relation => relation.target('Comment').ownedBy('post')))
|
|
424
|
+
.entity('Comment', entity => entity.column('content').column('deletedAt', c => c.type(Model.ColumnType.DateTime)))
|
|
425
|
+
.buildSchema(),
|
|
426
|
+
query: GQL`
|
|
427
|
+
query {
|
|
428
|
+
listPost {
|
|
429
|
+
id
|
|
430
|
+
comments: paginateComments(filter: {deletedAt: {isNull: true}}, first: 1) {
|
|
431
|
+
pages: pageInfo {
|
|
432
|
+
count: totalCount
|
|
433
|
+
}
|
|
434
|
+
comments: edges {
|
|
435
|
+
comment: node {
|
|
436
|
+
content
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
`,
|
|
443
|
+
executes: [
|
|
444
|
+
{
|
|
445
|
+
sql: SQL`select
|
|
446
|
+
"root_"."id" as "root_id",
|
|
447
|
+
"root_"."id" as "root_id"
|
|
448
|
+
from "public"."post" as "root_"`,
|
|
449
|
+
response: {
|
|
450
|
+
rows: [{ root_id: testUuid(1) }],
|
|
451
|
+
},
|
|
452
|
+
},
|
|
453
|
+
{
|
|
454
|
+
sql: SQL`select
|
|
455
|
+
count(*) as "row_count", "root_"."post_id"
|
|
456
|
+
from "public"."comment" as "root_"
|
|
457
|
+
where "root_"."deleted_at" is null and "root_"."post_id" in (?)
|
|
458
|
+
group by "root_"."post_id"`,
|
|
459
|
+
parameters: [testUuid(1)],
|
|
460
|
+
response: {
|
|
461
|
+
rows: [
|
|
462
|
+
{ post_id: testUuid(1), row_count: 5 },
|
|
463
|
+
],
|
|
464
|
+
},
|
|
465
|
+
},
|
|
466
|
+
{
|
|
467
|
+
sql: SQL`with "data" as
|
|
468
|
+
(select
|
|
469
|
+
"root_"."post_id" as "__grouping_key",
|
|
470
|
+
"root_"."content" as "root_content",
|
|
471
|
+
"root_"."id" as "root_id",
|
|
472
|
+
row_number() over(partition by "root_"."post_id" order by "root_"."id" asc) as "rowNumber_"
|
|
473
|
+
from "public"."comment" as "root_"
|
|
474
|
+
where "root_"."deleted_at" is null
|
|
475
|
+
and "root_"."post_id" in (?)
|
|
476
|
+
order by "root_"."id" asc)
|
|
477
|
+
select "data".* from "data" where "data"."rowNumber_" <= ?`,
|
|
478
|
+
parameters: [testUuid(1), 1],
|
|
479
|
+
response: {
|
|
480
|
+
rows: [
|
|
481
|
+
{ __grouping_key: testUuid(1), root_id: testUuid(3), root_content: 'Lorem ipsum' },
|
|
482
|
+
],
|
|
483
|
+
},
|
|
484
|
+
},
|
|
485
|
+
],
|
|
486
|
+
return: {
|
|
487
|
+
data: {
|
|
488
|
+
listPost: [
|
|
489
|
+
{
|
|
490
|
+
id: testUuid(1),
|
|
491
|
+
comments: {
|
|
492
|
+
pages: {
|
|
493
|
+
count: 5,
|
|
494
|
+
},
|
|
495
|
+
comments: [
|
|
496
|
+
{
|
|
497
|
+
comment: { content: 'Lorem ipsum' },
|
|
498
|
+
},
|
|
499
|
+
],
|
|
500
|
+
},
|
|
501
|
+
},
|
|
502
|
+
],
|
|
503
|
+
},
|
|
504
|
+
},
|
|
505
|
+
})
|
|
506
|
+
})
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { test } from 'vitest'
|
|
2
|
+
import { execute } from '../../../../../src/test'
|
|
3
|
+
import { SchemaBuilder } from '@contember/schema-definition'
|
|
4
|
+
import { GQL, SQL } from '../../../../../src/tags'
|
|
5
|
+
|
|
6
|
+
test('order by desc nulls last', async () => {
|
|
7
|
+
await execute({
|
|
8
|
+
schema: new SchemaBuilder()
|
|
9
|
+
.entity('Post', entity => entity.column('title'))
|
|
10
|
+
.buildSchema(),
|
|
11
|
+
query: GQL`
|
|
12
|
+
query {
|
|
13
|
+
listPost(orderBy: {title: descNullsLast}) {
|
|
14
|
+
id
|
|
15
|
+
}
|
|
16
|
+
}`,
|
|
17
|
+
executes: [
|
|
18
|
+
{
|
|
19
|
+
sql: SQL`select
|
|
20
|
+
"root_"."id" as "root_id"
|
|
21
|
+
from "public"."post" as "root_" order by "root_"."title" desc nulls last, "root_"."id" asc`,
|
|
22
|
+
response: {
|
|
23
|
+
rows: [],
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
],
|
|
27
|
+
return: {
|
|
28
|
+
data: {
|
|
29
|
+
listPost: [],
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
})
|
|
33
|
+
})
|
|
34
|
+
|
|
@@ -26,7 +26,7 @@ const testSchema = async (test: Test) => {
|
|
|
26
26
|
const schema = schemaResult instanceof SchemaBuilder ? schemaResult.buildSchema() : schemaResult
|
|
27
27
|
const schemaWithAcl = { ...schema, acl: { roles: {}, variables: {} } }
|
|
28
28
|
const permissions = test.permissions(schemaWithAcl)
|
|
29
|
-
const authorizator = new Authorizator(permissions)
|
|
29
|
+
const authorizator = new Authorizator(permissions, false)
|
|
30
30
|
const graphQlSchemaBuilder = schemaFactory.create(schemaWithAcl, authorizator)
|
|
31
31
|
const graphQlSchema = graphQlSchemaBuilder.build()
|
|
32
32
|
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest'
|
|
2
|
+
import { CustomTypesProvider } from '../../../src'
|
|
3
|
+
|
|
4
|
+
describe('uuid graphql type', () => {
|
|
5
|
+
|
|
6
|
+
const customTypesProvider = new CustomTypesProvider()
|
|
7
|
+
it('accepts valid uuid', () => {
|
|
8
|
+
const validUuid = 'e0818cf9-eee3-4452-9a13-031435218473'
|
|
9
|
+
expect(customTypesProvider.uuidType.parseValue(validUuid)).eq(validUuid)
|
|
10
|
+
})
|
|
11
|
+
|
|
12
|
+
it('accepts valid uuid without dashes', () => {
|
|
13
|
+
const validUuid = 'e0818cf9eee344529a13031435218473'
|
|
14
|
+
expect(customTypesProvider.uuidType.parseValue(validUuid)).eq(validUuid)
|
|
15
|
+
})
|
|
16
|
+
|
|
17
|
+
it('declines invalid uuid', () => {
|
|
18
|
+
const invalidUuid = '818cf9-eee3-4452-9a13-031435218473'
|
|
19
|
+
expect(customTypesProvider.uuidType.parseValue(invalidUuid)).eq(undefined)
|
|
20
|
+
})
|
|
21
|
+
|
|
22
|
+
it('declines not-string', () => {
|
|
23
|
+
expect(customTypesProvider.uuidType.parseValue(1)).eq(undefined)
|
|
24
|
+
})
|
|
25
|
+
})
|
package/tests/src/test.ts
CHANGED
|
@@ -89,7 +89,7 @@ export const failedTransaction = (executes: SqlQuery[]): SqlQuery[] => {
|
|
|
89
89
|
|
|
90
90
|
export const execute = async (test: Test) => {
|
|
91
91
|
const permissions: Acl.Permissions = test.permissions || new AllowAllPermissionFactory().create(test.schema)
|
|
92
|
-
const authorizator = new Authorizator(permissions)
|
|
92
|
+
const authorizator = new Authorizator(permissions, false)
|
|
93
93
|
const builder = new GraphQlSchemaBuilderFactory().create(test.schema, authorizator)
|
|
94
94
|
const graphQLSchema = builder.build()
|
|
95
95
|
|