@contember/engine-content-api 1.2.0-alpha.2 → 1.2.0-alpha.5
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/VariableInjector.d.ts +0 -1
- package/dist/src/acl/VariableInjector.d.ts.map +1 -1
- package/dist/src/acl/VariableInjector.js +4 -16
- package/dist/src/acl/VariableInjector.js.map +1 -1
- package/dist/src/acl/VariableUtils.d.ts +2 -13
- package/dist/src/acl/VariableUtils.d.ts.map +1 -1
- package/dist/src/acl/VariableUtils.js +6 -23
- package/dist/src/acl/VariableUtils.js.map +1 -1
- package/dist/src/input-validation/EntityRulesResolver.js +3 -3
- package/dist/src/input-validation/EntityRulesResolver.js.map +1 -1
- package/dist/src/input-validation/ValidationContext.d.ts +2 -2
- package/dist/src/input-validation/ValidationContext.d.ts.map +1 -1
- package/dist/src/input-validation/ValidationContext.js.map +1 -1
- package/dist/src/introspection/content-schema.types.d.ts +19 -223
- package/dist/src/introspection/content-schema.types.d.ts.map +1 -1
- package/dist/src/introspection/content-schema.types.js +2 -2
- package/dist/src/introspection/content-schema.types.js.map +1 -1
- package/dist/src/resolvers/GraphQlQueryAstFactory.js +2 -2
- package/dist/src/resolvers/GraphQlQueryAstFactory.js.map +1 -1
- package/dist/src/resolvers/MutationResolver.js +14 -14
- package/dist/src/resolvers/MutationResolver.js.map +1 -1
- package/dist/src/resolvers/ReadHelpers.js +7 -7
- package/dist/src/resolvers/ReadHelpers.js.map +1 -1
- package/dist/src/schema/MutationProvider.js +4 -4
- package/dist/src/schema/MutationProvider.js.map +1 -1
- package/dist/src/schema/QueryProvider.js +3 -3
- package/dist/src/schema/QueryProvider.js.map +1 -1
- package/dist/src/schema/ResultSchemaTypeProvider.d.ts +2 -2
- package/dist/src/schema/ResultSchemaTypeProvider.d.ts.map +1 -1
- package/dist/src/schema/entities/FieldArgsVisitor.d.ts +4 -4
- package/dist/src/schema/entities/FieldArgsVisitor.d.ts.map +1 -1
- package/dist/src/tsconfig.tsbuildinfo +1 -1
- package/dist/tests/cases/integration/graphQlDb/insert/insertSequence.test.d.ts +2 -0
- package/dist/tests/cases/integration/graphQlDb/insert/insertSequence.test.d.ts.map +1 -0
- package/dist/tests/cases/integration/graphQlDb/insert/insertSequence.test.js +38 -0
- package/dist/tests/cases/integration/graphQlDb/insert/insertSequence.test.js.map +1 -0
- package/dist/tests/cases/integration/graphQlRequests/delete/aclDelete.test.js +1 -6
- package/dist/tests/cases/integration/graphQlRequests/delete/aclDelete.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/insert/acl/setField.test.js +2 -12
- package/dist/tests/cases/integration/graphQlRequests/insert/acl/setField.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/insert/aclInsert.test.js +1 -6
- package/dist/tests/cases/integration/graphQlRequests/insert/aclInsert.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/query/acl/fieldRestrictedByLocale.test.js +4 -24
- package/dist/tests/cases/integration/graphQlRequests/query/acl/fieldRestrictedByLocale.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/query/acl/nestedPredicate.test.js +1 -6
- package/dist/tests/cases/integration/graphQlRequests/query/acl/nestedPredicate.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/acl/aclUpdate.test.js +4 -24
- package/dist/tests/cases/integration/graphQlRequests/update/acl/aclUpdate.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlSchema/graphQlSchemaBuilder.test.js +6 -3
- package/dist/tests/cases/integration/graphQlSchema/graphQlSchemaBuilder.test.js.map +1 -1
- package/dist/tests/cases/unit/aclVariablesFactory.test.js +4 -32
- package/dist/tests/cases/unit/aclVariablesFactory.test.js.map +1 -1
- package/dist/tests/cases/unit/orderbyHelper.test.js +1 -0
- package/dist/tests/cases/unit/orderbyHelper.test.js.map +1 -1
- package/dist/tests/cases/unit/predicatesInjector.test.js +1 -6
- package/dist/tests/cases/unit/predicatesInjector.test.js.map +1 -1
- package/dist/tests/cases/unit/variableInjector.test.js +2 -13
- package/dist/tests/cases/unit/variableInjector.test.js.map +1 -1
- package/dist/tests/src/testGraphql.d.ts.map +1 -1
- package/dist/tests/src/testGraphql.js +6 -1
- package/dist/tests/src/testGraphql.js.map +1 -1
- package/dist/tests/tsconfig.tsbuildinfo +1 -1
- package/graphql.codegen.yml +0 -3
- package/package.json +16 -16
- package/src/acl/VariableInjector.ts +2 -17
- package/src/acl/VariableUtils.ts +7 -28
- package/src/input-validation/EntityRulesResolver.ts +3 -3
- package/src/input-validation/ValidationContext.ts +2 -2
- package/src/introspection/content-schema.types.ts +19 -286
- package/src/resolvers/GraphQlQueryAstFactory.ts +3 -3
- package/tests/cases/integration/graphQlDb/insert/insertSequence.test.ts +34 -0
- package/tests/cases/integration/graphQlRequests/delete/aclDelete.test.ts +1 -6
- package/tests/cases/integration/graphQlRequests/insert/acl/setField.test.ts +2 -12
- package/tests/cases/integration/graphQlRequests/insert/aclInsert.test.ts +1 -6
- package/tests/cases/integration/graphQlRequests/query/acl/fieldRestrictedByLocale.test.ts +4 -24
- package/tests/cases/integration/graphQlRequests/query/acl/nestedPredicate.test.ts +1 -6
- package/tests/cases/integration/graphQlRequests/update/acl/aclUpdate.test.ts +5 -25
- package/tests/cases/integration/graphQlSchema/graphQlSchemaBuilder.test.ts +5 -5
- package/tests/cases/unit/aclVariablesFactory.test.ts +5 -34
- package/tests/cases/unit/orderbyHelper.test.ts +1 -0
- package/tests/cases/unit/predicatesInjector.test.ts +1 -6
- package/tests/cases/unit/variableInjector.test.ts +2 -13
- package/tests/src/testGraphql.ts +6 -1
package/graphql.codegen.yml
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@contember/engine-content-api",
|
|
3
|
-
"version": "1.2.0-alpha.
|
|
3
|
+
"version": "1.2.0-alpha.5",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"main": "dist/src/index.js",
|
|
6
6
|
"typings": "dist/src/index.d.ts",
|
|
@@ -10,25 +10,25 @@
|
|
|
10
10
|
"test": "vitest --no-threads"
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@contember/database": "^1.2.0-alpha.
|
|
14
|
-
"@contember/dic": "^1.2.0-alpha.
|
|
15
|
-
"@contember/engine-common": "^1.2.0-alpha.
|
|
16
|
-
"@contember/graphql-utils": "^1.2.0-alpha.
|
|
17
|
-
"@contember/schema": "^1.2.0-alpha.
|
|
18
|
-
"@contember/schema-utils": "^1.2.0-alpha.
|
|
13
|
+
"@contember/database": "^1.2.0-alpha.5",
|
|
14
|
+
"@contember/dic": "^1.2.0-alpha.5",
|
|
15
|
+
"@contember/engine-common": "^1.2.0-alpha.5",
|
|
16
|
+
"@contember/graphql-utils": "^1.2.0-alpha.5",
|
|
17
|
+
"@contember/schema": "^1.2.0-alpha.5",
|
|
18
|
+
"@contember/schema-utils": "^1.2.0-alpha.5",
|
|
19
19
|
"@graphql-tools/schema": "^8.3.5",
|
|
20
20
|
"graphql-tag": "^2.12.5"
|
|
21
21
|
},
|
|
22
22
|
"devDependencies": {
|
|
23
|
-
"@contember/database-tester": "^1.2.0-alpha.
|
|
24
|
-
"@contember/engine-api-tester": "^1.2.0-alpha.
|
|
25
|
-
"@contember/schema-definition": "^1.2.0-alpha.
|
|
26
|
-
"@graphql-codegen/cli": "^
|
|
27
|
-
"@graphql-codegen/typescript": "^
|
|
28
|
-
"@graphql-codegen/typescript-operations": "^
|
|
29
|
-
"@graphql-codegen/typescript-resolvers": "^
|
|
30
|
-
"@types/node": "^
|
|
31
|
-
"graphql": "^
|
|
23
|
+
"@contember/database-tester": "^1.2.0-alpha.5",
|
|
24
|
+
"@contember/engine-api-tester": "^1.2.0-alpha.5",
|
|
25
|
+
"@contember/schema-definition": "^1.2.0-alpha.5",
|
|
26
|
+
"@graphql-codegen/cli": "^2.6.2",
|
|
27
|
+
"@graphql-codegen/typescript": "^2.5.1",
|
|
28
|
+
"@graphql-codegen/typescript-operations": "^2.4.2",
|
|
29
|
+
"@graphql-codegen/typescript-resolvers": "^2.6.6",
|
|
30
|
+
"@types/node": "^16",
|
|
31
|
+
"graphql": "^16.5.0",
|
|
32
32
|
"pg": "^8.5.0"
|
|
33
33
|
},
|
|
34
34
|
"peerDependencies": {
|
|
@@ -10,31 +10,16 @@ export class VariableInjector {
|
|
|
10
10
|
return predicateDefinitionProcessor.process(entity, where, {
|
|
11
11
|
handleColumn: ({ value }) => {
|
|
12
12
|
if (typeof value === 'string') {
|
|
13
|
-
return this.
|
|
13
|
+
return this.variables[value] ?? { never: true }
|
|
14
14
|
}
|
|
15
15
|
return value as Input.Condition
|
|
16
16
|
},
|
|
17
17
|
handleRelation: ({ value, targetEntity }) => {
|
|
18
18
|
if (typeof value === 'string') {
|
|
19
|
-
return { [targetEntity.primary]: this.
|
|
19
|
+
return { [targetEntity.primary]: this.variables[value] ?? { never: true } }
|
|
20
20
|
}
|
|
21
21
|
return value
|
|
22
22
|
},
|
|
23
23
|
})
|
|
24
24
|
}
|
|
25
|
-
|
|
26
|
-
private createCondition(variable: Acl.VariableMapEntry | undefined): Input.Condition {
|
|
27
|
-
if (variable === undefined || variable.value.length === 0) {
|
|
28
|
-
return { never: true }
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
const { value, definition } = variable
|
|
32
|
-
if (definition.type === Acl.VariableType.condition) {
|
|
33
|
-
if (value.length === 1) {
|
|
34
|
-
return value[0] as Input.Condition
|
|
35
|
-
}
|
|
36
|
-
return { or: value as Input.Condition[] }
|
|
37
|
-
}
|
|
38
|
-
return { in: value as (string | number)[] }
|
|
39
|
-
}
|
|
40
25
|
}
|
package/src/acl/VariableUtils.ts
CHANGED
|
@@ -1,41 +1,20 @@
|
|
|
1
|
-
import { Acl } from '@contember/schema'
|
|
2
|
-
import { getRoleVariables } from '@contember/schema-utils'
|
|
1
|
+
import { Acl, Input } from '@contember/schema'
|
|
2
|
+
import { getRoleVariables, ParsedMembership } from '@contember/schema-utils'
|
|
3
3
|
|
|
4
|
-
type Memberships = readonly { role: string; variables: readonly { name: string; values: readonly string[] }[] }[]
|
|
5
4
|
|
|
6
5
|
export const createAclVariables = (
|
|
7
6
|
aclSchema: Acl.Schema,
|
|
8
|
-
|
|
9
|
-
identityId: string
|
|
10
|
-
personId: string | null
|
|
11
|
-
memberships: Memberships
|
|
12
|
-
},
|
|
7
|
+
memberships: readonly ParsedMembership[],
|
|
13
8
|
): Acl.VariablesMap => {
|
|
14
9
|
|
|
15
|
-
const variablesEntries =
|
|
10
|
+
const variablesEntries = memberships.flatMap(
|
|
16
11
|
membership => {
|
|
17
12
|
const roleVariables = getRoleVariables(membership.role, aclSchema)
|
|
18
|
-
const membershipVariablesMap = Object.fromEntries(membership.variables.map(it => [it.name, it.
|
|
13
|
+
const membershipVariablesMap = Object.fromEntries(membership.variables.map(it => [it.name, it.condition]))
|
|
19
14
|
|
|
20
|
-
return Object.
|
|
15
|
+
return Object.keys(roleVariables).map((name): [string, Input.Condition] => {
|
|
21
16
|
const prefixed = prefixVariable(membership.role, name)
|
|
22
|
-
|
|
23
|
-
switch (def.type) {
|
|
24
|
-
case Acl.VariableType.entity:
|
|
25
|
-
return membershipVariablesMap[name] ?? []
|
|
26
|
-
case Acl.VariableType.predefined:
|
|
27
|
-
switch (def.value) {
|
|
28
|
-
case 'identityID':
|
|
29
|
-
return [identity.identityId]
|
|
30
|
-
case 'personID':
|
|
31
|
-
return identity.personId ? [identity.personId] : []
|
|
32
|
-
}
|
|
33
|
-
throw new Error(`Unknown predefined variable ${def.value}`)
|
|
34
|
-
case Acl.VariableType.condition:
|
|
35
|
-
return (membershipVariablesMap[name] ?? []).map(it => JSON.parse(it))
|
|
36
|
-
}
|
|
37
|
-
})()
|
|
38
|
-
return [prefixed, { value: value, definition: def }]
|
|
17
|
+
return [prefixed, membershipVariablesMap[name] ?? { never: true }]
|
|
39
18
|
})
|
|
40
19
|
},
|
|
41
20
|
)
|
|
@@ -35,7 +35,7 @@ export class EntityRulesResolver {
|
|
|
35
35
|
|
|
36
36
|
public getEntityRules(entityName: string): Validation.EntityRules {
|
|
37
37
|
const definedRules = this.validationSchema[entityName] || {}
|
|
38
|
-
const fieldsNotNullFlag = acceptEveryFieldVisitor(this.model, entityName, new
|
|
38
|
+
const fieldsNotNullFlag = acceptEveryFieldVisitor(this.model, entityName, new RequiredFieldsVisitor())
|
|
39
39
|
const notNullFields = Object.keys(filterObject(fieldsNotNullFlag, (field, val) => val))
|
|
40
40
|
return notNullFields.reduce(
|
|
41
41
|
(entityRules, field) => ({
|
|
@@ -50,9 +50,9 @@ export class EntityRulesResolver {
|
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
-
class
|
|
53
|
+
class RequiredFieldsVisitor implements Model.RelationByTypeVisitor<boolean>, Model.ColumnVisitor<boolean> {
|
|
54
54
|
visitColumn(entity: Model.Entity, column: Model.AnyColumn): boolean {
|
|
55
|
-
return !column.nullable
|
|
55
|
+
return !column.nullable && typeof column.default === 'undefined' && !column.sequence
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
visitManyHasManyInverse(): boolean {
|
|
@@ -10,7 +10,7 @@ namespace ValidationContext {
|
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
export type NodeType = Value.Object
|
|
13
|
-
export type ValueType = Value.FieldValue
|
|
13
|
+
export type ValueType = Value.FieldValue | undefined
|
|
14
14
|
|
|
15
15
|
export enum NodeContextType {
|
|
16
16
|
value = 'value',
|
|
@@ -69,7 +69,7 @@ namespace ValidationContext {
|
|
|
69
69
|
|
|
70
70
|
export const createSingleNodeContext = (
|
|
71
71
|
parent: NodeContext | ValueContext,
|
|
72
|
-
value:
|
|
72
|
+
value: ValueType,
|
|
73
73
|
): NodeContext | ValueContext => {
|
|
74
74
|
if (Array.isArray(value)) {
|
|
75
75
|
throw new Error('Nested arrays are not allowed')
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import { GraphQLResolveInfo, GraphQLScalarType, GraphQLScalarTypeConfig } from 'graphql'
|
|
2
1
|
export type Maybe<T> = T | null
|
|
2
|
+
export type InputMaybe<T> = Maybe<T>
|
|
3
3
|
export type Exact<T extends { [key: string]: unknown }> = { [K in keyof T]: T[K] }
|
|
4
4
|
export type MakeOptional<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]?: Maybe<T[SubKey]> }
|
|
5
5
|
export type MakeMaybe<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]: Maybe<T[SubKey]> }
|
|
6
|
-
export type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>
|
|
7
6
|
/** All built-in and custom scalars, mapped to their actual values */
|
|
8
7
|
export type Scalars = {
|
|
9
8
|
ID: string
|
|
@@ -14,30 +13,29 @@ export type Scalars = {
|
|
|
14
13
|
Json: any
|
|
15
14
|
}
|
|
16
15
|
|
|
17
|
-
|
|
18
16
|
export type Query = {
|
|
19
17
|
readonly __typename?: 'Query'
|
|
20
18
|
readonly schema?: Maybe<_Schema>
|
|
21
19
|
}
|
|
22
20
|
|
|
23
|
-
export type _Argument =
|
|
21
|
+
export type _Argument = _LiteralArgument | _PathArgument | _ValidatorArgument
|
|
24
22
|
|
|
25
23
|
export type _Column = _Field & {
|
|
26
24
|
readonly __typename?: '_Column'
|
|
27
|
-
readonly name: Scalars['String']
|
|
28
|
-
readonly type: Scalars['String']
|
|
29
|
-
readonly enumName?: Maybe<Scalars['String']>
|
|
30
25
|
readonly defaultValue?: Maybe<Scalars['Json']>
|
|
26
|
+
readonly enumName?: Maybe<Scalars['String']>
|
|
27
|
+
readonly name: Scalars['String']
|
|
31
28
|
readonly nullable: Scalars['Boolean']
|
|
32
29
|
readonly rules: ReadonlyArray<_Rule>
|
|
30
|
+
readonly type: Scalars['String']
|
|
33
31
|
readonly validators: ReadonlyArray<_Validator>
|
|
34
32
|
}
|
|
35
33
|
|
|
36
34
|
export type _Entity = {
|
|
37
35
|
readonly __typename?: '_Entity'
|
|
38
|
-
readonly name: Scalars['String']
|
|
39
36
|
readonly customPrimaryAllowed: Scalars['Boolean']
|
|
40
37
|
readonly fields: ReadonlyArray<_Field>
|
|
38
|
+
readonly name: Scalars['String']
|
|
41
39
|
readonly unique: ReadonlyArray<_UniqueConstraint>
|
|
42
40
|
}
|
|
43
41
|
|
|
@@ -49,9 +47,9 @@ export type _Enum = {
|
|
|
49
47
|
|
|
50
48
|
export type _Field = {
|
|
51
49
|
readonly name: Scalars['String']
|
|
52
|
-
readonly type: Scalars['String']
|
|
53
50
|
readonly nullable?: Maybe<Scalars['Boolean']>
|
|
54
51
|
readonly rules: ReadonlyArray<_Rule>
|
|
52
|
+
readonly type: Scalars['String']
|
|
55
53
|
readonly validators: ReadonlyArray<_Validator>
|
|
56
54
|
}
|
|
57
55
|
|
|
@@ -61,15 +59,15 @@ export type _LiteralArgument = {
|
|
|
61
59
|
}
|
|
62
60
|
|
|
63
61
|
export enum _OnDeleteBehaviour {
|
|
64
|
-
Restrict = 'restrict',
|
|
65
62
|
Cascade = 'cascade',
|
|
63
|
+
Restrict = 'restrict',
|
|
66
64
|
SetNull = 'setNull'
|
|
67
65
|
}
|
|
68
66
|
|
|
69
67
|
export type _OrderBy = {
|
|
70
68
|
readonly __typename?: '_OrderBy'
|
|
71
|
-
readonly path: ReadonlyArray<Scalars['String']>
|
|
72
69
|
readonly direction: _OrderByDirection
|
|
70
|
+
readonly path: ReadonlyArray<Scalars['String']>
|
|
73
71
|
}
|
|
74
72
|
|
|
75
73
|
export enum _OrderByDirection {
|
|
@@ -84,23 +82,23 @@ export type _PathArgument = {
|
|
|
84
82
|
|
|
85
83
|
export type _Relation = _Field & {
|
|
86
84
|
readonly __typename?: '_Relation'
|
|
87
|
-
readonly name: Scalars['String']
|
|
88
|
-
readonly type: Scalars['String']
|
|
89
|
-
readonly side: _RelationSide
|
|
90
|
-
readonly targetEntity: Scalars['String']
|
|
91
|
-
readonly ownedBy?: Maybe<Scalars['String']>
|
|
92
85
|
readonly inversedBy?: Maybe<Scalars['String']>
|
|
86
|
+
readonly name: Scalars['String']
|
|
93
87
|
readonly nullable?: Maybe<Scalars['Boolean']>
|
|
94
88
|
readonly onDelete?: Maybe<_OnDeleteBehaviour>
|
|
95
|
-
readonly orphanRemoval?: Maybe<Scalars['Boolean']>
|
|
96
89
|
readonly orderBy?: Maybe<ReadonlyArray<_OrderBy>>
|
|
90
|
+
readonly orphanRemoval?: Maybe<Scalars['Boolean']>
|
|
91
|
+
readonly ownedBy?: Maybe<Scalars['String']>
|
|
97
92
|
readonly rules: ReadonlyArray<_Rule>
|
|
93
|
+
readonly side: _RelationSide
|
|
94
|
+
readonly targetEntity: Scalars['String']
|
|
95
|
+
readonly type: Scalars['String']
|
|
98
96
|
readonly validators: ReadonlyArray<_Validator>
|
|
99
97
|
}
|
|
100
98
|
|
|
101
99
|
export enum _RelationSide {
|
|
102
|
-
|
|
103
|
-
|
|
100
|
+
Inverse = 'inverse',
|
|
101
|
+
Owning = 'owning'
|
|
104
102
|
}
|
|
105
103
|
|
|
106
104
|
export type _Rule = {
|
|
@@ -116,8 +114,8 @@ export type _RuleMessage = {
|
|
|
116
114
|
|
|
117
115
|
export type _Schema = {
|
|
118
116
|
readonly __typename?: '_Schema'
|
|
119
|
-
readonly enums: ReadonlyArray<_Enum>
|
|
120
117
|
readonly entities: ReadonlyArray<_Entity>
|
|
118
|
+
readonly enums: ReadonlyArray<_Enum>
|
|
121
119
|
}
|
|
122
120
|
|
|
123
121
|
export type _UniqueConstraint = {
|
|
@@ -127,276 +125,11 @@ export type _UniqueConstraint = {
|
|
|
127
125
|
|
|
128
126
|
export type _Validator = {
|
|
129
127
|
readonly __typename?: '_Validator'
|
|
130
|
-
readonly operation: Scalars['String']
|
|
131
128
|
readonly arguments: ReadonlyArray<_Argument>
|
|
129
|
+
readonly operation: Scalars['String']
|
|
132
130
|
}
|
|
133
131
|
|
|
134
132
|
export type _ValidatorArgument = {
|
|
135
133
|
readonly __typename?: '_ValidatorArgument'
|
|
136
134
|
readonly validator: Scalars['Int']
|
|
137
135
|
}
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
export type ResolverTypeWrapper<T> = Promise<T> | T
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
export type LegacyStitchingResolver<TResult, TParent, TContext, TArgs> = {
|
|
145
|
-
fragment: string
|
|
146
|
-
resolve: ResolverFn<TResult, TParent, TContext, TArgs>
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
export type NewStitchingResolver<TResult, TParent, TContext, TArgs> = {
|
|
150
|
-
selectionSet: string
|
|
151
|
-
resolve: ResolverFn<TResult, TParent, TContext, TArgs>
|
|
152
|
-
}
|
|
153
|
-
export type StitchingResolver<TResult, TParent, TContext, TArgs> = LegacyStitchingResolver<TResult, TParent, TContext, TArgs> | NewStitchingResolver<TResult, TParent, TContext, TArgs>
|
|
154
|
-
export type Resolver<TResult, TParent = {}, TContext = {}, TArgs = {}> =
|
|
155
|
-
| ResolverFn<TResult, TParent, TContext, TArgs>
|
|
156
|
-
| StitchingResolver<TResult, TParent, TContext, TArgs>
|
|
157
|
-
|
|
158
|
-
export type ResolverFn<TResult, TParent, TContext, TArgs> = (
|
|
159
|
-
parent: TParent,
|
|
160
|
-
args: TArgs,
|
|
161
|
-
context: TContext,
|
|
162
|
-
info: GraphQLResolveInfo
|
|
163
|
-
) => Promise<TResult> | TResult
|
|
164
|
-
|
|
165
|
-
export type SubscriptionSubscribeFn<TResult, TParent, TContext, TArgs> = (
|
|
166
|
-
parent: TParent,
|
|
167
|
-
args: TArgs,
|
|
168
|
-
context: TContext,
|
|
169
|
-
info: GraphQLResolveInfo
|
|
170
|
-
) => AsyncIterator<TResult> | Promise<AsyncIterator<TResult>>
|
|
171
|
-
|
|
172
|
-
export type SubscriptionResolveFn<TResult, TParent, TContext, TArgs> = (
|
|
173
|
-
parent: TParent,
|
|
174
|
-
args: TArgs,
|
|
175
|
-
context: TContext,
|
|
176
|
-
info: GraphQLResolveInfo
|
|
177
|
-
) => TResult | Promise<TResult>
|
|
178
|
-
|
|
179
|
-
export interface SubscriptionSubscriberObject<TResult, TKey extends string, TParent, TContext, TArgs> {
|
|
180
|
-
subscribe: SubscriptionSubscribeFn<{ [key in TKey]: TResult }, TParent, TContext, TArgs>
|
|
181
|
-
resolve?: SubscriptionResolveFn<TResult, { [key in TKey]: TResult }, TContext, TArgs>
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
export interface SubscriptionResolverObject<TResult, TParent, TContext, TArgs> {
|
|
185
|
-
subscribe: SubscriptionSubscribeFn<any, TParent, TContext, TArgs>
|
|
186
|
-
resolve: SubscriptionResolveFn<TResult, any, TContext, TArgs>
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
export type SubscriptionObject<TResult, TKey extends string, TParent, TContext, TArgs> =
|
|
190
|
-
| SubscriptionSubscriberObject<TResult, TKey, TParent, TContext, TArgs>
|
|
191
|
-
| SubscriptionResolverObject<TResult, TParent, TContext, TArgs>
|
|
192
|
-
|
|
193
|
-
export type SubscriptionResolver<TResult, TKey extends string, TParent = {}, TContext = {}, TArgs = {}> =
|
|
194
|
-
| ((...args: any[]) => SubscriptionObject<TResult, TKey, TParent, TContext, TArgs>)
|
|
195
|
-
| SubscriptionObject<TResult, TKey, TParent, TContext, TArgs>
|
|
196
|
-
|
|
197
|
-
export type TypeResolveFn<TTypes, TParent = {}, TContext = {}> = (
|
|
198
|
-
parent: TParent,
|
|
199
|
-
context: TContext,
|
|
200
|
-
info: GraphQLResolveInfo
|
|
201
|
-
) => Maybe<TTypes> | Promise<Maybe<TTypes>>
|
|
202
|
-
|
|
203
|
-
export type IsTypeOfResolverFn<T = {}, TContext = {}> = (obj: T, context: TContext, info: GraphQLResolveInfo) => boolean | Promise<boolean>
|
|
204
|
-
|
|
205
|
-
export type NextResolverFn<T> = () => Promise<T>
|
|
206
|
-
|
|
207
|
-
export type DirectiveResolverFn<TResult = {}, TParent = {}, TContext = {}, TArgs = {}> = (
|
|
208
|
-
next: NextResolverFn<TResult>,
|
|
209
|
-
parent: TParent,
|
|
210
|
-
args: TArgs,
|
|
211
|
-
context: TContext,
|
|
212
|
-
info: GraphQLResolveInfo
|
|
213
|
-
) => TResult | Promise<TResult>
|
|
214
|
-
|
|
215
|
-
/** Mapping between all available schema types and the resolvers types */
|
|
216
|
-
export type ResolversTypes = {
|
|
217
|
-
Json: ResolverTypeWrapper<Scalars['Json']>
|
|
218
|
-
Query: ResolverTypeWrapper<{}>
|
|
219
|
-
_Argument: ResolversTypes['_ValidatorArgument'] | ResolversTypes['_PathArgument'] | ResolversTypes['_LiteralArgument']
|
|
220
|
-
_Column: ResolverTypeWrapper<_Column>
|
|
221
|
-
String: ResolverTypeWrapper<Scalars['String']>
|
|
222
|
-
Boolean: ResolverTypeWrapper<Scalars['Boolean']>
|
|
223
|
-
_Entity: ResolverTypeWrapper<_Entity>
|
|
224
|
-
_Enum: ResolverTypeWrapper<_Enum>
|
|
225
|
-
_Field: ResolversTypes['_Column'] | ResolversTypes['_Relation']
|
|
226
|
-
_LiteralArgument: ResolverTypeWrapper<_LiteralArgument>
|
|
227
|
-
_OnDeleteBehaviour: _OnDeleteBehaviour
|
|
228
|
-
_OrderBy: ResolverTypeWrapper<_OrderBy>
|
|
229
|
-
_OrderByDirection: _OrderByDirection
|
|
230
|
-
_PathArgument: ResolverTypeWrapper<_PathArgument>
|
|
231
|
-
_Relation: ResolverTypeWrapper<_Relation>
|
|
232
|
-
_RelationSide: _RelationSide
|
|
233
|
-
_Rule: ResolverTypeWrapper<_Rule>
|
|
234
|
-
Int: ResolverTypeWrapper<Scalars['Int']>
|
|
235
|
-
_RuleMessage: ResolverTypeWrapper<_RuleMessage>
|
|
236
|
-
_Schema: ResolverTypeWrapper<_Schema>
|
|
237
|
-
_UniqueConstraint: ResolverTypeWrapper<_UniqueConstraint>
|
|
238
|
-
_Validator: ResolverTypeWrapper<Omit<_Validator, 'arguments'> & { arguments: ReadonlyArray<ResolversTypes['_Argument']> }>
|
|
239
|
-
_ValidatorArgument: ResolverTypeWrapper<_ValidatorArgument>
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
/** Mapping between all available schema types and the resolvers parents */
|
|
243
|
-
export type ResolversParentTypes = {
|
|
244
|
-
Json: Scalars['Json']
|
|
245
|
-
Query: {}
|
|
246
|
-
_Argument: ResolversParentTypes['_ValidatorArgument'] | ResolversParentTypes['_PathArgument'] | ResolversParentTypes['_LiteralArgument']
|
|
247
|
-
_Column: _Column
|
|
248
|
-
String: Scalars['String']
|
|
249
|
-
Boolean: Scalars['Boolean']
|
|
250
|
-
_Entity: _Entity
|
|
251
|
-
_Enum: _Enum
|
|
252
|
-
_Field: ResolversParentTypes['_Column'] | ResolversParentTypes['_Relation']
|
|
253
|
-
_LiteralArgument: _LiteralArgument
|
|
254
|
-
_OrderBy: _OrderBy
|
|
255
|
-
_PathArgument: _PathArgument
|
|
256
|
-
_Relation: _Relation
|
|
257
|
-
_Rule: _Rule
|
|
258
|
-
Int: Scalars['Int']
|
|
259
|
-
_RuleMessage: _RuleMessage
|
|
260
|
-
_Schema: _Schema
|
|
261
|
-
_UniqueConstraint: _UniqueConstraint
|
|
262
|
-
_Validator: Omit<_Validator, 'arguments'> & { arguments: ReadonlyArray<ResolversParentTypes['_Argument']> }
|
|
263
|
-
_ValidatorArgument: _ValidatorArgument
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
export interface JsonScalarConfig extends GraphQLScalarTypeConfig<ResolversTypes['Json'], any> {
|
|
267
|
-
name: 'Json'
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
export type QueryResolvers<ContextType = any, ParentType extends ResolversParentTypes['Query'] = ResolversParentTypes['Query']> = {
|
|
271
|
-
schema?: Resolver<Maybe<ResolversTypes['_Schema']>, ParentType, ContextType>
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
export type _ArgumentResolvers<ContextType = any, ParentType extends ResolversParentTypes['_Argument'] = ResolversParentTypes['_Argument']> = {
|
|
275
|
-
__resolveType: TypeResolveFn<'_ValidatorArgument' | '_PathArgument' | '_LiteralArgument', ParentType, ContextType>
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
export type _ColumnResolvers<ContextType = any, ParentType extends ResolversParentTypes['_Column'] = ResolversParentTypes['_Column']> = {
|
|
279
|
-
name?: Resolver<ResolversTypes['String'], ParentType, ContextType>
|
|
280
|
-
type?: Resolver<ResolversTypes['String'], ParentType, ContextType>
|
|
281
|
-
enumName?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>
|
|
282
|
-
defaultValue?: Resolver<Maybe<ResolversTypes['Json']>, ParentType, ContextType>
|
|
283
|
-
nullable?: Resolver<ResolversTypes['Boolean'], ParentType, ContextType>
|
|
284
|
-
rules?: Resolver<ReadonlyArray<ResolversTypes['_Rule']>, ParentType, ContextType>
|
|
285
|
-
validators?: Resolver<ReadonlyArray<ResolversTypes['_Validator']>, ParentType, ContextType>
|
|
286
|
-
__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
export type _EntityResolvers<ContextType = any, ParentType extends ResolversParentTypes['_Entity'] = ResolversParentTypes['_Entity']> = {
|
|
290
|
-
name?: Resolver<ResolversTypes['String'], ParentType, ContextType>
|
|
291
|
-
customPrimaryAllowed?: Resolver<ResolversTypes['Boolean'], ParentType, ContextType>
|
|
292
|
-
fields?: Resolver<ReadonlyArray<ResolversTypes['_Field']>, ParentType, ContextType>
|
|
293
|
-
unique?: Resolver<ReadonlyArray<ResolversTypes['_UniqueConstraint']>, ParentType, ContextType>
|
|
294
|
-
__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>
|
|
295
|
-
}
|
|
296
|
-
|
|
297
|
-
export type _EnumResolvers<ContextType = any, ParentType extends ResolversParentTypes['_Enum'] = ResolversParentTypes['_Enum']> = {
|
|
298
|
-
name?: Resolver<ResolversTypes['String'], ParentType, ContextType>
|
|
299
|
-
values?: Resolver<ReadonlyArray<ResolversTypes['String']>, ParentType, ContextType>
|
|
300
|
-
__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>
|
|
301
|
-
}
|
|
302
|
-
|
|
303
|
-
export type _FieldResolvers<ContextType = any, ParentType extends ResolversParentTypes['_Field'] = ResolversParentTypes['_Field']> = {
|
|
304
|
-
__resolveType: TypeResolveFn<'_Column' | '_Relation', ParentType, ContextType>
|
|
305
|
-
name?: Resolver<ResolversTypes['String'], ParentType, ContextType>
|
|
306
|
-
type?: Resolver<ResolversTypes['String'], ParentType, ContextType>
|
|
307
|
-
nullable?: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType>
|
|
308
|
-
rules?: Resolver<ReadonlyArray<ResolversTypes['_Rule']>, ParentType, ContextType>
|
|
309
|
-
validators?: Resolver<ReadonlyArray<ResolversTypes['_Validator']>, ParentType, ContextType>
|
|
310
|
-
}
|
|
311
|
-
|
|
312
|
-
export type _LiteralArgumentResolvers<ContextType = any, ParentType extends ResolversParentTypes['_LiteralArgument'] = ResolversParentTypes['_LiteralArgument']> = {
|
|
313
|
-
value?: Resolver<Maybe<ResolversTypes['Json']>, ParentType, ContextType>
|
|
314
|
-
__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>
|
|
315
|
-
}
|
|
316
|
-
|
|
317
|
-
export type _OrderByResolvers<ContextType = any, ParentType extends ResolversParentTypes['_OrderBy'] = ResolversParentTypes['_OrderBy']> = {
|
|
318
|
-
path?: Resolver<ReadonlyArray<ResolversTypes['String']>, ParentType, ContextType>
|
|
319
|
-
direction?: Resolver<ResolversTypes['_OrderByDirection'], ParentType, ContextType>
|
|
320
|
-
__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>
|
|
321
|
-
}
|
|
322
|
-
|
|
323
|
-
export type _PathArgumentResolvers<ContextType = any, ParentType extends ResolversParentTypes['_PathArgument'] = ResolversParentTypes['_PathArgument']> = {
|
|
324
|
-
path?: Resolver<ReadonlyArray<ResolversTypes['String']>, ParentType, ContextType>
|
|
325
|
-
__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>
|
|
326
|
-
}
|
|
327
|
-
|
|
328
|
-
export type _RelationResolvers<ContextType = any, ParentType extends ResolversParentTypes['_Relation'] = ResolversParentTypes['_Relation']> = {
|
|
329
|
-
name?: Resolver<ResolversTypes['String'], ParentType, ContextType>
|
|
330
|
-
type?: Resolver<ResolversTypes['String'], ParentType, ContextType>
|
|
331
|
-
side?: Resolver<ResolversTypes['_RelationSide'], ParentType, ContextType>
|
|
332
|
-
targetEntity?: Resolver<ResolversTypes['String'], ParentType, ContextType>
|
|
333
|
-
ownedBy?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>
|
|
334
|
-
inversedBy?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>
|
|
335
|
-
nullable?: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType>
|
|
336
|
-
onDelete?: Resolver<Maybe<ResolversTypes['_OnDeleteBehaviour']>, ParentType, ContextType>
|
|
337
|
-
orphanRemoval?: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType>
|
|
338
|
-
orderBy?: Resolver<Maybe<ReadonlyArray<ResolversTypes['_OrderBy']>>, ParentType, ContextType>
|
|
339
|
-
rules?: Resolver<ReadonlyArray<ResolversTypes['_Rule']>, ParentType, ContextType>
|
|
340
|
-
validators?: Resolver<ReadonlyArray<ResolversTypes['_Validator']>, ParentType, ContextType>
|
|
341
|
-
__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>
|
|
342
|
-
}
|
|
343
|
-
|
|
344
|
-
export type _RuleResolvers<ContextType = any, ParentType extends ResolversParentTypes['_Rule'] = ResolversParentTypes['_Rule']> = {
|
|
345
|
-
message?: Resolver<Maybe<ResolversTypes['_RuleMessage']>, ParentType, ContextType>
|
|
346
|
-
validator?: Resolver<ResolversTypes['Int'], ParentType, ContextType>
|
|
347
|
-
__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>
|
|
348
|
-
}
|
|
349
|
-
|
|
350
|
-
export type _RuleMessageResolvers<ContextType = any, ParentType extends ResolversParentTypes['_RuleMessage'] = ResolversParentTypes['_RuleMessage']> = {
|
|
351
|
-
text?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>
|
|
352
|
-
__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>
|
|
353
|
-
}
|
|
354
|
-
|
|
355
|
-
export type _SchemaResolvers<ContextType = any, ParentType extends ResolversParentTypes['_Schema'] = ResolversParentTypes['_Schema']> = {
|
|
356
|
-
enums?: Resolver<ReadonlyArray<ResolversTypes['_Enum']>, ParentType, ContextType>
|
|
357
|
-
entities?: Resolver<ReadonlyArray<ResolversTypes['_Entity']>, ParentType, ContextType>
|
|
358
|
-
__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>
|
|
359
|
-
}
|
|
360
|
-
|
|
361
|
-
export type _UniqueConstraintResolvers<ContextType = any, ParentType extends ResolversParentTypes['_UniqueConstraint'] = ResolversParentTypes['_UniqueConstraint']> = {
|
|
362
|
-
fields?: Resolver<ReadonlyArray<ResolversTypes['String']>, ParentType, ContextType>
|
|
363
|
-
__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>
|
|
364
|
-
}
|
|
365
|
-
|
|
366
|
-
export type _ValidatorResolvers<ContextType = any, ParentType extends ResolversParentTypes['_Validator'] = ResolversParentTypes['_Validator']> = {
|
|
367
|
-
operation?: Resolver<ResolversTypes['String'], ParentType, ContextType>
|
|
368
|
-
arguments?: Resolver<ReadonlyArray<ResolversTypes['_Argument']>, ParentType, ContextType>
|
|
369
|
-
__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>
|
|
370
|
-
}
|
|
371
|
-
|
|
372
|
-
export type _ValidatorArgumentResolvers<ContextType = any, ParentType extends ResolversParentTypes['_ValidatorArgument'] = ResolversParentTypes['_ValidatorArgument']> = {
|
|
373
|
-
validator?: Resolver<ResolversTypes['Int'], ParentType, ContextType>
|
|
374
|
-
__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>
|
|
375
|
-
}
|
|
376
|
-
|
|
377
|
-
export type Resolvers<ContextType = any> = {
|
|
378
|
-
Json?: GraphQLScalarType
|
|
379
|
-
Query?: QueryResolvers<ContextType>
|
|
380
|
-
_Argument?: _ArgumentResolvers<ContextType>
|
|
381
|
-
_Column?: _ColumnResolvers<ContextType>
|
|
382
|
-
_Entity?: _EntityResolvers<ContextType>
|
|
383
|
-
_Enum?: _EnumResolvers<ContextType>
|
|
384
|
-
_Field?: _FieldResolvers<ContextType>
|
|
385
|
-
_LiteralArgument?: _LiteralArgumentResolvers<ContextType>
|
|
386
|
-
_OrderBy?: _OrderByResolvers<ContextType>
|
|
387
|
-
_PathArgument?: _PathArgumentResolvers<ContextType>
|
|
388
|
-
_Relation?: _RelationResolvers<ContextType>
|
|
389
|
-
_Rule?: _RuleResolvers<ContextType>
|
|
390
|
-
_RuleMessage?: _RuleMessageResolvers<ContextType>
|
|
391
|
-
_Schema?: _SchemaResolvers<ContextType>
|
|
392
|
-
_UniqueConstraint?: _UniqueConstraintResolvers<ContextType>
|
|
393
|
-
_Validator?: _ValidatorResolvers<ContextType>
|
|
394
|
-
_ValidatorArgument?: _ValidatorArgumentResolvers<ContextType>
|
|
395
|
-
}
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
/**
|
|
399
|
-
* @deprecated
|
|
400
|
-
* Use "Resolvers" root object instead. If you wish to get "IResolvers", add "typesPrefix: I" to your config.
|
|
401
|
-
*/
|
|
402
|
-
export type IResolvers<ContextType = any> = Resolvers<ContextType>
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
GraphQLResolveInfo,
|
|
8
8
|
isListType,
|
|
9
9
|
isNonNullType,
|
|
10
|
-
isObjectType,
|
|
10
|
+
isObjectType, Kind,
|
|
11
11
|
} from 'graphql'
|
|
12
12
|
import { SelectionSetNode } from 'graphql/language/ast'
|
|
13
13
|
import { getArgumentValues } from 'graphql/execution/values'
|
|
@@ -67,13 +67,13 @@ export class GraphQlQueryAstFactory {
|
|
|
67
67
|
): AnyNode[] {
|
|
68
68
|
const fields: ObjectNode | FieldNode[] = []
|
|
69
69
|
for (const subNode of selectionSet.selections) {
|
|
70
|
-
if (isIt<GraphQlFieldNode>(subNode, 'kind',
|
|
70
|
+
if (isIt<GraphQlFieldNode>(subNode, 'kind', Kind.FIELD)) {
|
|
71
71
|
const field = this.createFromNode(info, parentType, subNode, path, filter)
|
|
72
72
|
if (field === null) {
|
|
73
73
|
continue
|
|
74
74
|
}
|
|
75
75
|
fields.push(field)
|
|
76
|
-
} else if (isIt<FragmentSpreadNode>(subNode, 'kind',
|
|
76
|
+
} else if (isIt<FragmentSpreadNode>(subNode, 'kind', Kind.FRAGMENT_SPREAD)) {
|
|
77
77
|
const fragmentDefinition = info.fragments[subNode.name.value]
|
|
78
78
|
if (!fragmentDefinition) {
|
|
79
79
|
throw new Error(`GraphQlQueryAstFactory: Fragment definition ${subNode.name.value} not found`)
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { SchemaDefinition as def } from '@contember/schema-definition'
|
|
2
|
+
import { GQL } from '../../../../src/tags'
|
|
3
|
+
import { test } from 'vitest'
|
|
4
|
+
import { executeDbTest } from '@contember/engine-api-tester'
|
|
5
|
+
|
|
6
|
+
namespace SeqModel {
|
|
7
|
+
export class Order {
|
|
8
|
+
seqId = def.intColumn().sequence().notNull()
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
test('insert author with id', async () => {
|
|
13
|
+
const schema = def.createModel(SeqModel)
|
|
14
|
+
await executeDbTest({
|
|
15
|
+
schema: schema,
|
|
16
|
+
query: GQL`
|
|
17
|
+
mutation {
|
|
18
|
+
createOrder(data: {}) {
|
|
19
|
+
node {
|
|
20
|
+
seqId
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}`,
|
|
24
|
+
seed: [],
|
|
25
|
+
return: {
|
|
26
|
+
createOrder: {
|
|
27
|
+
node: {
|
|
28
|
+
seqId: 1,
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
})
|
|
33
|
+
})
|
|
34
|
+
|
|
@@ -32,12 +32,7 @@ test('delete post with acl', async () => {
|
|
|
32
32
|
},
|
|
33
33
|
},
|
|
34
34
|
variables: {
|
|
35
|
-
locale_variable: {
|
|
36
|
-
definition: {
|
|
37
|
-
type: Acl.VariableType.condition,
|
|
38
|
-
},
|
|
39
|
-
value: [{ in: ['cs'] }],
|
|
40
|
-
},
|
|
35
|
+
locale_variable: { in: ['cs'] },
|
|
41
36
|
},
|
|
42
37
|
executes: [
|
|
43
38
|
...sqlTransaction([
|