@contember/engine-content-api 2.0.0-alpha.10 → 2.0.0-alpha.13
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/development/src/ExecutionContainer.cjs +2 -2
- package/dist/development/src/ExecutionContainer.cjs.map +1 -1
- package/dist/development/src/ExecutionContainer.js +2 -2
- package/dist/development/src/ExecutionContainer.js.map +1 -1
- package/dist/development/src/mapper/ErrorUtils.cjs +1 -1
- package/dist/development/src/mapper/ErrorUtils.cjs.map +1 -1
- package/dist/development/src/mapper/ErrorUtils.js +1 -1
- package/dist/development/src/mapper/ErrorUtils.js.map +1 -1
- package/dist/development/src/mapper/EventManager.cjs +3 -6
- package/dist/development/src/mapper/EventManager.cjs.map +1 -1
- package/dist/development/src/mapper/EventManager.js +3 -6
- package/dist/development/src/mapper/EventManager.js.map +1 -1
- package/dist/development/src/resolvers/MutationResolver.cjs +7 -3
- package/dist/development/src/resolvers/MutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/MutationResolver.js +7 -3
- package/dist/development/src/resolvers/MutationResolver.js.map +1 -1
- package/dist/production/src/ExecutionContainer.cjs +2 -2
- package/dist/production/src/ExecutionContainer.cjs.map +1 -1
- package/dist/production/src/ExecutionContainer.js +2 -2
- package/dist/production/src/ExecutionContainer.js.map +1 -1
- package/dist/production/src/mapper/ErrorUtils.cjs +1 -1
- package/dist/production/src/mapper/ErrorUtils.cjs.map +1 -1
- package/dist/production/src/mapper/ErrorUtils.js +1 -1
- package/dist/production/src/mapper/ErrorUtils.js.map +1 -1
- package/dist/production/src/mapper/EventManager.cjs +3 -6
- package/dist/production/src/mapper/EventManager.cjs.map +1 -1
- package/dist/production/src/mapper/EventManager.js +3 -6
- package/dist/production/src/mapper/EventManager.js.map +1 -1
- package/dist/production/src/resolvers/MutationResolver.cjs +7 -3
- package/dist/production/src/resolvers/MutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/MutationResolver.js +7 -3
- package/dist/production/src/resolvers/MutationResolver.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/validation/conditions.test.d.ts +2 -2
- package/dist/tests/cases/integration/graphQlRequests/validation/conditions.test.d.ts.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/validation/requiredWhen.test.d.ts +1 -1
- package/dist/tests/cases/integration/graphQlRequests/validation/requiredWhen.test.d.ts.map +1 -1
- package/dist/tests/cases/integration/graphQlSchema/model.d.ts +4 -4
- package/dist/tests/cases/integration/graphQlSchema/model.d.ts.map +1 -1
- package/dist/tests/src/test.d.ts.map +1 -1
- package/dist/tests/tsconfig.tsbuildinfo +1 -1
- package/dist/types/ExecutionContainer.d.ts +8 -5
- package/dist/types/ExecutionContainer.d.ts.map +1 -1
- package/dist/types/mapper/EventManager.d.ts.map +1 -1
- package/dist/types/resolvers/MutationResolver.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +10 -10
- package/src/ExecutionContainer.ts +5 -2
- package/src/mapper/ErrorUtils.ts +1 -1
- package/src/mapper/EventManager.ts +3 -7
- package/src/resolvers/MutationResolver.ts +6 -4
- package/tests/src/test.ts +4 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MutationResolver.js","sources":["../../../../../packages/engine-content-api/src/resolvers/MutationResolver.ts"],"sourcesContent":["import { Input, Model, Result, Value } from '@contember/schema'\nimport {\n\tAfterCommitEvent,\n\tBeforeCommitEvent,\n\tConstraintType,\n\tconvertError,\n\tgetInsertPrimary,\n\tInputErrorKind,\n\tMapper,\n\tMapperFactory,\n\tMutationResultHint,\n\tMutationResultList,\n\tMutationResultType,\n\ttryMutation,\n} from '../mapper'\nimport { ValidationResolver } from './ValidationResolver'\nimport { GraphQLResolveInfo } from 'graphql'\nimport { GraphQlQueryAstFactory } from './GraphQlQueryAstFactory'\nimport { ImplementationException } from '../exception'\nimport { DatabaseMetadata, retryTransaction } from '@contember/database'\nimport { Operation, readOperationMeta } from '../schema'\nimport { assertNever } from '../utils'\nimport { InputPreValidator } from '../input-validation'\nimport { ObjectNode } from '../inputProcessing'\nimport { executeReadOperations } from './ReadHelpers'\nimport { logger } from '@contember/logger'\n\ntype WithoutNode<T extends { node: any }> = Pick<T, Exclude<keyof T, 'node'>>\n\ntype TransactionOptions = {\n\tdeferForeignKeyConstraints?: boolean\n\tdeferUniqueConstraints?: boolean\n}\n\nexport class MutationResolver {\n\tconstructor(\n\t\tprivate readonly schema: Model.Schema,\n\t\tprivate readonly mapperFactory: MapperFactory,\n\t\tprivate readonly inputValidator: InputPreValidator,\n\t\tprivate readonly graphqlQueryAstFactory: GraphQlQueryAstFactory,\n\t\tprivate readonly schemaDatabaseMetadata: DatabaseMetadata,\n\t) {}\n\n\tpublic async resolveTransaction(info: GraphQLResolveInfo, options: TransactionOptions): Promise<Result.TransactionResult> {\n\t\tconst queryAst = this.graphqlQueryAstFactory.create(info, (node, path) => {\n\t\t\treturn (\n\t\t\t\t(path.length === 1 && !['ok', 'validation', 'errorMessage', 'errors'].includes(node.name.value)) ||\n\t\t\t\t(path.length === 2 && node.name.value === 'node') ||\n\t\t\t\tpath.length > 2 ||\n\t\t\t\tpath.length === 0 ||\n\t\t\t\t(path.length > 1 && path[1] === 'query')\n\t\t\t)\n\t\t})\n\t\tconst fields = GraphQlQueryAstFactory.resolveObjectType(info.returnType).getFields()\n\n\t\tconst prefixErrors = <T extends { path: Result.PathFragment[]; paths?: Result.PathFragment[][] }>(\n\t\t\terrors: T[],\n\t\t\tfield: string,\n\t\t): T[] =>\n\t\t\terrors.map(it => ({\n\t\t\t\t...it,\n\t\t\t\tpath: [{ __typename: '_FieldPathFragment', field }, ...it.path],\n\t\t\t\tpaths: it.paths\n\t\t\t\t\t? (it.paths.length === 0 ? [[]] : it.paths)?.map(it => [{ __typename: '_FieldPathFragment', field }, ...it])\n\t\t\t\t\t: undefined,\n\t\t\t}))\n\n\t\treturn this.transaction(async mapper => {\n\t\t\tif (options?.deferForeignKeyConstraints) {\n\t\t\t\tlogger.debug('MutationResolver: deferring foreign constraints')\n\t\t\t\tawait mapper.constraintHelper.setConstraintsDeferred('foreignKey')\n\t\t\t}\n\t\t\tif (options?.deferUniqueConstraints) {\n\t\t\t\tlogger.debug('MutationResolver: deferring unique constraints')\n\t\t\t\tawait mapper.constraintHelper.setConstraintsDeferred('unique')\n\t\t\t}\n\t\t\tconst validationResult: Record<string, Result.MutationFieldResult> = {}\n\t\t\tconst validationErrors: Result.ValidationError[] = []\n\t\t\tfor (const field of queryAst.fields) {\n\t\t\t\tif (field.name === 'query' || field.name === '__typename') {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif (!(field instanceof ObjectNode)) {\n\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t}\n\t\t\t\tconst fieldConfig = fields[field.name]\n\t\t\t\tif (!fieldConfig) {\n\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t}\n\t\t\t\tconst meta = readOperationMeta(fieldConfig.extensions)\n\n\t\t\t\tconst result: Result.ValidationResult | null = await (() => {\n\t\t\t\t\tswitch (meta.operation) {\n\t\t\t\t\t\tcase Operation.create:\n\t\t\t\t\t\t\treturn this.validateCreate(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.update:\n\t\t\t\t\t\t\treturn this.validateUpdate(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.upsert:\n\t\t\t\t\t\t\treturn this.validateUpsert(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.delete:\n\t\t\t\t\t\t\treturn null\n\t\t\t\t\t\tcase Operation.get:\n\t\t\t\t\t\tcase Operation.paginate:\n\t\t\t\t\t\tcase Operation.list:\n\t\t\t\t\t\t\tthrow new ImplementationException(`Invalid OperationMeta: ${String(meta)}`)\n\t\t\t\t\t}\n\t\t\t\t\treturn assertNever(meta.operation)\n\t\t\t\t})()\n\t\t\t\tif (result !== null) {\n\t\t\t\t\tvalidationResult[field.alias] = {\n\t\t\t\t\t\tok: false,\n\t\t\t\t\t\tvalidation: result,\n\t\t\t\t\t\terrors: [],\n\t\t\t\t\t\terrorMessage: this.stringifyValidationErrors(result.errors),\n\t\t\t\t\t\tnode: null,\n\t\t\t\t\t}\n\t\t\t\t\tvalidationErrors.push(...prefixErrors(result.errors, field.alias))\n\t\t\t\t} else {\n\t\t\t\t\tvalidationResult[field.alias] = { ok: false, errors: [], validation: { valid: true, errors: [] }, node: null }\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (validationErrors.length) {\n\t\t\t\treturn {\n\t\t\t\t\t__typename: 'MutationTransaction',\n\t\t\t\t\tok: false,\n\t\t\t\t\terrorMessage: this.stringifyValidationErrors(validationErrors),\n\t\t\t\t\terrors: [],\n\t\t\t\t\tvalidation: {\n\t\t\t\t\t\tvalid: false,\n\t\t\t\t\t\terrors: validationErrors,\n\t\t\t\t\t},\n\t\t\t\t\t...validationResult,\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst trxResult: Record<string, any> = {}\n\t\t\tfor (const field of queryAst.fields) {\n\t\t\t\tif (field.name === '__typename') {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif (!(field instanceof ObjectNode)) {\n\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t}\n\t\t\t\tconst fieldConfig = fields[field.name]\n\t\t\t\tif (!fieldConfig) {\n\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t}\n\t\t\t\tif (field.name === 'query') {\n\t\t\t\t\ttrxResult[field.alias] = await executeReadOperations(\n\t\t\t\t\t\tfield,\n\t\t\t\t\t\tGraphQlQueryAstFactory.resolveObjectType(fieldConfig.type).getFields(),\n\t\t\t\t\t\tmapper,\n\t\t\t\t\t)\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tconst meta = readOperationMeta(fieldConfig.extensions)\n\t\t\t\tlogger.debug('MutationResolver: Resolving a field', { field: field.alias })\n\t\t\t\tconst result: {\n\t\t\t\t\tok: boolean\n\t\t\t\t\tvalidation?: Result.ValidationResult\n\t\t\t\t\terrors: Result.ExecutionError[]\n\t\t\t\t} = await (() => {\n\t\t\t\t\tswitch (meta.operation) {\n\t\t\t\t\t\tcase Operation.create:\n\t\t\t\t\t\t\treturn this.resolveCreateInternal(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.update:\n\t\t\t\t\t\t\treturn this.resolveUpdateInternal(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.delete:\n\t\t\t\t\t\t\treturn this.resolveDeleteInternal(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.upsert:\n\t\t\t\t\t\t\treturn this.resolveUpsertInternal(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.get:\n\t\t\t\t\t\tcase Operation.paginate:\n\t\t\t\t\t\tcase Operation.list:\n\t\t\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t\t}\n\t\t\t\t\treturn assertNever(meta.operation)\n\t\t\t\t})()\n\n\t\t\t\tif (!result.ok) {\n\t\t\t\t\tlogger.debug('MutationResolver: Field evaluation failed', { result, field: field.alias })\n\t\t\t\t\tconst validationErrors = result.validation ? prefixErrors(result.validation.errors, field.alias) : []\n\t\t\t\t\tconst executionErrors = prefixErrors(result.errors, field.alias)\n\t\t\t\t\treturn {\n\t\t\t\t\t\tok: false,\n\t\t\t\t\t\terrors: executionErrors,\n\t\t\t\t\t\tvalidation: result.validation\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tvalid: result.validation.valid,\n\t\t\t\t\t\t\t\terrors: validationErrors,\n\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t: { valid: true, errors: [] },\n\t\t\t\t\t\terrorMessage: [\n\t\t\t\t\t\t\tthis.stringifyValidationErrors(validationErrors),\n\t\t\t\t\t\t\tthis.stringifyExecutionErrors(executionErrors),\n\t\t\t\t\t\t]\n\t\t\t\t\t\t\t.filter(it => it !== undefined)\n\t\t\t\t\t\t\t.join('\\n'),\n\t\t\t\t\t\t...validationResult,\n\t\t\t\t\t\t[field.alias]: result,\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ttrxResult[field.alias] = result\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t__typename: 'MutationTransaction',\n\t\t\t\tok: true,\n\t\t\t\terrors: [],\n\t\t\t\tvalidation: { valid: true, errors: [] },\n\t\t\t\t...trxResult,\n\t\t\t}\n\t\t})\n\t}\n\n\tpublic async resolveUpdate(\n\t\tentity: Model.Entity,\n\t\tinfo: GraphQLResolveInfo,\n\t): Promise<WithoutNode<Result.UpdateResult>> {\n\t\tconst queryAst = this.createQueryAst(info)\n\t\treturn this.transaction(async mapper => {\n\t\t\tconst validation = await this.validateUpdate(mapper, entity, queryAst)\n\t\t\tif (validation !== null) {\n\t\t\t\treturn { ok: false, validation, errors: [], errorMessage: this.stringifyValidationErrors(validation.errors) }\n\t\t\t}\n\t\t\treturn await this.resolveUpdateInternal(mapper, entity, queryAst)\n\t\t})\n\t}\n\n\tprivate async validateUpdate(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.UpdateInput>,\n\t): Promise<Result.ValidationResult | null> {\n\t\tconst input = queryAst.args\n\t\tconst validationResult = await this.inputValidator.validateUpdate({\n\t\t\tmapper,\n\t\t\tentity,\n\t\t\twhere: input.by,\n\t\t\tdata: input.data,\n\t\t\tpath: [],\n\t\t})\n\t\tif (validationResult.length > 0) {\n\t\t\treturn ValidationResolver.createValidationResponse(validationResult)\n\t\t}\n\t\treturn null\n\t}\n\n\tprivate async resolveUpdateInternal(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.UpdateInput>,\n\t): Promise<WithoutNode<Result.UpdateResult>> {\n\t\tconst input = queryAst.args\n\t\tconst result = await mapper.update(entity, input.by, input.data, input.filter)\n\t\tconst errorResponse = this.createErrorResponse(result)\n\t\tif (errorResponse) {\n\t\t\treturn errorResponse\n\t\t}\n\n\t\tconst nodes = await this.resolveResultNodes(mapper, entity, input.by, queryAst)\n\t\treturn {\n\t\t\tok: true,\n\t\t\tvalidation: {\n\t\t\t\tvalid: true,\n\t\t\t\terrors: [],\n\t\t\t},\n\t\t\terrors: [],\n\t\t\t...nodes,\n\t\t}\n\t}\n\n\tpublic async resolveCreate(\n\t\tentity: Model.Entity,\n\t\tinfo: GraphQLResolveInfo,\n\t): Promise<WithoutNode<Result.CreateResult>> {\n\t\tconst queryAst = this.createQueryAst(info)\n\t\treturn this.transaction(async mapper => {\n\t\t\tconst validation = await this.validateCreate(mapper, entity, queryAst)\n\t\t\tif (validation !== null) {\n\t\t\t\treturn { ok: false, validation, errors: [], errorMessage: this.stringifyValidationErrors(validation.errors) }\n\t\t\t}\n\t\t\treturn await this.resolveCreateInternal(mapper, entity, queryAst)\n\t\t})\n\t}\n\n\tprivate async validateCreate(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.CreateInput>,\n\t): Promise<Result.ValidationResult | null> {\n\t\tconst input = queryAst.args\n\t\tconst validationResult = await this.inputValidator.validateCreate({\n\t\t\tmapper,\n\t\t\tentity,\n\t\t\tdata: input.data,\n\t\t\tpath: [],\n\t\t\toverRelation: null,\n\t\t})\n\t\tif (validationResult.length > 0) {\n\t\t\treturn ValidationResolver.createValidationResponse(validationResult)\n\t\t}\n\t\treturn null\n\t}\n\n\tprivate async resolveCreateInternal(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.CreateInput>,\n\t): Promise<WithoutNode<Result.CreateResult>> {\n\t\tconst input = queryAst.args\n\t\tconst result = await mapper.insert(entity, input.data)\n\t\tconst errorResponse = this.createErrorResponse(result)\n\t\tif (errorResponse) {\n\t\t\treturn errorResponse\n\t\t}\n\t\tconst primary = getInsertPrimary(result)\n\t\tif (!primary) {\n\t\t\tthrow new ImplementationException('MutationResolver::resolveCreateInternal does not handle result properly')\n\t\t}\n\n\t\tconst nodes = await this.resolveResultNodes(mapper, entity, { [entity.primary]: primary }, queryAst)\n\t\treturn {\n\t\t\tok: true,\n\t\t\tvalidation: {\n\t\t\t\tvalid: true,\n\t\t\t\terrors: [],\n\t\t\t},\n\t\t\terrors: [],\n\t\t\t...nodes,\n\t\t}\n\t}\n\n\tpublic async resolveUpsert(\n\t\tentity: Model.Entity,\n\t\tinfo: GraphQLResolveInfo,\n\t): Promise<WithoutNode<Result.UpsertResult>> {\n\t\tconst queryAst = this.createQueryAst(info)\n\t\treturn this.transaction(async mapper => {\n\t\t\tconst validation = await this.validateUpsert(mapper, entity, queryAst)\n\t\t\tif (validation !== null) {\n\t\t\t\treturn {\n\t\t\t\t\tok: false,\n\t\t\t\t\tvalidation,\n\t\t\t\t\terrors: [],\n\t\t\t\t\terrorMessage: this.stringifyValidationErrors(validation.errors),\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn await this.resolveUpsertInternal(mapper, entity, queryAst)\n\t\t})\n\t}\n\n\tprivate async validateUpsert(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.UpsertInput>,\n\t): Promise<Result.ValidationResult | null> {\n\t\tconst input = queryAst.args\n\t\tconst validationResult = [\n\t\t\t...(await this.inputValidator.validateCreate({\n\t\t\t\tmapper,\n\t\t\t\tentity,\n\t\t\t\tdata: input.create,\n\t\t\t\tpath: [],\n\t\t\t\toverRelation: null,\n\t\t\t})),\n\t\t\t...(await this.inputValidator.validateUpdate({\n\t\t\t\tmapper,\n\t\t\t\tentity,\n\t\t\t\tdata: input.update,\n\t\t\t\twhere: input.by,\n\t\t\t\tpath: [],\n\t\t\t})),\n\t\t]\n\t\tif (validationResult.length > 0) {\n\t\t\treturn ValidationResolver.createValidationResponse(validationResult)\n\t\t}\n\t\treturn null\n\t}\n\n\tprivate async resolveUpsertInternal(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.UpsertInput>,\n\t): Promise<WithoutNode<Result.UpsertResult>> {\n\t\tconst input = queryAst.args\n\t\tconst result = await mapper.upsert(entity, input.by, input.update, input.create, input.filter)\n\t\tconst errorResponse = this.createErrorResponse(result)\n\t\tif (errorResponse) {\n\t\t\treturn errorResponse\n\t\t}\n\t\tconst primary = getInsertPrimary(result)\n\t\tconst byResolved = primary ? { [entity.primary]: primary } : input.by\n\t\tif (!byResolved) {\n\t\t\tthrow new ImplementationException('MutationResolver::resolveUpsertInternal does not handle result properly')\n\t\t}\n\n\t\tconst nodes = await this.resolveResultNodes(mapper, entity, byResolved, queryAst)\n\t\treturn {\n\t\t\tok: true,\n\t\t\tvalidation: {\n\t\t\t\tvalid: true,\n\t\t\t\terrors: [],\n\t\t\t},\n\t\t\terrors: [],\n\t\t\t...nodes,\n\t\t}\n\t}\n\n\tpublic async resolveDelete(\n\t\tentity: Model.Entity,\n\t\tinfo: GraphQLResolveInfo,\n\t): Promise<WithoutNode<Result.DeleteResult>> {\n\t\tconst queryAst = this.createQueryAst(info)\n\t\treturn this.transaction(async mapper => {\n\t\t\treturn await this.resolveDeleteInternal(mapper, entity, queryAst)\n\t\t})\n\t}\n\n\tprivate async resolveDeleteInternal(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.DeleteInput>,\n\t): Promise<WithoutNode<Result.DeleteResult>> {\n\t\tconst input = queryAst.args\n\n\t\tconst nodes = await this.resolveResultNodes(mapper, entity, input.by, queryAst)\n\n\t\tconst result = await mapper.delete(entity, queryAst.args.by, queryAst.args.filter)\n\t\tif (\n\t\t\tresult.length >= 1 &&\n\t\t\t(result[0].result === MutationResultType.ok || result[0].result === MutationResultType.nothingToDo)\n\t\t) {\n\t\t\treturn { ok: true, errors: [], ...nodes }\n\t\t} else {\n\t\t\tconst errors = this.convertResultToErrors(result)\n\t\t\treturn { ok: false, errors, errorMessage: this.stringifyExecutionErrors(errors) }\n\t\t}\n\t}\n\n\tprivate createQueryAst(info: GraphQLResolveInfo) {\n\t\tconst queryAst = this.graphqlQueryAstFactory.create(info, (node, path) => {\n\t\t\treturn path.length !== 1 || node.name.value === 'node'\n\t\t})\n\t\treturn queryAst\n\t}\n\n\tprivate async resolveResultNodes(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\twhere: Input.UniqueWhere,\n\t\tqueryAst: ObjectNode,\n\t): Promise<Record<string, Value.Object>> {\n\t\tconst nodeQuery = queryAst.findFieldByName('node')\n\t\tlet nodes: Record<string, any> = {}\n\t\tfor (const singleNodeQuery of nodeQuery) {\n\t\t\tif (!(singleNodeQuery instanceof ObjectNode)) {\n\t\t\t\tthrow new Error('MutationResolver: expected ObjectNode')\n\t\t\t}\n\t\t\tconst objectWithArgs = singleNodeQuery.withArgs({ by: where })\n\t\t\tnodes[singleNodeQuery.alias] = await mapper.selectUnique(entity, objectWithArgs, [])\n\t\t}\n\t\treturn nodes\n\t}\n\n\tprivate async transaction<R extends { ok: boolean }>(\n\t\tcb: (mapper: Mapper) => Promise<R>,\n\t): Promise<R> {\n\t\treturn await retryTransaction(\n\t\t\tasync () => {\n\t\t\t\treturn await this.mapperFactory.transaction(async mapper => {\n\t\t\t\t\tlogger.debug('MutationResolver: Starting mutation transaction')\n\t\t\t\t\tconst result = await cb(mapper)\n\t\t\t\t\tif (!result.ok) {\n\t\t\t\t\t\tlogger.debug('MutationResolver: Transaction failed, rolling back', { result })\n\t\t\t\t\t\tawait mapper.db.connection.rollback()\n\t\t\t\t\t} else {\n\t\t\t\t\t\tawait mapper.eventManager.fire(new BeforeCommitEvent())\n\n\t\t\t\t\t\tlogger.debug('MutationResolver: Transaction ok, committing')\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tawait mapper.db.connection.commit()\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\tconst err = convertError(this.schema, this.schemaDatabaseMetadata, e)\n\t\t\t\t\t\t\tconst errorResponse = this.createErrorResponse([err])\n\t\t\t\t\t\t\tif (!errorResponse) {\n\t\t\t\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn { ...result, ...errorResponse }\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tawait mapper.eventManager.fire(new AfterCommitEvent())\n\t\t\t\t\t}\n\t\t\t\t\treturn result\n\t\t\t\t})\n\t\t\t},\n\t\t\tmessage => logger.warn(message),\n\t\t\t{\n\t\t\t\tmaxAttempts: 15,\n\t\t\t\tminTimeout: 10,\n\t\t\t\tmaxTimeout: 1000,\n\t\t\t},\n\t\t)\n\n\t}\n\n\tprivate createErrorResponse(result: MutationResultList) {\n\t\tconst errors = this.convertResultToErrors(result)\n\t\tif (errors.length > 0) {\n\t\t\treturn {\n\t\t\t\tok: false,\n\t\t\t\tvalidation: { valid: true, errors: [] },\n\t\t\t\terrors,\n\t\t\t\terrorMessage: this.stringifyExecutionErrors(errors),\n\t\t\t}\n\t\t}\n\t\treturn null\n\t}\n\n\tprivate convertResultToErrors(result: MutationResultList): Result.ExecutionError[] {\n\t\tconst errors = result.filter(\n\t\t\tit =>\n\t\t\t\t![MutationResultType.ok, MutationResultType.nothingToDo, MutationResultType.validationError].includes(\n\t\t\t\t\tit.result,\n\t\t\t\t),\n\t\t)\n\n\t\tlet hasSqlError = false\n\t\tconst filteredErrors: MutationResultList = []\n\t\tfor (const error of errors) {\n\t\t\tif (error.hints.includes(MutationResultHint.subSequentSqlError) && hasSqlError) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif (error.hints.includes(MutationResultHint.sqlError)) {\n\t\t\t\thasSqlError = true\n\t\t\t}\n\t\t\tfilteredErrors.push(error)\n\t\t}\n\n\t\treturn filteredErrors.map(it => {\n\t\t\tconst paths = it.paths.map(path =>\n\t\t\t\tpath.map(it => ({\n\t\t\t\t\t...it,\n\t\t\t\t\t__typename: 'field' in it ? '_FieldPathFragment' : '_IndexPathFragment',\n\t\t\t\t})),\n\t\t\t)\n\t\t\tconst path = paths[0] || []\n\t\t\tswitch (it.result) {\n\t\t\t\tcase MutationResultType.constraintViolationError:\n\t\t\t\t\tswitch (it.constraint) {\n\t\t\t\t\t\tcase ConstraintType.notNull:\n\t\t\t\t\t\t\treturn { path, paths, type: Result.ExecutionErrorType.NotNullConstraintViolation, message: it.message }\n\t\t\t\t\t\tcase ConstraintType.foreignKey:\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tpath,\n\t\t\t\t\t\t\t\tpaths,\n\t\t\t\t\t\t\t\ttype: Result.ExecutionErrorType.ForeignKeyConstraintViolation,\n\t\t\t\t\t\t\t\tmessage: it.message,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\tcase ConstraintType.uniqueKey:\n\t\t\t\t\t\t\treturn { path, paths, type: Result.ExecutionErrorType.UniqueConstraintViolation, message: it.message }\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\treturn assertNever(it.constraint)\n\t\t\t\t\t}\n\t\t\t\tcase MutationResultType.noResultError:\n\t\t\t\tcase MutationResultType.notFoundError:\n\t\t\t\t\treturn { path, paths, type: Result.ExecutionErrorType.NotFoundOrDenied, message: it.message }\n\t\t\t\tcase MutationResultType.inputError:\n\t\t\t\t\tswitch (it.kind) {\n\t\t\t\t\t\tcase InputErrorKind.nonUniqueWhere:\n\t\t\t\t\t\t\treturn { path, paths, type: Result.ExecutionErrorType.NonUniqueWhereInput, message: it.message }\n\t\t\t\t\t\tcase InputErrorKind.invalidData:\n\t\t\t\t\t\t\treturn { path, paths, type: Result.ExecutionErrorType.InvalidDataInput, message: it.message }\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\treturn assertNever(it.kind)\n\t\t\t\t\t}\n\n\t\t\t\tcase MutationResultType.sqlError:\n\t\t\t\t\treturn { path, paths, type: Result.ExecutionErrorType.SqlError, message: it.message }\n\t\t\t\tcase MutationResultType.ok:\n\t\t\t\tcase MutationResultType.nothingToDo:\n\t\t\t\t\tthrow new ImplementationException('MutationResolver: unexpected MutationResultType')\n\t\t\t\tdefault:\n\t\t\t\t\treturn assertNever(it)\n\t\t\t}\n\t\t})\n\t}\n\n\tprivate stringifyValidationErrors(validationErrors: Result.ValidationError[]): string | undefined {\n\t\tif (validationErrors.length === 0) {\n\t\t\treturn undefined\n\t\t}\n\t\treturn (\n\t\t\t'Validation has failed:\\n' +\n\t\t\tvalidationErrors.map(it => `${this.stringifyPath(it.path)}: ${it.message.text}`).join('\\n')\n\t\t)\n\t}\n\n\tprivate stringifyExecutionErrors(executionErrors: Result.ExecutionError[]): string | undefined {\n\t\tif (executionErrors.length === 0) {\n\t\t\treturn undefined\n\t\t}\n\t\treturn (\n\t\t\t'Execution has failed:\\n' +\n\t\t\texecutionErrors.map(it => `${this.stringifyPath(it.paths[0] || [])}: ${it.type} (${it.message || ''})`)\n\t\t)\n\t}\n\n\tprivate stringifyPath(path: Result.PathFragment[]): string {\n\t\tif (path.length === 0) {\n\t\t\treturn 'unknown field'\n\t\t}\n\t\treturn path\n\t\t\t.map(it => {\n\t\t\t\tif ('field' in it) {\n\t\t\t\t\treturn it.field\n\t\t\t\t}\n\t\t\t\tif ('alias' in it && it.alias) {\n\t\t\t\t\treturn `${it.index}(${it.alias})`\n\t\t\t\t}\n\t\t\t\treturn it.index\n\t\t\t})\n\t\t\t.join('.')\n\t}\n}\n"],"names":["it","validationErrors","path"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MutationResolver.js","sources":["../../../../../packages/engine-content-api/src/resolvers/MutationResolver.ts"],"sourcesContent":["import { Input, Model, Result, Value } from '@contember/schema'\nimport {\n\tAfterCommitEvent,\n\tBeforeCommitEvent,\n\tConstraintType,\n\tconvertError,\n\tgetInsertPrimary,\n\tInputErrorKind,\n\tMapper,\n\tMapperFactory,\n\tMutationResultHint,\n\tMutationResultList,\n\tMutationResultType,\n\ttryMutation,\n} from '../mapper'\nimport { ValidationResolver } from './ValidationResolver'\nimport { GraphQLResolveInfo } from 'graphql'\nimport { GraphQlQueryAstFactory } from './GraphQlQueryAstFactory'\nimport { ImplementationException } from '../exception'\nimport { DatabaseMetadata, retryTransaction } from '@contember/database'\nimport { Operation, readOperationMeta } from '../schema'\nimport { assertNever } from '../utils'\nimport { InputPreValidator } from '../input-validation'\nimport { ObjectNode } from '../inputProcessing'\nimport { executeReadOperations } from './ReadHelpers'\nimport { logger } from '@contember/logger'\n\ntype WithoutNode<T extends { node: any }> = Pick<T, Exclude<keyof T, 'node'>>\n\ntype TransactionOptions = {\n\tdeferForeignKeyConstraints?: boolean\n\tdeferUniqueConstraints?: boolean\n}\n\nexport class MutationResolver {\n\tconstructor(\n\t\tprivate readonly schema: Model.Schema,\n\t\tprivate readonly mapperFactory: MapperFactory,\n\t\tprivate readonly inputValidator: InputPreValidator,\n\t\tprivate readonly graphqlQueryAstFactory: GraphQlQueryAstFactory,\n\t\tprivate readonly schemaDatabaseMetadata: DatabaseMetadata,\n\t) {}\n\n\tpublic async resolveTransaction(info: GraphQLResolveInfo, options: TransactionOptions): Promise<Result.TransactionResult> {\n\t\tconst queryAst = this.graphqlQueryAstFactory.create(info, (node, path) => {\n\t\t\treturn (\n\t\t\t\t(path.length === 1 && !['ok', 'validation', 'errorMessage', 'errors'].includes(node.name.value)) ||\n\t\t\t\t(path.length === 2 && node.name.value === 'node') ||\n\t\t\t\tpath.length > 2 ||\n\t\t\t\tpath.length === 0 ||\n\t\t\t\t(path.length > 1 && path[1] === 'query')\n\t\t\t)\n\t\t})\n\t\tconst fields = GraphQlQueryAstFactory.resolveObjectType(info.returnType).getFields()\n\n\t\tconst prefixErrors = <T extends { path: Result.PathFragment[]; paths?: Result.PathFragment[][] }>(\n\t\t\terrors: T[],\n\t\t\tfield: string,\n\t\t): T[] =>\n\t\t\terrors.map(it => ({\n\t\t\t\t...it,\n\t\t\t\tpath: [{ __typename: '_FieldPathFragment', field }, ...it.path],\n\t\t\t\tpaths: it.paths\n\t\t\t\t\t? (it.paths.length === 0 ? [[]] : it.paths)?.map(it => [{ __typename: '_FieldPathFragment', field }, ...it])\n\t\t\t\t\t: undefined,\n\t\t\t}))\n\n\t\treturn this.transaction(async mapper => {\n\t\t\tif (options?.deferForeignKeyConstraints) {\n\t\t\t\tlogger.debug('MutationResolver: deferring foreign constraints')\n\t\t\t\tawait mapper.constraintHelper.setConstraintsDeferred('foreignKey')\n\t\t\t}\n\t\t\tif (options?.deferUniqueConstraints) {\n\t\t\t\tlogger.debug('MutationResolver: deferring unique constraints')\n\t\t\t\tawait mapper.constraintHelper.setConstraintsDeferred('unique')\n\t\t\t}\n\t\t\tconst validationResult: Record<string, Result.MutationFieldResult> = {}\n\t\t\tconst validationErrors: Result.ValidationError[] = []\n\t\t\tfor (const field of queryAst.fields) {\n\t\t\t\tif (field.name === 'query' || field.name === '__typename') {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif (!(field instanceof ObjectNode)) {\n\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t}\n\t\t\t\tconst fieldConfig = fields[field.name]\n\t\t\t\tif (!fieldConfig) {\n\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t}\n\t\t\t\tconst meta = readOperationMeta(fieldConfig.extensions)\n\n\t\t\t\tconst result: Result.ValidationResult | null = await (() => {\n\t\t\t\t\tswitch (meta.operation) {\n\t\t\t\t\t\tcase Operation.create:\n\t\t\t\t\t\t\treturn this.validateCreate(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.update:\n\t\t\t\t\t\t\treturn this.validateUpdate(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.upsert:\n\t\t\t\t\t\t\treturn this.validateUpsert(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.delete:\n\t\t\t\t\t\t\treturn null\n\t\t\t\t\t\tcase Operation.get:\n\t\t\t\t\t\tcase Operation.paginate:\n\t\t\t\t\t\tcase Operation.list:\n\t\t\t\t\t\t\tthrow new ImplementationException(`Invalid OperationMeta: ${String(meta)}`)\n\t\t\t\t\t}\n\t\t\t\t\treturn assertNever(meta.operation)\n\t\t\t\t})()\n\t\t\t\tif (result !== null) {\n\t\t\t\t\tvalidationResult[field.alias] = {\n\t\t\t\t\t\tok: false,\n\t\t\t\t\t\tvalidation: result,\n\t\t\t\t\t\terrors: [],\n\t\t\t\t\t\terrorMessage: this.stringifyValidationErrors(result.errors),\n\t\t\t\t\t\tnode: null,\n\t\t\t\t\t}\n\t\t\t\t\tvalidationErrors.push(...prefixErrors(result.errors, field.alias))\n\t\t\t\t} else {\n\t\t\t\t\tvalidationResult[field.alias] = { ok: false, errors: [], validation: { valid: true, errors: [] }, node: null }\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (validationErrors.length) {\n\t\t\t\treturn {\n\t\t\t\t\t__typename: 'MutationTransaction',\n\t\t\t\t\tok: false,\n\t\t\t\t\terrorMessage: this.stringifyValidationErrors(validationErrors),\n\t\t\t\t\terrors: [],\n\t\t\t\t\tvalidation: {\n\t\t\t\t\t\tvalid: false,\n\t\t\t\t\t\terrors: validationErrors,\n\t\t\t\t\t},\n\t\t\t\t\t...validationResult,\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst trxResult: Record<string, any> = {}\n\t\t\tfor (const field of queryAst.fields) {\n\t\t\t\tif (field.name === '__typename') {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif (!(field instanceof ObjectNode)) {\n\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t}\n\t\t\t\tconst fieldConfig = fields[field.name]\n\t\t\t\tif (!fieldConfig) {\n\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t}\n\t\t\t\tif (field.name === 'query') {\n\t\t\t\t\ttrxResult[field.alias] = await executeReadOperations(\n\t\t\t\t\t\tfield,\n\t\t\t\t\t\tGraphQlQueryAstFactory.resolveObjectType(fieldConfig.type).getFields(),\n\t\t\t\t\t\tmapper,\n\t\t\t\t\t)\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tconst meta = readOperationMeta(fieldConfig.extensions)\n\t\t\t\tlogger.debug('MutationResolver: Resolving a field', { field: field.alias })\n\t\t\t\tconst result: {\n\t\t\t\t\tok: boolean\n\t\t\t\t\tvalidation?: Result.ValidationResult\n\t\t\t\t\terrors: Result.ExecutionError[]\n\t\t\t\t} = await (() => {\n\t\t\t\t\tswitch (meta.operation) {\n\t\t\t\t\t\tcase Operation.create:\n\t\t\t\t\t\t\treturn this.resolveCreateInternal(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.update:\n\t\t\t\t\t\t\treturn this.resolveUpdateInternal(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.delete:\n\t\t\t\t\t\t\treturn this.resolveDeleteInternal(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.upsert:\n\t\t\t\t\t\t\treturn this.resolveUpsertInternal(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.get:\n\t\t\t\t\t\tcase Operation.paginate:\n\t\t\t\t\t\tcase Operation.list:\n\t\t\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t\t}\n\t\t\t\t\treturn assertNever(meta.operation)\n\t\t\t\t})()\n\n\t\t\t\tif (!result.ok) {\n\t\t\t\t\tlogger.debug('MutationResolver: Field evaluation failed', { result, field: field.alias })\n\t\t\t\t\tconst validationErrors = result.validation ? prefixErrors(result.validation.errors, field.alias) : []\n\t\t\t\t\tconst executionErrors = prefixErrors(result.errors, field.alias)\n\t\t\t\t\treturn {\n\t\t\t\t\t\tok: false,\n\t\t\t\t\t\terrors: executionErrors,\n\t\t\t\t\t\tvalidation: result.validation\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tvalid: result.validation.valid,\n\t\t\t\t\t\t\t\terrors: validationErrors,\n\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t: { valid: true, errors: [] },\n\t\t\t\t\t\terrorMessage: [\n\t\t\t\t\t\t\tthis.stringifyValidationErrors(validationErrors),\n\t\t\t\t\t\t\tthis.stringifyExecutionErrors(executionErrors),\n\t\t\t\t\t\t]\n\t\t\t\t\t\t\t.filter(it => it !== undefined)\n\t\t\t\t\t\t\t.join('\\n'),\n\t\t\t\t\t\t...validationResult,\n\t\t\t\t\t\t[field.alias]: result,\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ttrxResult[field.alias] = result\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t__typename: 'MutationTransaction',\n\t\t\t\tok: true,\n\t\t\t\terrors: [],\n\t\t\t\tvalidation: { valid: true, errors: [] },\n\t\t\t\t...trxResult,\n\t\t\t}\n\t\t})\n\t}\n\n\tpublic async resolveUpdate(\n\t\tentity: Model.Entity,\n\t\tinfo: GraphQLResolveInfo,\n\t): Promise<WithoutNode<Result.UpdateResult>> {\n\t\tconst queryAst = this.createQueryAst(info)\n\t\treturn this.transaction(async mapper => {\n\t\t\tconst validation = await this.validateUpdate(mapper, entity, queryAst)\n\t\t\tif (validation !== null) {\n\t\t\t\treturn { ok: false, validation, errors: [], errorMessage: this.stringifyValidationErrors(validation.errors) }\n\t\t\t}\n\t\t\treturn await this.resolveUpdateInternal(mapper, entity, queryAst)\n\t\t})\n\t}\n\n\tprivate async validateUpdate(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.UpdateInput>,\n\t): Promise<Result.ValidationResult | null> {\n\t\tconst input = queryAst.args\n\t\tconst validationResult = await this.inputValidator.validateUpdate({\n\t\t\tmapper,\n\t\t\tentity,\n\t\t\twhere: input.by,\n\t\t\tdata: input.data,\n\t\t\tpath: [],\n\t\t})\n\t\tif (validationResult.length > 0) {\n\t\t\treturn ValidationResolver.createValidationResponse(validationResult)\n\t\t}\n\t\treturn null\n\t}\n\n\tprivate async resolveUpdateInternal(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.UpdateInput>,\n\t): Promise<WithoutNode<Result.UpdateResult>> {\n\t\tconst input = queryAst.args\n\t\tconst result = await mapper.update(entity, input.by, input.data, input.filter)\n\t\tconst errorResponse = this.createErrorResponse(result)\n\t\tif (errorResponse) {\n\t\t\treturn errorResponse\n\t\t}\n\n\t\tconst nodes = await this.resolveResultNodes(mapper, entity, input.by, queryAst)\n\t\treturn {\n\t\t\tok: true,\n\t\t\tvalidation: {\n\t\t\t\tvalid: true,\n\t\t\t\terrors: [],\n\t\t\t},\n\t\t\terrors: [],\n\t\t\t...nodes,\n\t\t}\n\t}\n\n\tpublic async resolveCreate(\n\t\tentity: Model.Entity,\n\t\tinfo: GraphQLResolveInfo,\n\t): Promise<WithoutNode<Result.CreateResult>> {\n\t\tconst queryAst = this.createQueryAst(info)\n\t\treturn this.transaction(async mapper => {\n\t\t\tconst validation = await this.validateCreate(mapper, entity, queryAst)\n\t\t\tif (validation !== null) {\n\t\t\t\treturn { ok: false, validation, errors: [], errorMessage: this.stringifyValidationErrors(validation.errors) }\n\t\t\t}\n\t\t\treturn await this.resolveCreateInternal(mapper, entity, queryAst)\n\t\t})\n\t}\n\n\tprivate async validateCreate(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.CreateInput>,\n\t): Promise<Result.ValidationResult | null> {\n\t\tconst input = queryAst.args\n\t\tconst validationResult = await this.inputValidator.validateCreate({\n\t\t\tmapper,\n\t\t\tentity,\n\t\t\tdata: input.data,\n\t\t\tpath: [],\n\t\t\toverRelation: null,\n\t\t})\n\t\tif (validationResult.length > 0) {\n\t\t\treturn ValidationResolver.createValidationResponse(validationResult)\n\t\t}\n\t\treturn null\n\t}\n\n\tprivate async resolveCreateInternal(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.CreateInput>,\n\t): Promise<WithoutNode<Result.CreateResult>> {\n\t\tconst input = queryAst.args\n\t\tconst result = await mapper.insert(entity, input.data)\n\t\tconst errorResponse = this.createErrorResponse(result)\n\t\tif (errorResponse) {\n\t\t\treturn errorResponse\n\t\t}\n\t\tconst primary = getInsertPrimary(result)\n\t\tif (!primary) {\n\t\t\tthrow new ImplementationException('MutationResolver::resolveCreateInternal does not handle result properly')\n\t\t}\n\n\t\tconst nodes = await this.resolveResultNodes(mapper, entity, { [entity.primary]: primary }, queryAst)\n\t\treturn {\n\t\t\tok: true,\n\t\t\tvalidation: {\n\t\t\t\tvalid: true,\n\t\t\t\terrors: [],\n\t\t\t},\n\t\t\terrors: [],\n\t\t\t...nodes,\n\t\t}\n\t}\n\n\tpublic async resolveUpsert(\n\t\tentity: Model.Entity,\n\t\tinfo: GraphQLResolveInfo,\n\t): Promise<WithoutNode<Result.UpsertResult>> {\n\t\tconst queryAst = this.createQueryAst(info)\n\t\treturn this.transaction(async mapper => {\n\t\t\tconst validation = await this.validateUpsert(mapper, entity, queryAst)\n\t\t\tif (validation !== null) {\n\t\t\t\treturn {\n\t\t\t\t\tok: false,\n\t\t\t\t\tvalidation,\n\t\t\t\t\terrors: [],\n\t\t\t\t\terrorMessage: this.stringifyValidationErrors(validation.errors),\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn await this.resolveUpsertInternal(mapper, entity, queryAst)\n\t\t})\n\t}\n\n\tprivate async validateUpsert(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.UpsertInput>,\n\t): Promise<Result.ValidationResult | null> {\n\t\tconst input = queryAst.args\n\t\tconst validationResult = [\n\t\t\t...(await this.inputValidator.validateCreate({\n\t\t\t\tmapper,\n\t\t\t\tentity,\n\t\t\t\tdata: input.create,\n\t\t\t\tpath: [],\n\t\t\t\toverRelation: null,\n\t\t\t})),\n\t\t\t...(await this.inputValidator.validateUpdate({\n\t\t\t\tmapper,\n\t\t\t\tentity,\n\t\t\t\tdata: input.update,\n\t\t\t\twhere: input.by,\n\t\t\t\tpath: [],\n\t\t\t})),\n\t\t]\n\t\tif (validationResult.length > 0) {\n\t\t\treturn ValidationResolver.createValidationResponse(validationResult)\n\t\t}\n\t\treturn null\n\t}\n\n\tprivate async resolveUpsertInternal(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.UpsertInput>,\n\t): Promise<WithoutNode<Result.UpsertResult>> {\n\t\tconst input = queryAst.args\n\t\tconst result = await mapper.upsert(entity, input.by, input.update, input.create, input.filter)\n\t\tconst errorResponse = this.createErrorResponse(result)\n\t\tif (errorResponse) {\n\t\t\treturn errorResponse\n\t\t}\n\t\tconst primary = getInsertPrimary(result)\n\t\tconst byResolved = primary ? { [entity.primary]: primary } : input.by\n\t\tif (!byResolved) {\n\t\t\tthrow new ImplementationException('MutationResolver::resolveUpsertInternal does not handle result properly')\n\t\t}\n\n\t\tconst nodes = await this.resolveResultNodes(mapper, entity, byResolved, queryAst)\n\t\treturn {\n\t\t\tok: true,\n\t\t\tvalidation: {\n\t\t\t\tvalid: true,\n\t\t\t\terrors: [],\n\t\t\t},\n\t\t\terrors: [],\n\t\t\t...nodes,\n\t\t}\n\t}\n\n\tpublic async resolveDelete(\n\t\tentity: Model.Entity,\n\t\tinfo: GraphQLResolveInfo,\n\t): Promise<WithoutNode<Result.DeleteResult>> {\n\t\tconst queryAst = this.createQueryAst(info)\n\t\treturn this.transaction(async mapper => {\n\t\t\treturn await this.resolveDeleteInternal(mapper, entity, queryAst)\n\t\t})\n\t}\n\n\tprivate async resolveDeleteInternal(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.DeleteInput>,\n\t): Promise<WithoutNode<Result.DeleteResult>> {\n\t\tconst input = queryAst.args\n\n\t\tconst nodes = await this.resolveResultNodes(mapper, entity, input.by, queryAst)\n\n\t\tconst result = await mapper.delete(entity, queryAst.args.by, queryAst.args.filter)\n\t\tif (\n\t\t\tresult.length >= 1 &&\n\t\t\t(result[0].result === MutationResultType.ok || result[0].result === MutationResultType.nothingToDo)\n\t\t) {\n\t\t\treturn { ok: true, errors: [], ...nodes }\n\t\t} else {\n\t\t\tconst errors = this.convertResultToErrors(result)\n\t\t\treturn { ok: false, errors, errorMessage: this.stringifyExecutionErrors(errors) }\n\t\t}\n\t}\n\n\tprivate createQueryAst(info: GraphQLResolveInfo) {\n\t\tconst queryAst = this.graphqlQueryAstFactory.create(info, (node, path) => {\n\t\t\treturn path.length !== 1 || node.name.value === 'node'\n\t\t})\n\t\treturn queryAst\n\t}\n\n\tprivate async resolveResultNodes(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\twhere: Input.UniqueWhere,\n\t\tqueryAst: ObjectNode,\n\t): Promise<Record<string, Value.Object>> {\n\t\tconst nodeQuery = queryAst.findFieldByName('node')\n\t\tlet nodes: Record<string, any> = {}\n\t\tfor (const singleNodeQuery of nodeQuery) {\n\t\t\tif (!(singleNodeQuery instanceof ObjectNode)) {\n\t\t\t\tthrow new Error('MutationResolver: expected ObjectNode')\n\t\t\t}\n\t\t\tconst objectWithArgs = singleNodeQuery.withArgs({ by: where })\n\t\t\tnodes[singleNodeQuery.alias] = await mapper.selectUnique(entity, objectWithArgs, [])\n\t\t}\n\t\treturn nodes\n\t}\n\n\tprivate async transaction<R extends { ok: boolean }>(\n\t\tcb: (mapper: Mapper) => Promise<R>,\n\t): Promise<R> {\n\t\treturn await retryTransaction(\n\t\t\tasync () => {\n\t\t\t\treturn await this.mapperFactory.transaction(async mapper => {\n\t\t\t\t\tlogger.debug('MutationResolver: Starting mutation transaction')\n\t\t\t\t\tconst result = await cb(mapper)\n\t\t\t\t\tif (!result.ok) {\n\t\t\t\t\t\tlogger.debug('MutationResolver: Transaction failed, rolling back', { result })\n\t\t\t\t\t\tawait mapper.db.connection.rollback()\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tawait mapper.eventManager.fire(new BeforeCommitEvent())\n\t\t\t\t\t\t\tlogger.debug('MutationResolver: Transaction ok, committing')\n\t\t\t\t\t\t\tawait mapper.db.connection.commit()\n\t\t\t\t\t\t\tawait mapper.eventManager.fire(new AfterCommitEvent())\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tawait mapper.db.connection.rollback()\n\t\t\t\t\t\t\t} catch {}\n\t\t\t\t\t\t\tconst err = convertError(this.schema, this.schemaDatabaseMetadata, e)\n\t\t\t\t\t\t\tconst errorResponse = this.createErrorResponse([err])\n\t\t\t\t\t\t\tif (!errorResponse) {\n\t\t\t\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn { ...result, ...errorResponse }\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\t\t\t\t\treturn result\n\t\t\t\t})\n\t\t\t},\n\t\t\tmessage => logger.warn(message),\n\t\t\t{\n\t\t\t\tmaxAttempts: 15,\n\t\t\t\tminTimeout: 10,\n\t\t\t\tmaxTimeout: 1000,\n\t\t\t},\n\t\t)\n\n\t}\n\n\tprivate createErrorResponse(result: MutationResultList) {\n\t\tconst errors = this.convertResultToErrors(result)\n\t\tif (errors.length > 0) {\n\t\t\treturn {\n\t\t\t\tok: false,\n\t\t\t\tvalidation: { valid: true, errors: [] },\n\t\t\t\terrors,\n\t\t\t\terrorMessage: this.stringifyExecutionErrors(errors),\n\t\t\t}\n\t\t}\n\t\treturn null\n\t}\n\n\tprivate convertResultToErrors(result: MutationResultList): Result.ExecutionError[] {\n\t\tconst errors = result.filter(\n\t\t\tit =>\n\t\t\t\t![MutationResultType.ok, MutationResultType.nothingToDo, MutationResultType.validationError].includes(\n\t\t\t\t\tit.result,\n\t\t\t\t),\n\t\t)\n\n\t\tlet hasSqlError = false\n\t\tconst filteredErrors: MutationResultList = []\n\t\tfor (const error of errors) {\n\t\t\tif (error.hints.includes(MutationResultHint.subSequentSqlError) && hasSqlError) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif (error.hints.includes(MutationResultHint.sqlError)) {\n\t\t\t\thasSqlError = true\n\t\t\t}\n\t\t\tfilteredErrors.push(error)\n\t\t}\n\n\t\treturn filteredErrors.map(it => {\n\t\t\tconst paths = it.paths.map(path =>\n\t\t\t\tpath.map(it => ({\n\t\t\t\t\t...it,\n\t\t\t\t\t__typename: 'field' in it ? '_FieldPathFragment' : '_IndexPathFragment',\n\t\t\t\t})),\n\t\t\t)\n\t\t\tconst path = paths[0] || []\n\t\t\tswitch (it.result) {\n\t\t\t\tcase MutationResultType.constraintViolationError:\n\t\t\t\t\tswitch (it.constraint) {\n\t\t\t\t\t\tcase ConstraintType.notNull:\n\t\t\t\t\t\t\treturn { path, paths, type: Result.ExecutionErrorType.NotNullConstraintViolation, message: it.message }\n\t\t\t\t\t\tcase ConstraintType.foreignKey:\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tpath,\n\t\t\t\t\t\t\t\tpaths,\n\t\t\t\t\t\t\t\ttype: Result.ExecutionErrorType.ForeignKeyConstraintViolation,\n\t\t\t\t\t\t\t\tmessage: it.message,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\tcase ConstraintType.uniqueKey:\n\t\t\t\t\t\t\treturn { path, paths, type: Result.ExecutionErrorType.UniqueConstraintViolation, message: it.message }\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\treturn assertNever(it.constraint)\n\t\t\t\t\t}\n\t\t\t\tcase MutationResultType.noResultError:\n\t\t\t\tcase MutationResultType.notFoundError:\n\t\t\t\t\treturn { path, paths, type: Result.ExecutionErrorType.NotFoundOrDenied, message: it.message }\n\t\t\t\tcase MutationResultType.inputError:\n\t\t\t\t\tswitch (it.kind) {\n\t\t\t\t\t\tcase InputErrorKind.nonUniqueWhere:\n\t\t\t\t\t\t\treturn { path, paths, type: Result.ExecutionErrorType.NonUniqueWhereInput, message: it.message }\n\t\t\t\t\t\tcase InputErrorKind.invalidData:\n\t\t\t\t\t\t\treturn { path, paths, type: Result.ExecutionErrorType.InvalidDataInput, message: it.message }\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\treturn assertNever(it.kind)\n\t\t\t\t\t}\n\n\t\t\t\tcase MutationResultType.sqlError:\n\t\t\t\t\treturn { path, paths, type: Result.ExecutionErrorType.SqlError, message: it.message }\n\t\t\t\tcase MutationResultType.ok:\n\t\t\t\tcase MutationResultType.nothingToDo:\n\t\t\t\t\tthrow new ImplementationException('MutationResolver: unexpected MutationResultType')\n\t\t\t\tdefault:\n\t\t\t\t\treturn assertNever(it)\n\t\t\t}\n\t\t})\n\t}\n\n\tprivate stringifyValidationErrors(validationErrors: Result.ValidationError[]): string | undefined {\n\t\tif (validationErrors.length === 0) {\n\t\t\treturn undefined\n\t\t}\n\t\treturn (\n\t\t\t'Validation has failed:\\n' +\n\t\t\tvalidationErrors.map(it => `${this.stringifyPath(it.path)}: ${it.message.text}`).join('\\n')\n\t\t)\n\t}\n\n\tprivate stringifyExecutionErrors(executionErrors: Result.ExecutionError[]): string | undefined {\n\t\tif (executionErrors.length === 0) {\n\t\t\treturn undefined\n\t\t}\n\t\treturn (\n\t\t\t'Execution has failed:\\n' +\n\t\t\texecutionErrors.map(it => `${this.stringifyPath(it.paths[0] || [])}: ${it.type} (${it.message || ''})`)\n\t\t)\n\t}\n\n\tprivate stringifyPath(path: Result.PathFragment[]): string {\n\t\tif (path.length === 0) {\n\t\t\treturn 'unknown field'\n\t\t}\n\t\treturn path\n\t\t\t.map(it => {\n\t\t\t\tif ('field' in it) {\n\t\t\t\t\treturn it.field\n\t\t\t\t}\n\t\t\t\tif ('alias' in it && it.alias) {\n\t\t\t\t\treturn `${it.index}(${it.alias})`\n\t\t\t\t}\n\t\t\t\treturn it.index\n\t\t\t})\n\t\t\t.join('.')\n\t}\n}\n"],"names":["it","validationErrors","path"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { SchemaDefinition as d } from '@contember/schema-definition';
|
|
2
2
|
export declare class Author {
|
|
3
3
|
name: d.ColumnDefinition;
|
|
4
|
-
emailValidated:
|
|
5
|
-
email:
|
|
4
|
+
emailValidated: d.ColumnDefinition;
|
|
5
|
+
email: d.ColumnDefinition;
|
|
6
6
|
}
|
|
7
7
|
//# sourceMappingURL=conditions.test.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conditions.test.d.ts","sourceRoot":"","sources":["../../../../../../tests/cases/integration/graphQlRequests/validation/conditions.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,gBAAgB,IAAI,CAAC,EAAE,MAAM,8BAA8B,CAAA;AAI1F,qBAAa,MAAM;IAClB,IAAI,qBAAmB;IAEvB,cAAc,
|
|
1
|
+
{"version":3,"file":"conditions.test.d.ts","sourceRoot":"","sources":["../../../../../../tests/cases/integration/graphQlRequests/validation/conditions.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,gBAAgB,IAAI,CAAC,EAAE,MAAM,8BAA8B,CAAA;AAI1F,qBAAa,MAAM;IAClB,IAAI,qBAAmB;IAEvB,cAAc,qBAA2B;IAGzC,KAAK,qBAA6B;CAClC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { SchemaDefinition as d } from '@contember/schema-definition';
|
|
2
2
|
export declare class Author {
|
|
3
3
|
name: d.ColumnDefinition;
|
|
4
|
-
authorWithContact:
|
|
4
|
+
authorWithContact: d.ColumnDefinition;
|
|
5
5
|
email: d.ColumnDefinition;
|
|
6
6
|
}
|
|
7
7
|
//# sourceMappingURL=requiredWhen.test.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requiredWhen.test.d.ts","sourceRoot":"","sources":["../../../../../../tests/cases/integration/graphQlRequests/validation/requiredWhen.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,gBAAgB,IAAI,CAAC,EAAE,MAAM,8BAA8B,CAAA;AAK1F,qBAAa,MAAM;IAClB,IAAI,qBAAmB;IAEvB,iBAAiB,
|
|
1
|
+
{"version":3,"file":"requiredWhen.test.d.ts","sourceRoot":"","sources":["../../../../../../tests/cases/integration/graphQlRequests/validation/requiredWhen.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,gBAAgB,IAAI,CAAC,EAAE,MAAM,8BAA8B,CAAA;AAK1F,qBAAa,MAAM;IAClB,IAAI,qBAAmB;IAEvB,iBAAiB,qBAA2B;IAG5C,KAAK,qBAAmB;CACxB"}
|
|
@@ -7,9 +7,9 @@ export declare class Author {
|
|
|
7
7
|
export declare class Post {
|
|
8
8
|
state: d.ColumnDefinition;
|
|
9
9
|
publishedAt: d.ColumnDefinition;
|
|
10
|
-
categories:
|
|
11
|
-
author:
|
|
12
|
-
locales:
|
|
10
|
+
categories: d.ManyHasManyDefinition;
|
|
11
|
+
author: d.ManyHasOneDefinition;
|
|
12
|
+
locales: d.OneHasManyDefinition;
|
|
13
13
|
}
|
|
14
14
|
export declare class PostLocale {
|
|
15
15
|
locale: d.ColumnDefinition;
|
|
@@ -17,7 +17,7 @@ export declare class PostLocale {
|
|
|
17
17
|
post: d.ManyHasOneDefinition;
|
|
18
18
|
}
|
|
19
19
|
export declare class Category {
|
|
20
|
-
name:
|
|
20
|
+
name: d.ColumnDefinition;
|
|
21
21
|
posts: d.ManyHasManyInverseDefinition;
|
|
22
22
|
}
|
|
23
23
|
//# sourceMappingURL=model.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../../../tests/cases/integration/graphQlSchema/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,IAAI,CAAC,EAAE,MAAM,8BAA8B,CAAA;AAEpE,eAAO,MAAM,MAAM,+BAA2B,CAAA;AAE9C,qBAAa,MAAM;IAClB,IAAI,qBAAmB;IACvB,KAAK,EAAE,CAAC,CAAC,oBAAoB,CAA6E;CAC1G;AAED,qBAAa,IAAI;IAChB,KAAK,qBAAgE;IACrE,WAAW,qBAAqB;IAEhC,UAAU,
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../../../tests/cases/integration/graphQlSchema/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,IAAI,CAAC,EAAE,MAAM,8BAA8B,CAAA;AAEpE,eAAO,MAAM,MAAM,+BAA2B,CAAA;AAE9C,qBAAa,MAAM;IAClB,IAAI,qBAAmB;IACvB,KAAK,EAAE,CAAC,CAAC,oBAAoB,CAA6E;CAC1G;AAED,qBAAa,IAAI;IAChB,KAAK,qBAAgE;IACrE,WAAW,qBAAqB;IAEhC,UAAU,0BAAmC;IAC7C,MAAM,yBAAgC;IACtC,OAAO,yBAAmC;CAC1C;AAED,qBACa,UAAU;IACtB,MAAM,qBAAuB;IAE7B,KAAK,qBAAmB;IAExB,IAAI,EAAE,CAAC,CAAC,oBAAoB,CAAgC;CAC5D;AAED,qBAAa,QAAQ;IACpB,IAAI,qBAA4B;IAEhC,KAAK,EAAE,CAAC,CAAC,4BAA4B,CAA2C;CAChF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../../tests/src/test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,KAAK,EAAU,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAQlE,MAAM,WAAW,QAAQ;IACxB,GAAG,EAAE,MAAM,CAAA;IACX,UAAU,CAAC,EAAE,GAAG,EAAE,CAAA;IAClB,QAAQ,EAAE,GAAG,EAAE,GAAG,GAAG,CAAA;CACrB;AAED,MAAM,WAAW,IAAI;IACpB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,UAAU,CAAC,MAAM,CAAA;IAC9B,WAAW,CAAC,EAAE,GAAG,CAAC,WAAW,CAAA;IAC7B,SAAS,CAAC,EAAE,GAAG,CAAC,YAAY,CAAA;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACpC,QAAQ,EAAE,QAAQ,EAAE,CAAA;IACpB,MAAM,EAAE,MAAM,CAAA;CACd;AAaD,eAAO,MAAM,qBAAqB,EAAE,QAAQ,EAW3C,CAAA;AAED,eAAO,MAAM,cAAc,aAAc,QAAQ,EAAE,KAAG,QAAQ,EAW7D,CAAA;AAED,eAAO,MAAM,iBAAiB,aAAc,QAAQ,EAAE,KAAG,QAAQ,EAWhE,CAAA;AAED,eAAO,MAAM,OAAO,SAAgB,IAAI,
|
|
1
|
+
{"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../../tests/src/test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,KAAK,EAAU,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAQlE,MAAM,WAAW,QAAQ;IACxB,GAAG,EAAE,MAAM,CAAA;IACX,UAAU,CAAC,EAAE,GAAG,EAAE,CAAA;IAClB,QAAQ,EAAE,GAAG,EAAE,GAAG,GAAG,CAAA;CACrB;AAED,MAAM,WAAW,IAAI;IACpB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,UAAU,CAAC,MAAM,CAAA;IAC9B,WAAW,CAAC,EAAE,GAAG,CAAC,WAAW,CAAA;IAC7B,SAAS,CAAC,EAAE,GAAG,CAAC,YAAY,CAAA;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACpC,QAAQ,EAAE,QAAQ,EAAE,CAAA;IACpB,MAAM,EAAE,MAAM,CAAA;CACd;AAaD,eAAO,MAAM,qBAAqB,EAAE,QAAQ,EAW3C,CAAA;AAED,eAAO,MAAM,cAAc,aAAc,QAAQ,EAAE,KAAG,QAAQ,EAW7D,CAAA;AAED,eAAO,MAAM,iBAAiB,aAAc,QAAQ,EAAE,KAAG,QAAQ,EAWhE,CAAA;AAED,eAAO,MAAM,OAAO,SAAgB,IAAI,kBAgDvC,CAAA"}
|