@contember/engine-content-api 2.1.0-alpha.2 → 2.1.0-alpha.21
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 +1 -1
- package/dist/development/src/ExecutionContainer.cjs.map +1 -1
- package/dist/development/src/ExecutionContainer.js +1 -1
- package/dist/development/src/ExecutionContainer.js.map +1 -1
- package/dist/development/src/mapper/Result.cjs +1 -1
- package/dist/development/src/mapper/Result.cjs.map +1 -1
- package/dist/development/src/mapper/Result.js +1 -1
- package/dist/development/src/mapper/Result.js.map +1 -1
- package/dist/development/src/mapper/update/Updater.cjs +15 -3
- package/dist/development/src/mapper/update/Updater.cjs.map +1 -1
- package/dist/development/src/mapper/update/Updater.js +16 -4
- package/dist/development/src/mapper/update/Updater.js.map +1 -1
- package/dist/development/src/resolvers/RefreshViewResolver.cjs +3 -2
- package/dist/development/src/resolvers/RefreshViewResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/RefreshViewResolver.js +3 -2
- package/dist/development/src/resolvers/RefreshViewResolver.js.map +1 -1
- package/dist/development/src/schema/RefreshViewMutationProvider.cjs +9 -2
- package/dist/development/src/schema/RefreshViewMutationProvider.cjs.map +1 -1
- package/dist/development/src/schema/RefreshViewMutationProvider.js +10 -3
- package/dist/development/src/schema/RefreshViewMutationProvider.js.map +1 -1
- package/dist/production/src/ExecutionContainer.cjs +1 -1
- package/dist/production/src/ExecutionContainer.cjs.map +1 -1
- package/dist/production/src/ExecutionContainer.js +1 -1
- package/dist/production/src/ExecutionContainer.js.map +1 -1
- package/dist/production/src/mapper/Result.cjs +1 -1
- package/dist/production/src/mapper/Result.cjs.map +1 -1
- package/dist/production/src/mapper/Result.js +1 -1
- package/dist/production/src/mapper/Result.js.map +1 -1
- package/dist/production/src/mapper/update/Updater.cjs +15 -3
- package/dist/production/src/mapper/update/Updater.cjs.map +1 -1
- package/dist/production/src/mapper/update/Updater.js +16 -4
- package/dist/production/src/mapper/update/Updater.js.map +1 -1
- package/dist/production/src/resolvers/RefreshViewResolver.cjs +3 -2
- package/dist/production/src/resolvers/RefreshViewResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/RefreshViewResolver.js +3 -2
- package/dist/production/src/resolvers/RefreshViewResolver.js.map +1 -1
- package/dist/production/src/schema/RefreshViewMutationProvider.cjs +9 -2
- package/dist/production/src/schema/RefreshViewMutationProvider.cjs.map +1 -1
- package/dist/production/src/schema/RefreshViewMutationProvider.js +10 -3
- package/dist/production/src/schema/RefreshViewMutationProvider.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/insert/subOperationFail.test.d.ts +2 -0
- package/dist/tests/cases/integration/graphQlRequests/insert/subOperationFail.test.d.ts.map +1 -0
- package/dist/tests/tsconfig.tsbuildinfo +1 -1
- package/dist/types/mapper/Result.d.ts +2 -2
- package/dist/types/mapper/Result.d.ts.map +1 -1
- package/dist/types/mapper/update/Updater.d.ts +1 -5
- package/dist/types/mapper/update/Updater.d.ts.map +1 -1
- package/dist/types/resolvers/RefreshViewResolver.d.ts +3 -1
- package/dist/types/resolvers/RefreshViewResolver.d.ts.map +1 -1
- package/dist/types/schema/RefreshViewMutationProvider.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/graphql.codegen.yml +1 -1
- package/package.json +10 -10
- package/src/ExecutionContainer.ts +2 -2
- package/src/mapper/Result.ts +2 -2
- package/src/mapper/update/Updater.ts +16 -5
- package/src/resolvers/RefreshViewResolver.ts +3 -3
- package/src/schema/RefreshViewMutationProvider.ts +9 -2
- package/tests/cases/integration/graphQlRequests/insert/subOperationFail.test.ts +105 -0
- package/tests/cases/integration/graphQlRequests/update/additionalFilter.test.ts +51 -2
|
@@ -86,7 +86,7 @@ class ExecutionContainerFactory {
|
|
|
86
86
|
predicateFactory
|
|
87
87
|
);
|
|
88
88
|
}
|
|
89
|
-
}()).addService("insertBuilderFactory", ({ whereBuilder, pathFactory, schema: schema2, predicateFactory }) => new InsertBuilderFactory.InsertBuilderFactory(schema2.model, whereBuilder, pathFactory, predicateFactory)).addService("updateBuilderFactory", ({ whereBuilder, pathFactory, schema: schema2, predicateFactory }) => new UpdateBuilderFactory.UpdateBuilderFactory(schema2.model, whereBuilder, pathFactory, predicateFactory)).addService("connectJunctionHandler", () => new JunctionTableManager.JunctionConnectHandler()).addService("disconnectJunctionHandler", ({}) => new JunctionTableManager.JunctionDisconnectHandler()).addService("junctionTableManager", ({ predicateFactory, whereBuilder, connectJunctionHandler, disconnectJunctionHandler, pathFactory, schema: schema2 }) => new JunctionTableManager.JunctionTableManager(schema2.model, predicateFactory, whereBuilder, connectJunctionHandler, disconnectJunctionHandler, pathFactory)).addService("deleteExecutor", ({ predicateFactory, updateBuilderFactory, whereBuilder, pathFactory, schema: schema2 }) => new DeleteExecutor.DeleteExecutor(schema2.model, predicateFactory, whereBuilder, updateBuilderFactory, pathFactory)).addService("updater", ({
|
|
89
|
+
}()).addService("insertBuilderFactory", ({ whereBuilder, pathFactory, schema: schema2, predicateFactory }) => new InsertBuilderFactory.InsertBuilderFactory(schema2.model, whereBuilder, pathFactory, predicateFactory)).addService("updateBuilderFactory", ({ whereBuilder, pathFactory, schema: schema2, predicateFactory }) => new UpdateBuilderFactory.UpdateBuilderFactory(schema2.model, whereBuilder, pathFactory, predicateFactory)).addService("connectJunctionHandler", () => new JunctionTableManager.JunctionConnectHandler()).addService("disconnectJunctionHandler", ({}) => new JunctionTableManager.JunctionDisconnectHandler()).addService("junctionTableManager", ({ predicateFactory, whereBuilder, connectJunctionHandler, disconnectJunctionHandler, pathFactory, schema: schema2 }) => new JunctionTableManager.JunctionTableManager(schema2.model, predicateFactory, whereBuilder, connectJunctionHandler, disconnectJunctionHandler, pathFactory)).addService("deleteExecutor", ({ predicateFactory, updateBuilderFactory, whereBuilder, pathFactory, schema: schema2 }) => new DeleteExecutor.DeleteExecutor(schema2.model, predicateFactory, whereBuilder, updateBuilderFactory, pathFactory)).addService("updater", ({ updateBuilderFactory, schema: schema2 }) => new Updater.Updater(schema2.model, updateBuilderFactory)).addService("inserter", ({ insertBuilderFactory, providers, schema: schema2, schemaDatabaseMetadata: schemaDatabaseMetadata2 }) => new Inserter.Inserter(schema2.model, schemaDatabaseMetadata2, insertBuilderFactory, providers, { uuidVersion: schema2.settings.content?.uuidVersion })).addService("mapperFactory", ({ predicatesInjector, selectBuilderFactory, uniqueWhereExpander, whereBuilder, junctionTableManager, deleteExecutor, updater, inserter, pathFactory, providers, schema: schema2, schemaDatabaseMetadata: schemaDatabaseMetadata2 }) => {
|
|
90
90
|
return new MapperFactory.MapperFactory(
|
|
91
91
|
db,
|
|
92
92
|
identityId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExecutionContainer.cjs","sources":["../../../../packages/engine-content-api/src/ExecutionContainer.ts"],"sourcesContent":["import { PredicateFactory, PredicatesInjector, VariableInjector } from './acl'\nimport {\n\tConditionBuilder,\n\tFieldsVisitorFactory,\n\tJoinBuilder,\n\tMetaHandler,\n\tOrderByBuilder,\n\tRelationFetcher,\n\tWhereBuilder,\n} from './mapper/select'\nimport { UniqueWhereExpander } from './inputProcessing'\nimport { HasManyToHasOneReducer, HasManyToHasOneReducerExecutionHandler } from './extensions'\nimport {\n\tDeleteExecutor,\n\tInsertBuilderFactory,\n\tInserter,\n\tJunctionConnectHandler,\n\tJunctionDisconnectHandler,\n\tJunctionTableManager,\n\tMapperFactory,\n\tPathFactory,\n\tSelectBuilder,\n\tSelectBuilderFactory,\n\tSelectHydrator,\n\tUpdateBuilderFactory,\n\tUpdater,\n} from './mapper'\nimport { Builder } from '@contember/dic'\nimport { Acl, Model, Schema } from '@contember/schema'\nimport { Client, DatabaseMetadata, SelectBuilder as DbSelectBuilder } from '@contember/database'\nimport { ParsedMembership, Providers } from '@contember/schema-utils'\nimport { PaginatedHasManyExecutionHandler } from './extensions/paginatedHasMany/PaginatedHasManyExecutionHandler'\nimport { PaginatedHasManyFieldProvider } from './extensions/paginatedHasMany/PaginatedHasManyFieldProvider'\nimport { WhereOptimizer } from './mapper/select/optimizer/WhereOptimizer'\nimport { ConditionOptimizer } from './mapper/select/optimizer/ConditionOptimizer'\nimport { GraphQlQueryAstFactory, MutationResolver, ReadResolver, ValidationResolver } from './resolvers'\nimport {\n\tColumnValueResolver,\n\tDependencyCollector,\n\tEntityRulesResolver, InputPreValidator,\n\tQueryAstFactory,\n\tValidationDataSelector,\n} from './input-validation'\nimport { RefreshViewResolver } from './resolvers/RefreshViewResolver'\n\nexport type ExecutionContainerArgs = {\n\tschema: Schema\n\tschemaMeta: { id?: number }\n\tschemaDatabaseMetadata: DatabaseMetadata\n\tdb: Client\n\tidentityId: string\n\tidentityVariables: Acl.VariablesMap\n\tpermissions: Acl.Permissions\n\tsystemSchema: string\n\tproject: { slug: string }\n\tstage: { id: string; slug: string }\n}\n\nexport interface ExecutionContainer {\n\treadResolver: ReadResolver\n\tmutationResolver: MutationResolver\n\tvalidationResolver: ValidationResolver\n\trefreshViewResolver: RefreshViewResolver\n}\n\nexport type ExecutionContainerBuilder = ReturnType<ExecutionContainerFactory['createBuilderInternal']>\nexport type ExecutionContainerHook = (builder: ExecutionContainerBuilder) => ExecutionContainerBuilder\n\nexport class ExecutionContainerFactory {\n\tpublic readonly hooks: ExecutionContainerHook[] = []\n\n\tconstructor(\n\t\tprivate readonly providers: Providers,\n\t) {\n\t}\n\n\tcreateBuilder(args: ExecutionContainerArgs): ExecutionContainerBuilder {\n\t\tconst builder = this.createBuilderInternal(args)\n\t\treturn this.hooks.reduce((acc, cb) => cb(acc), builder)\n\t}\n\n\tcreateBuilderInternal({ permissions, identityVariables, identityId, db, schema, schemaMeta, systemSchema, stage, project, schemaDatabaseMetadata }: ExecutionContainerArgs) {\n\t\treturn new Builder({})\n\t\t\t.addService('systemSchema', () =>\n\t\t\t\tsystemSchema)\n\t\t\t.addService('db', () =>\n\t\t\t\tdb)\n\t\t\t.addService('project', () =>\n\t\t\t\tproject)\n\t\t\t.addService('stage', () =>\n\t\t\t\tstage)\n\t\t\t.addService('schema', () =>\n\t\t\t\tschema)\n\t\t\t.addService('schemaMeta', () =>\n\t\t\t\tschemaMeta)\n\t\t\t.addService('schemaDatabaseMetadata', () =>\n\t\t\t\tschemaDatabaseMetadata)\n\t\t\t.addService('providers', () =>\n\t\t\t\tthis.providers)\n\t\t\t.addService('variableInjector', ({ schema }) =>\n\t\t\t\tnew VariableInjector(schema.model, identityVariables))\n\t\t\t.addService('predicateFactory', ({ variableInjector, schema }) =>\n\t\t\t\tnew PredicateFactory(permissions, schema.model, variableInjector))\n\t\t\t.addService('predicatesInjector', ({ predicateFactory, schema }) =>\n\t\t\t\tnew PredicatesInjector(schema.model, predicateFactory))\n\t\t\t.addService('joinBuilder', ({ schema }) =>\n\t\t\t\tnew JoinBuilder(schema.model))\n\t\t\t.addService('conditionBuilder', () =>\n\t\t\t\tnew ConditionBuilder())\n\t\t\t.addService('pathFactory', () =>\n\t\t\t\tnew PathFactory())\n\t\t\t.addService('whereOptimized', ({ schema }) =>\n\t\t\t\tnew WhereOptimizer(schema.model, new ConditionOptimizer()))\n\t\t\t.addService('whereBuilder', ({ joinBuilder, conditionBuilder, pathFactory, whereOptimized, schema }) =>\n\t\t\t\tnew WhereBuilder(\n\t\t\t\t\tschema.model,\n\t\t\t\t\tjoinBuilder,\n\t\t\t\t\tconditionBuilder,\n\t\t\t\t\tpathFactory,\n\t\t\t\t\twhereOptimized,\n\t\t\t\t\t(schema.settings.content?.useExistsInHasManyFilter ?? schema.settings.useExistsInHasManyFilter) === true,\n\t\t\t\t))\n\t\t\t.addService('orderByBuilder', ({ joinBuilder, schema }) =>\n\t\t\t\tnew OrderByBuilder(schema.model, joinBuilder))\n\t\t\t.addService('relationFetcher', ({ whereBuilder, orderByBuilder, predicatesInjector, pathFactory }) =>\n\t\t\t\tnew RelationFetcher(whereBuilder, orderByBuilder, predicatesInjector, pathFactory))\n\t\t\t.addService('fieldsVisitorFactory', ({ relationFetcher, predicateFactory, schema, providers }) =>\n\t\t\t\tnew FieldsVisitorFactory(schema.model, relationFetcher, predicateFactory, schema.settings.content ?? {}, providers))\n\t\t\t.addService('metaHandler', ({ whereBuilder, predicateFactory }) =>\n\t\t\t\tnew MetaHandler(whereBuilder, predicateFactory))\n\t\t\t.addService('uniqueWhereExpander', ({ schema }) =>\n\t\t\t\tnew UniqueWhereExpander(schema.model))\n\t\t\t.addService('hasManyToHasOneReducer', ({ uniqueWhereExpander, schema }) =>\n\t\t\t\tnew HasManyToHasOneReducerExecutionHandler(schema.model, uniqueWhereExpander))\n\t\t\t.addService('paginatedHasManyExecutionHandler', ({ relationFetcher, schema }) =>\n\t\t\t\tnew PaginatedHasManyExecutionHandler(schema.model, relationFetcher))\n\t\t\t.addService('selectHandlers', ({ hasManyToHasOneReducer, paginatedHasManyExecutionHandler }) => ({\n\t\t\t\t[HasManyToHasOneReducer.extensionName]: hasManyToHasOneReducer,\n\t\t\t\t[PaginatedHasManyFieldProvider.extensionName]: paginatedHasManyExecutionHandler,\n\t\t\t}))\n\t\t\t.addService('selectBuilderFactory', ({ whereBuilder, orderByBuilder, fieldsVisitorFactory, metaHandler, selectHandlers, pathFactory, predicateFactory, schema }) =>\n\t\t\t\tnew (class implements SelectBuilderFactory {\n\t\t\t\t\tcreate(qb: DbSelectBuilder, hydrator: SelectHydrator, relationPath: Model.AnyRelationContext[]): SelectBuilder {\n\t\t\t\t\t\treturn new SelectBuilder(\n\t\t\t\t\t\t\tschema.model,\n\t\t\t\t\t\t\twhereBuilder,\n\t\t\t\t\t\t\torderByBuilder,\n\t\t\t\t\t\t\tmetaHandler,\n\t\t\t\t\t\t\tqb,\n\t\t\t\t\t\t\thydrator,\n\t\t\t\t\t\t\tfieldsVisitorFactory,\n\t\t\t\t\t\t\tselectHandlers,\n\t\t\t\t\t\t\tpathFactory,\n\t\t\t\t\t\t\trelationPath,\n\t\t\t\t\t\t\tpredicateFactory,\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t})())\n\t\t\t.addService('insertBuilderFactory', ({ whereBuilder, pathFactory, schema, predicateFactory }) =>\n\t\t\t\tnew InsertBuilderFactory(schema.model, whereBuilder, pathFactory, predicateFactory))\n\t\t\t.addService('updateBuilderFactory', ({ whereBuilder, pathFactory, schema, predicateFactory }) =>\n\t\t\t\tnew UpdateBuilderFactory(schema.model, whereBuilder, pathFactory, predicateFactory))\n\t\t\t.addService('connectJunctionHandler', () =>\n\t\t\t\tnew JunctionConnectHandler())\n\t\t\t.addService('disconnectJunctionHandler', ({}) =>\n\t\t\t\tnew JunctionDisconnectHandler())\n\t\t\t.addService('junctionTableManager', ({ predicateFactory, whereBuilder, connectJunctionHandler, disconnectJunctionHandler, pathFactory, schema }) =>\n\t\t\t\tnew JunctionTableManager(schema.model, predicateFactory, whereBuilder, connectJunctionHandler, disconnectJunctionHandler, pathFactory))\n\t\t\t.addService('deleteExecutor', ({ predicateFactory, updateBuilderFactory, whereBuilder, pathFactory, schema }) =>\n\t\t\t\tnew DeleteExecutor(schema.model, predicateFactory, whereBuilder, updateBuilderFactory, pathFactory))\n\t\t\t.addService('updater', ({ predicateFactory, updateBuilderFactory, schema, schemaDatabaseMetadata }) =>\n\t\t\t\tnew Updater(schema.model, schemaDatabaseMetadata, predicateFactory, updateBuilderFactory))\n\t\t\t.addService('inserter', ({ insertBuilderFactory, providers, schema, schemaDatabaseMetadata }) =>\n\t\t\t\tnew Inserter(schema.model, schemaDatabaseMetadata, insertBuilderFactory, providers, { uuidVersion: schema.settings.content?.uuidVersion }))\n\t\t\t.addService('mapperFactory', ({ predicatesInjector, selectBuilderFactory, uniqueWhereExpander, whereBuilder, junctionTableManager, deleteExecutor, updater, inserter, pathFactory, providers, schema, schemaDatabaseMetadata }) => {\n\t\t\t\treturn new MapperFactory(\n\t\t\t\t\tdb,\n\t\t\t\t\tidentityId,\n\t\t\t\t\tschema.model,\n\t\t\t\t\tschemaDatabaseMetadata,\n\t\t\t\t\tpredicatesInjector,\n\t\t\t\t\tselectBuilderFactory,\n\t\t\t\t\tuniqueWhereExpander,\n\t\t\t\t\twhereBuilder,\n\t\t\t\t\tjunctionTableManager,\n\t\t\t\t\tdeleteExecutor,\n\t\t\t\t\tupdater,\n\t\t\t\t\tinserter,\n\t\t\t\t\tpathFactory,\n\t\t\t\t\tproviders,\n\t\t\t\t)\n\t\t\t})\n\n\t\t\t.addService('queryAstFactory', () =>\n\t\t\t\tnew GraphQlQueryAstFactory())\n\t\t\t.addService('readResolver', ({ mapperFactory, queryAstFactory }) =>\n\t\t\t\tnew ReadResolver(mapperFactory, queryAstFactory))\n\t\t\t.addService('validationDependencyCollector', () =>\n\t\t\t\tnew DependencyCollector())\n\t\t\t.addService('validationQueryAstFactory', ({ schema }) =>\n\t\t\t\tnew QueryAstFactory(schema.model))\n\t\t\t.addService('dataSelector', ({ validationQueryAstFactory, schema }) =>\n\t\t\t\tnew ValidationDataSelector(schema.model, validationQueryAstFactory))\n\t\t\t.addService('columnValueResolver', ({ providers }) =>\n\t\t\t\tnew ColumnValueResolver(providers))\n\t\t\t.addService('entityRulesResolver', ({ schema }) =>\n\t\t\t\tnew EntityRulesResolver(schema.validation, schema.model))\n\t\t\t.addService('inputPreValidator', ({ entityRulesResolver, columnValueResolver, dataSelector, schema }) =>\n\t\t\t\tnew InputPreValidator(schema.model, entityRulesResolver, columnValueResolver, dataSelector))\n\t\t\t.addService('mutationResolver', ({ mapperFactory, inputPreValidator, queryAstFactory, schema, schemaDatabaseMetadata }) =>\n\t\t\t\tnew MutationResolver(schema.model, mapperFactory, inputPreValidator, queryAstFactory, schemaDatabaseMetadata))\n\t\t\t.addService('validationResolver', ({ inputPreValidator, mapperFactory }) =>\n\t\t\t\tnew ValidationResolver(mapperFactory, inputPreValidator))\n\t\t\t.addService('refreshViewResolver', ({ schema, mapperFactory }) =>\n\t\t\t\tnew RefreshViewResolver(schema, mapperFactory))\n\t}\n\n\tpublic create(args: ExecutionContainerArgs): ExecutionContainer {\n\t\treturn this.createBuilder(args).build().pick('validationResolver', 'readResolver', 'mutationResolver', 'refreshViewResolver')\n\t}\n}\n\n"],"names":["Builder","schema","VariableInjector","PredicateFactory","PredicatesInjector","JoinBuilder","ConditionBuilder","PathFactory","WhereOptimizer","ConditionOptimizer","WhereBuilder","OrderByBuilder","RelationFetcher","FieldsVisitorFactory","MetaHandler","UniqueWhereExpander","HasManyToHasOneReducerExecutionHandler","PaginatedHasManyExecutionHandler","HasManyToHasOneReducer","PaginatedHasManyFieldProvider","SelectBuilder","InsertBuilderFactory","UpdateBuilderFactory","JunctionConnectHandler","JunctionDisconnectHandler","JunctionTableManager","DeleteExecutor","schemaDatabaseMetadata","Updater","Inserter","MapperFactory","GraphQlQueryAstFactory","ReadResolver","DependencyCollector","QueryAstFactory","ValidationDataSelector","ColumnValueResolver","EntityRulesResolver","InputPreValidator","MutationResolver","ValidationResolver","RefreshViewResolver"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ExecutionContainer.cjs","sources":["../../../../packages/engine-content-api/src/ExecutionContainer.ts"],"sourcesContent":["import { PredicateFactory, PredicatesInjector, VariableInjector } from './acl'\nimport {\n\tConditionBuilder,\n\tFieldsVisitorFactory,\n\tJoinBuilder,\n\tMetaHandler,\n\tOrderByBuilder,\n\tRelationFetcher,\n\tWhereBuilder,\n} from './mapper/select'\nimport { UniqueWhereExpander } from './inputProcessing'\nimport { HasManyToHasOneReducer, HasManyToHasOneReducerExecutionHandler } from './extensions'\nimport {\n\tDeleteExecutor,\n\tInsertBuilderFactory,\n\tInserter,\n\tJunctionConnectHandler,\n\tJunctionDisconnectHandler,\n\tJunctionTableManager,\n\tMapperFactory,\n\tPathFactory,\n\tSelectBuilder,\n\tSelectBuilderFactory,\n\tSelectHydrator,\n\tUpdateBuilderFactory,\n\tUpdater,\n} from './mapper'\nimport { Builder } from '@contember/dic'\nimport { Acl, Model, Schema } from '@contember/schema'\nimport { Client, DatabaseMetadata, SelectBuilder as DbSelectBuilder } from '@contember/database'\nimport { ParsedMembership, Providers } from '@contember/schema-utils'\nimport { PaginatedHasManyExecutionHandler } from './extensions/paginatedHasMany/PaginatedHasManyExecutionHandler'\nimport { PaginatedHasManyFieldProvider } from './extensions/paginatedHasMany/PaginatedHasManyFieldProvider'\nimport { WhereOptimizer } from './mapper/select/optimizer/WhereOptimizer'\nimport { ConditionOptimizer } from './mapper/select/optimizer/ConditionOptimizer'\nimport { GraphQlQueryAstFactory, MutationResolver, ReadResolver, ValidationResolver } from './resolvers'\nimport {\n\tColumnValueResolver,\n\tDependencyCollector,\n\tEntityRulesResolver, InputPreValidator,\n\tQueryAstFactory,\n\tValidationDataSelector,\n} from './input-validation'\nimport { RefreshViewResolver } from './resolvers/RefreshViewResolver'\n\nexport type ExecutionContainerArgs = {\n\tschema: Schema\n\tschemaMeta: { id?: number }\n\tschemaDatabaseMetadata: DatabaseMetadata\n\tdb: Client\n\tidentityId: string\n\tidentityVariables: Acl.VariablesMap\n\tpermissions: Acl.Permissions\n\tsystemSchema: string\n\tproject: { slug: string }\n\tstage: { id: string; slug: string }\n}\n\nexport interface ExecutionContainer {\n\treadResolver: ReadResolver\n\tmutationResolver: MutationResolver\n\tvalidationResolver: ValidationResolver\n\trefreshViewResolver: RefreshViewResolver\n}\n\nexport type ExecutionContainerBuilder = ReturnType<ExecutionContainerFactory['createBuilderInternal']>\nexport type ExecutionContainerHook = (builder: ExecutionContainerBuilder) => ExecutionContainerBuilder\n\nexport class ExecutionContainerFactory {\n\tpublic readonly hooks: ExecutionContainerHook[] = []\n\n\tconstructor(\n\t\tprivate readonly providers: Providers,\n\t) {\n\t}\n\n\tcreateBuilder(args: ExecutionContainerArgs): ExecutionContainerBuilder {\n\t\tconst builder = this.createBuilderInternal(args)\n\t\treturn this.hooks.reduce((acc, cb) => cb(acc), builder)\n\t}\n\n\tcreateBuilderInternal({ permissions, identityVariables, identityId, db, schema, schemaMeta, systemSchema, stage, project, schemaDatabaseMetadata }: ExecutionContainerArgs) {\n\t\treturn new Builder({})\n\t\t\t.addService('systemSchema', () =>\n\t\t\t\tsystemSchema)\n\t\t\t.addService('db', () =>\n\t\t\t\tdb)\n\t\t\t.addService('project', () =>\n\t\t\t\tproject)\n\t\t\t.addService('stage', () =>\n\t\t\t\tstage)\n\t\t\t.addService('schema', () =>\n\t\t\t\tschema)\n\t\t\t.addService('schemaMeta', () =>\n\t\t\t\tschemaMeta)\n\t\t\t.addService('schemaDatabaseMetadata', () =>\n\t\t\t\tschemaDatabaseMetadata)\n\t\t\t.addService('providers', () =>\n\t\t\t\tthis.providers)\n\t\t\t.addService('variableInjector', ({ schema }) =>\n\t\t\t\tnew VariableInjector(schema.model, identityVariables))\n\t\t\t.addService('predicateFactory', ({ variableInjector, schema }) =>\n\t\t\t\tnew PredicateFactory(permissions, schema.model, variableInjector))\n\t\t\t.addService('predicatesInjector', ({ predicateFactory, schema }) =>\n\t\t\t\tnew PredicatesInjector(schema.model, predicateFactory))\n\t\t\t.addService('joinBuilder', ({ schema }) =>\n\t\t\t\tnew JoinBuilder(schema.model))\n\t\t\t.addService('conditionBuilder', () =>\n\t\t\t\tnew ConditionBuilder())\n\t\t\t.addService('pathFactory', () =>\n\t\t\t\tnew PathFactory())\n\t\t\t.addService('whereOptimized', ({ schema }) =>\n\t\t\t\tnew WhereOptimizer(schema.model, new ConditionOptimizer()))\n\t\t\t.addService('whereBuilder', ({ joinBuilder, conditionBuilder, pathFactory, whereOptimized, schema }) =>\n\t\t\t\tnew WhereBuilder(\n\t\t\t\t\tschema.model,\n\t\t\t\t\tjoinBuilder,\n\t\t\t\t\tconditionBuilder,\n\t\t\t\t\tpathFactory,\n\t\t\t\t\twhereOptimized,\n\t\t\t\t\t(schema.settings.content?.useExistsInHasManyFilter ?? schema.settings.useExistsInHasManyFilter) === true,\n\t\t\t\t))\n\t\t\t.addService('orderByBuilder', ({ joinBuilder, schema }) =>\n\t\t\t\tnew OrderByBuilder(schema.model, joinBuilder))\n\t\t\t.addService('relationFetcher', ({ whereBuilder, orderByBuilder, predicatesInjector, pathFactory }) =>\n\t\t\t\tnew RelationFetcher(whereBuilder, orderByBuilder, predicatesInjector, pathFactory))\n\t\t\t.addService('fieldsVisitorFactory', ({ relationFetcher, predicateFactory, schema, providers }) =>\n\t\t\t\tnew FieldsVisitorFactory(schema.model, relationFetcher, predicateFactory, schema.settings.content ?? {}, providers))\n\t\t\t.addService('metaHandler', ({ whereBuilder, predicateFactory }) =>\n\t\t\t\tnew MetaHandler(whereBuilder, predicateFactory))\n\t\t\t.addService('uniqueWhereExpander', ({ schema }) =>\n\t\t\t\tnew UniqueWhereExpander(schema.model))\n\t\t\t.addService('hasManyToHasOneReducer', ({ uniqueWhereExpander, schema }) =>\n\t\t\t\tnew HasManyToHasOneReducerExecutionHandler(schema.model, uniqueWhereExpander))\n\t\t\t.addService('paginatedHasManyExecutionHandler', ({ relationFetcher, schema }) =>\n\t\t\t\tnew PaginatedHasManyExecutionHandler(schema.model, relationFetcher))\n\t\t\t.addService('selectHandlers', ({ hasManyToHasOneReducer, paginatedHasManyExecutionHandler }) => ({\n\t\t\t\t[HasManyToHasOneReducer.extensionName]: hasManyToHasOneReducer,\n\t\t\t\t[PaginatedHasManyFieldProvider.extensionName]: paginatedHasManyExecutionHandler,\n\t\t\t}))\n\t\t\t.addService('selectBuilderFactory', ({ whereBuilder, orderByBuilder, fieldsVisitorFactory, metaHandler, selectHandlers, pathFactory, predicateFactory, schema }) =>\n\t\t\t\tnew (class implements SelectBuilderFactory {\n\t\t\t\t\tcreate(qb: DbSelectBuilder, hydrator: SelectHydrator, relationPath: Model.AnyRelationContext[]): SelectBuilder {\n\t\t\t\t\t\treturn new SelectBuilder(\n\t\t\t\t\t\t\tschema.model,\n\t\t\t\t\t\t\twhereBuilder,\n\t\t\t\t\t\t\torderByBuilder,\n\t\t\t\t\t\t\tmetaHandler,\n\t\t\t\t\t\t\tqb,\n\t\t\t\t\t\t\thydrator,\n\t\t\t\t\t\t\tfieldsVisitorFactory,\n\t\t\t\t\t\t\tselectHandlers,\n\t\t\t\t\t\t\tpathFactory,\n\t\t\t\t\t\t\trelationPath,\n\t\t\t\t\t\t\tpredicateFactory,\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t})())\n\t\t\t.addService('insertBuilderFactory', ({ whereBuilder, pathFactory, schema, predicateFactory }) =>\n\t\t\t\tnew InsertBuilderFactory(schema.model, whereBuilder, pathFactory, predicateFactory))\n\t\t\t.addService('updateBuilderFactory', ({ whereBuilder, pathFactory, schema, predicateFactory }) =>\n\t\t\t\tnew UpdateBuilderFactory(schema.model, whereBuilder, pathFactory, predicateFactory))\n\t\t\t.addService('connectJunctionHandler', () =>\n\t\t\t\tnew JunctionConnectHandler())\n\t\t\t.addService('disconnectJunctionHandler', ({}) =>\n\t\t\t\tnew JunctionDisconnectHandler())\n\t\t\t.addService('junctionTableManager', ({ predicateFactory, whereBuilder, connectJunctionHandler, disconnectJunctionHandler, pathFactory, schema }) =>\n\t\t\t\tnew JunctionTableManager(schema.model, predicateFactory, whereBuilder, connectJunctionHandler, disconnectJunctionHandler, pathFactory))\n\t\t\t.addService('deleteExecutor', ({ predicateFactory, updateBuilderFactory, whereBuilder, pathFactory, schema }) =>\n\t\t\t\tnew DeleteExecutor(schema.model, predicateFactory, whereBuilder, updateBuilderFactory, pathFactory))\n\t\t\t.addService('updater', ({ updateBuilderFactory, schema }) =>\n\t\t\t\tnew Updater(schema.model, updateBuilderFactory))\n\t\t\t.addService('inserter', ({ insertBuilderFactory, providers, schema, schemaDatabaseMetadata }) =>\n\t\t\t\tnew Inserter(schema.model, schemaDatabaseMetadata, insertBuilderFactory, providers, { uuidVersion: schema.settings.content?.uuidVersion }))\n\t\t\t.addService('mapperFactory', ({ predicatesInjector, selectBuilderFactory, uniqueWhereExpander, whereBuilder, junctionTableManager, deleteExecutor, updater, inserter, pathFactory, providers, schema, schemaDatabaseMetadata }) => {\n\t\t\t\treturn new MapperFactory(\n\t\t\t\t\tdb,\n\t\t\t\t\tidentityId,\n\t\t\t\t\tschema.model,\n\t\t\t\t\tschemaDatabaseMetadata,\n\t\t\t\t\tpredicatesInjector,\n\t\t\t\t\tselectBuilderFactory,\n\t\t\t\t\tuniqueWhereExpander,\n\t\t\t\t\twhereBuilder,\n\t\t\t\t\tjunctionTableManager,\n\t\t\t\t\tdeleteExecutor,\n\t\t\t\t\tupdater,\n\t\t\t\t\tinserter,\n\t\t\t\t\tpathFactory,\n\t\t\t\t\tproviders,\n\t\t\t\t)\n\t\t\t})\n\n\t\t\t.addService('queryAstFactory', () =>\n\t\t\t\tnew GraphQlQueryAstFactory())\n\t\t\t.addService('readResolver', ({ mapperFactory, queryAstFactory }) =>\n\t\t\t\tnew ReadResolver(mapperFactory, queryAstFactory))\n\t\t\t.addService('validationDependencyCollector', () =>\n\t\t\t\tnew DependencyCollector())\n\t\t\t.addService('validationQueryAstFactory', ({ schema }) =>\n\t\t\t\tnew QueryAstFactory(schema.model))\n\t\t\t.addService('dataSelector', ({ validationQueryAstFactory, schema }) =>\n\t\t\t\tnew ValidationDataSelector(schema.model, validationQueryAstFactory))\n\t\t\t.addService('columnValueResolver', ({ providers }) =>\n\t\t\t\tnew ColumnValueResolver(providers))\n\t\t\t.addService('entityRulesResolver', ({ schema }) =>\n\t\t\t\tnew EntityRulesResolver(schema.validation, schema.model))\n\t\t\t.addService('inputPreValidator', ({ entityRulesResolver, columnValueResolver, dataSelector, schema }) =>\n\t\t\t\tnew InputPreValidator(schema.model, entityRulesResolver, columnValueResolver, dataSelector))\n\t\t\t.addService('mutationResolver', ({ mapperFactory, inputPreValidator, queryAstFactory, schema, schemaDatabaseMetadata }) =>\n\t\t\t\tnew MutationResolver(schema.model, mapperFactory, inputPreValidator, queryAstFactory, schemaDatabaseMetadata))\n\t\t\t.addService('validationResolver', ({ inputPreValidator, mapperFactory }) =>\n\t\t\t\tnew ValidationResolver(mapperFactory, inputPreValidator))\n\t\t\t.addService('refreshViewResolver', ({ schema, mapperFactory }) =>\n\t\t\t\tnew RefreshViewResolver(schema, mapperFactory))\n\t}\n\n\tpublic create(args: ExecutionContainerArgs): ExecutionContainer {\n\t\treturn this.createBuilder(args).build().pick('validationResolver', 'readResolver', 'mutationResolver', 'refreshViewResolver')\n\t}\n}\n\n"],"names":["Builder","schema","VariableInjector","PredicateFactory","PredicatesInjector","JoinBuilder","ConditionBuilder","PathFactory","WhereOptimizer","ConditionOptimizer","WhereBuilder","OrderByBuilder","RelationFetcher","FieldsVisitorFactory","MetaHandler","UniqueWhereExpander","HasManyToHasOneReducerExecutionHandler","PaginatedHasManyExecutionHandler","HasManyToHasOneReducer","PaginatedHasManyFieldProvider","SelectBuilder","InsertBuilderFactory","UpdateBuilderFactory","JunctionConnectHandler","JunctionDisconnectHandler","JunctionTableManager","DeleteExecutor","Updater","schemaDatabaseMetadata","Inserter","MapperFactory","GraphQlQueryAstFactory","ReadResolver","DependencyCollector","QueryAstFactory","ValidationDataSelector","ColumnValueResolver","EntityRulesResolver","InputPreValidator","MutationResolver","ValidationResolver","RefreshViewResolver"],"mappings":"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"}
|
|
@@ -84,7 +84,7 @@ class ExecutionContainerFactory {
|
|
|
84
84
|
predicateFactory
|
|
85
85
|
);
|
|
86
86
|
}
|
|
87
|
-
}()).addService("insertBuilderFactory", ({ whereBuilder, pathFactory, schema: schema2, predicateFactory }) => new InsertBuilderFactory(schema2.model, whereBuilder, pathFactory, predicateFactory)).addService("updateBuilderFactory", ({ whereBuilder, pathFactory, schema: schema2, predicateFactory }) => new UpdateBuilderFactory(schema2.model, whereBuilder, pathFactory, predicateFactory)).addService("connectJunctionHandler", () => new JunctionConnectHandler()).addService("disconnectJunctionHandler", ({}) => new JunctionDisconnectHandler()).addService("junctionTableManager", ({ predicateFactory, whereBuilder, connectJunctionHandler, disconnectJunctionHandler, pathFactory, schema: schema2 }) => new JunctionTableManager(schema2.model, predicateFactory, whereBuilder, connectJunctionHandler, disconnectJunctionHandler, pathFactory)).addService("deleteExecutor", ({ predicateFactory, updateBuilderFactory, whereBuilder, pathFactory, schema: schema2 }) => new DeleteExecutor(schema2.model, predicateFactory, whereBuilder, updateBuilderFactory, pathFactory)).addService("updater", ({
|
|
87
|
+
}()).addService("insertBuilderFactory", ({ whereBuilder, pathFactory, schema: schema2, predicateFactory }) => new InsertBuilderFactory(schema2.model, whereBuilder, pathFactory, predicateFactory)).addService("updateBuilderFactory", ({ whereBuilder, pathFactory, schema: schema2, predicateFactory }) => new UpdateBuilderFactory(schema2.model, whereBuilder, pathFactory, predicateFactory)).addService("connectJunctionHandler", () => new JunctionConnectHandler()).addService("disconnectJunctionHandler", ({}) => new JunctionDisconnectHandler()).addService("junctionTableManager", ({ predicateFactory, whereBuilder, connectJunctionHandler, disconnectJunctionHandler, pathFactory, schema: schema2 }) => new JunctionTableManager(schema2.model, predicateFactory, whereBuilder, connectJunctionHandler, disconnectJunctionHandler, pathFactory)).addService("deleteExecutor", ({ predicateFactory, updateBuilderFactory, whereBuilder, pathFactory, schema: schema2 }) => new DeleteExecutor(schema2.model, predicateFactory, whereBuilder, updateBuilderFactory, pathFactory)).addService("updater", ({ updateBuilderFactory, schema: schema2 }) => new Updater(schema2.model, updateBuilderFactory)).addService("inserter", ({ insertBuilderFactory, providers, schema: schema2, schemaDatabaseMetadata: schemaDatabaseMetadata2 }) => new Inserter(schema2.model, schemaDatabaseMetadata2, insertBuilderFactory, providers, { uuidVersion: schema2.settings.content?.uuidVersion })).addService("mapperFactory", ({ predicatesInjector, selectBuilderFactory, uniqueWhereExpander, whereBuilder, junctionTableManager, deleteExecutor, updater, inserter, pathFactory, providers, schema: schema2, schemaDatabaseMetadata: schemaDatabaseMetadata2 }) => {
|
|
88
88
|
return new MapperFactory(
|
|
89
89
|
db,
|
|
90
90
|
identityId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExecutionContainer.js","sources":["../../../../packages/engine-content-api/src/ExecutionContainer.ts"],"sourcesContent":["import { PredicateFactory, PredicatesInjector, VariableInjector } from './acl'\nimport {\n\tConditionBuilder,\n\tFieldsVisitorFactory,\n\tJoinBuilder,\n\tMetaHandler,\n\tOrderByBuilder,\n\tRelationFetcher,\n\tWhereBuilder,\n} from './mapper/select'\nimport { UniqueWhereExpander } from './inputProcessing'\nimport { HasManyToHasOneReducer, HasManyToHasOneReducerExecutionHandler } from './extensions'\nimport {\n\tDeleteExecutor,\n\tInsertBuilderFactory,\n\tInserter,\n\tJunctionConnectHandler,\n\tJunctionDisconnectHandler,\n\tJunctionTableManager,\n\tMapperFactory,\n\tPathFactory,\n\tSelectBuilder,\n\tSelectBuilderFactory,\n\tSelectHydrator,\n\tUpdateBuilderFactory,\n\tUpdater,\n} from './mapper'\nimport { Builder } from '@contember/dic'\nimport { Acl, Model, Schema } from '@contember/schema'\nimport { Client, DatabaseMetadata, SelectBuilder as DbSelectBuilder } from '@contember/database'\nimport { ParsedMembership, Providers } from '@contember/schema-utils'\nimport { PaginatedHasManyExecutionHandler } from './extensions/paginatedHasMany/PaginatedHasManyExecutionHandler'\nimport { PaginatedHasManyFieldProvider } from './extensions/paginatedHasMany/PaginatedHasManyFieldProvider'\nimport { WhereOptimizer } from './mapper/select/optimizer/WhereOptimizer'\nimport { ConditionOptimizer } from './mapper/select/optimizer/ConditionOptimizer'\nimport { GraphQlQueryAstFactory, MutationResolver, ReadResolver, ValidationResolver } from './resolvers'\nimport {\n\tColumnValueResolver,\n\tDependencyCollector,\n\tEntityRulesResolver, InputPreValidator,\n\tQueryAstFactory,\n\tValidationDataSelector,\n} from './input-validation'\nimport { RefreshViewResolver } from './resolvers/RefreshViewResolver'\n\nexport type ExecutionContainerArgs = {\n\tschema: Schema\n\tschemaMeta: { id?: number }\n\tschemaDatabaseMetadata: DatabaseMetadata\n\tdb: Client\n\tidentityId: string\n\tidentityVariables: Acl.VariablesMap\n\tpermissions: Acl.Permissions\n\tsystemSchema: string\n\tproject: { slug: string }\n\tstage: { id: string; slug: string }\n}\n\nexport interface ExecutionContainer {\n\treadResolver: ReadResolver\n\tmutationResolver: MutationResolver\n\tvalidationResolver: ValidationResolver\n\trefreshViewResolver: RefreshViewResolver\n}\n\nexport type ExecutionContainerBuilder = ReturnType<ExecutionContainerFactory['createBuilderInternal']>\nexport type ExecutionContainerHook = (builder: ExecutionContainerBuilder) => ExecutionContainerBuilder\n\nexport class ExecutionContainerFactory {\n\tpublic readonly hooks: ExecutionContainerHook[] = []\n\n\tconstructor(\n\t\tprivate readonly providers: Providers,\n\t) {\n\t}\n\n\tcreateBuilder(args: ExecutionContainerArgs): ExecutionContainerBuilder {\n\t\tconst builder = this.createBuilderInternal(args)\n\t\treturn this.hooks.reduce((acc, cb) => cb(acc), builder)\n\t}\n\n\tcreateBuilderInternal({ permissions, identityVariables, identityId, db, schema, schemaMeta, systemSchema, stage, project, schemaDatabaseMetadata }: ExecutionContainerArgs) {\n\t\treturn new Builder({})\n\t\t\t.addService('systemSchema', () =>\n\t\t\t\tsystemSchema)\n\t\t\t.addService('db', () =>\n\t\t\t\tdb)\n\t\t\t.addService('project', () =>\n\t\t\t\tproject)\n\t\t\t.addService('stage', () =>\n\t\t\t\tstage)\n\t\t\t.addService('schema', () =>\n\t\t\t\tschema)\n\t\t\t.addService('schemaMeta', () =>\n\t\t\t\tschemaMeta)\n\t\t\t.addService('schemaDatabaseMetadata', () =>\n\t\t\t\tschemaDatabaseMetadata)\n\t\t\t.addService('providers', () =>\n\t\t\t\tthis.providers)\n\t\t\t.addService('variableInjector', ({ schema }) =>\n\t\t\t\tnew VariableInjector(schema.model, identityVariables))\n\t\t\t.addService('predicateFactory', ({ variableInjector, schema }) =>\n\t\t\t\tnew PredicateFactory(permissions, schema.model, variableInjector))\n\t\t\t.addService('predicatesInjector', ({ predicateFactory, schema }) =>\n\t\t\t\tnew PredicatesInjector(schema.model, predicateFactory))\n\t\t\t.addService('joinBuilder', ({ schema }) =>\n\t\t\t\tnew JoinBuilder(schema.model))\n\t\t\t.addService('conditionBuilder', () =>\n\t\t\t\tnew ConditionBuilder())\n\t\t\t.addService('pathFactory', () =>\n\t\t\t\tnew PathFactory())\n\t\t\t.addService('whereOptimized', ({ schema }) =>\n\t\t\t\tnew WhereOptimizer(schema.model, new ConditionOptimizer()))\n\t\t\t.addService('whereBuilder', ({ joinBuilder, conditionBuilder, pathFactory, whereOptimized, schema }) =>\n\t\t\t\tnew WhereBuilder(\n\t\t\t\t\tschema.model,\n\t\t\t\t\tjoinBuilder,\n\t\t\t\t\tconditionBuilder,\n\t\t\t\t\tpathFactory,\n\t\t\t\t\twhereOptimized,\n\t\t\t\t\t(schema.settings.content?.useExistsInHasManyFilter ?? schema.settings.useExistsInHasManyFilter) === true,\n\t\t\t\t))\n\t\t\t.addService('orderByBuilder', ({ joinBuilder, schema }) =>\n\t\t\t\tnew OrderByBuilder(schema.model, joinBuilder))\n\t\t\t.addService('relationFetcher', ({ whereBuilder, orderByBuilder, predicatesInjector, pathFactory }) =>\n\t\t\t\tnew RelationFetcher(whereBuilder, orderByBuilder, predicatesInjector, pathFactory))\n\t\t\t.addService('fieldsVisitorFactory', ({ relationFetcher, predicateFactory, schema, providers }) =>\n\t\t\t\tnew FieldsVisitorFactory(schema.model, relationFetcher, predicateFactory, schema.settings.content ?? {}, providers))\n\t\t\t.addService('metaHandler', ({ whereBuilder, predicateFactory }) =>\n\t\t\t\tnew MetaHandler(whereBuilder, predicateFactory))\n\t\t\t.addService('uniqueWhereExpander', ({ schema }) =>\n\t\t\t\tnew UniqueWhereExpander(schema.model))\n\t\t\t.addService('hasManyToHasOneReducer', ({ uniqueWhereExpander, schema }) =>\n\t\t\t\tnew HasManyToHasOneReducerExecutionHandler(schema.model, uniqueWhereExpander))\n\t\t\t.addService('paginatedHasManyExecutionHandler', ({ relationFetcher, schema }) =>\n\t\t\t\tnew PaginatedHasManyExecutionHandler(schema.model, relationFetcher))\n\t\t\t.addService('selectHandlers', ({ hasManyToHasOneReducer, paginatedHasManyExecutionHandler }) => ({\n\t\t\t\t[HasManyToHasOneReducer.extensionName]: hasManyToHasOneReducer,\n\t\t\t\t[PaginatedHasManyFieldProvider.extensionName]: paginatedHasManyExecutionHandler,\n\t\t\t}))\n\t\t\t.addService('selectBuilderFactory', ({ whereBuilder, orderByBuilder, fieldsVisitorFactory, metaHandler, selectHandlers, pathFactory, predicateFactory, schema }) =>\n\t\t\t\tnew (class implements SelectBuilderFactory {\n\t\t\t\t\tcreate(qb: DbSelectBuilder, hydrator: SelectHydrator, relationPath: Model.AnyRelationContext[]): SelectBuilder {\n\t\t\t\t\t\treturn new SelectBuilder(\n\t\t\t\t\t\t\tschema.model,\n\t\t\t\t\t\t\twhereBuilder,\n\t\t\t\t\t\t\torderByBuilder,\n\t\t\t\t\t\t\tmetaHandler,\n\t\t\t\t\t\t\tqb,\n\t\t\t\t\t\t\thydrator,\n\t\t\t\t\t\t\tfieldsVisitorFactory,\n\t\t\t\t\t\t\tselectHandlers,\n\t\t\t\t\t\t\tpathFactory,\n\t\t\t\t\t\t\trelationPath,\n\t\t\t\t\t\t\tpredicateFactory,\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t})())\n\t\t\t.addService('insertBuilderFactory', ({ whereBuilder, pathFactory, schema, predicateFactory }) =>\n\t\t\t\tnew InsertBuilderFactory(schema.model, whereBuilder, pathFactory, predicateFactory))\n\t\t\t.addService('updateBuilderFactory', ({ whereBuilder, pathFactory, schema, predicateFactory }) =>\n\t\t\t\tnew UpdateBuilderFactory(schema.model, whereBuilder, pathFactory, predicateFactory))\n\t\t\t.addService('connectJunctionHandler', () =>\n\t\t\t\tnew JunctionConnectHandler())\n\t\t\t.addService('disconnectJunctionHandler', ({}) =>\n\t\t\t\tnew JunctionDisconnectHandler())\n\t\t\t.addService('junctionTableManager', ({ predicateFactory, whereBuilder, connectJunctionHandler, disconnectJunctionHandler, pathFactory, schema }) =>\n\t\t\t\tnew JunctionTableManager(schema.model, predicateFactory, whereBuilder, connectJunctionHandler, disconnectJunctionHandler, pathFactory))\n\t\t\t.addService('deleteExecutor', ({ predicateFactory, updateBuilderFactory, whereBuilder, pathFactory, schema }) =>\n\t\t\t\tnew DeleteExecutor(schema.model, predicateFactory, whereBuilder, updateBuilderFactory, pathFactory))\n\t\t\t.addService('updater', ({ predicateFactory, updateBuilderFactory, schema, schemaDatabaseMetadata }) =>\n\t\t\t\tnew Updater(schema.model, schemaDatabaseMetadata, predicateFactory, updateBuilderFactory))\n\t\t\t.addService('inserter', ({ insertBuilderFactory, providers, schema, schemaDatabaseMetadata }) =>\n\t\t\t\tnew Inserter(schema.model, schemaDatabaseMetadata, insertBuilderFactory, providers, { uuidVersion: schema.settings.content?.uuidVersion }))\n\t\t\t.addService('mapperFactory', ({ predicatesInjector, selectBuilderFactory, uniqueWhereExpander, whereBuilder, junctionTableManager, deleteExecutor, updater, inserter, pathFactory, providers, schema, schemaDatabaseMetadata }) => {\n\t\t\t\treturn new MapperFactory(\n\t\t\t\t\tdb,\n\t\t\t\t\tidentityId,\n\t\t\t\t\tschema.model,\n\t\t\t\t\tschemaDatabaseMetadata,\n\t\t\t\t\tpredicatesInjector,\n\t\t\t\t\tselectBuilderFactory,\n\t\t\t\t\tuniqueWhereExpander,\n\t\t\t\t\twhereBuilder,\n\t\t\t\t\tjunctionTableManager,\n\t\t\t\t\tdeleteExecutor,\n\t\t\t\t\tupdater,\n\t\t\t\t\tinserter,\n\t\t\t\t\tpathFactory,\n\t\t\t\t\tproviders,\n\t\t\t\t)\n\t\t\t})\n\n\t\t\t.addService('queryAstFactory', () =>\n\t\t\t\tnew GraphQlQueryAstFactory())\n\t\t\t.addService('readResolver', ({ mapperFactory, queryAstFactory }) =>\n\t\t\t\tnew ReadResolver(mapperFactory, queryAstFactory))\n\t\t\t.addService('validationDependencyCollector', () =>\n\t\t\t\tnew DependencyCollector())\n\t\t\t.addService('validationQueryAstFactory', ({ schema }) =>\n\t\t\t\tnew QueryAstFactory(schema.model))\n\t\t\t.addService('dataSelector', ({ validationQueryAstFactory, schema }) =>\n\t\t\t\tnew ValidationDataSelector(schema.model, validationQueryAstFactory))\n\t\t\t.addService('columnValueResolver', ({ providers }) =>\n\t\t\t\tnew ColumnValueResolver(providers))\n\t\t\t.addService('entityRulesResolver', ({ schema }) =>\n\t\t\t\tnew EntityRulesResolver(schema.validation, schema.model))\n\t\t\t.addService('inputPreValidator', ({ entityRulesResolver, columnValueResolver, dataSelector, schema }) =>\n\t\t\t\tnew InputPreValidator(schema.model, entityRulesResolver, columnValueResolver, dataSelector))\n\t\t\t.addService('mutationResolver', ({ mapperFactory, inputPreValidator, queryAstFactory, schema, schemaDatabaseMetadata }) =>\n\t\t\t\tnew MutationResolver(schema.model, mapperFactory, inputPreValidator, queryAstFactory, schemaDatabaseMetadata))\n\t\t\t.addService('validationResolver', ({ inputPreValidator, mapperFactory }) =>\n\t\t\t\tnew ValidationResolver(mapperFactory, inputPreValidator))\n\t\t\t.addService('refreshViewResolver', ({ schema, mapperFactory }) =>\n\t\t\t\tnew RefreshViewResolver(schema, mapperFactory))\n\t}\n\n\tpublic create(args: ExecutionContainerArgs): ExecutionContainer {\n\t\treturn this.createBuilder(args).build().pick('validationResolver', 'readResolver', 'mutationResolver', 'refreshViewResolver')\n\t}\n}\n\n"],"names":["schema","schemaDatabaseMetadata"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ExecutionContainer.js","sources":["../../../../packages/engine-content-api/src/ExecutionContainer.ts"],"sourcesContent":["import { PredicateFactory, PredicatesInjector, VariableInjector } from './acl'\nimport {\n\tConditionBuilder,\n\tFieldsVisitorFactory,\n\tJoinBuilder,\n\tMetaHandler,\n\tOrderByBuilder,\n\tRelationFetcher,\n\tWhereBuilder,\n} from './mapper/select'\nimport { UniqueWhereExpander } from './inputProcessing'\nimport { HasManyToHasOneReducer, HasManyToHasOneReducerExecutionHandler } from './extensions'\nimport {\n\tDeleteExecutor,\n\tInsertBuilderFactory,\n\tInserter,\n\tJunctionConnectHandler,\n\tJunctionDisconnectHandler,\n\tJunctionTableManager,\n\tMapperFactory,\n\tPathFactory,\n\tSelectBuilder,\n\tSelectBuilderFactory,\n\tSelectHydrator,\n\tUpdateBuilderFactory,\n\tUpdater,\n} from './mapper'\nimport { Builder } from '@contember/dic'\nimport { Acl, Model, Schema } from '@contember/schema'\nimport { Client, DatabaseMetadata, SelectBuilder as DbSelectBuilder } from '@contember/database'\nimport { ParsedMembership, Providers } from '@contember/schema-utils'\nimport { PaginatedHasManyExecutionHandler } from './extensions/paginatedHasMany/PaginatedHasManyExecutionHandler'\nimport { PaginatedHasManyFieldProvider } from './extensions/paginatedHasMany/PaginatedHasManyFieldProvider'\nimport { WhereOptimizer } from './mapper/select/optimizer/WhereOptimizer'\nimport { ConditionOptimizer } from './mapper/select/optimizer/ConditionOptimizer'\nimport { GraphQlQueryAstFactory, MutationResolver, ReadResolver, ValidationResolver } from './resolvers'\nimport {\n\tColumnValueResolver,\n\tDependencyCollector,\n\tEntityRulesResolver, InputPreValidator,\n\tQueryAstFactory,\n\tValidationDataSelector,\n} from './input-validation'\nimport { RefreshViewResolver } from './resolvers/RefreshViewResolver'\n\nexport type ExecutionContainerArgs = {\n\tschema: Schema\n\tschemaMeta: { id?: number }\n\tschemaDatabaseMetadata: DatabaseMetadata\n\tdb: Client\n\tidentityId: string\n\tidentityVariables: Acl.VariablesMap\n\tpermissions: Acl.Permissions\n\tsystemSchema: string\n\tproject: { slug: string }\n\tstage: { id: string; slug: string }\n}\n\nexport interface ExecutionContainer {\n\treadResolver: ReadResolver\n\tmutationResolver: MutationResolver\n\tvalidationResolver: ValidationResolver\n\trefreshViewResolver: RefreshViewResolver\n}\n\nexport type ExecutionContainerBuilder = ReturnType<ExecutionContainerFactory['createBuilderInternal']>\nexport type ExecutionContainerHook = (builder: ExecutionContainerBuilder) => ExecutionContainerBuilder\n\nexport class ExecutionContainerFactory {\n\tpublic readonly hooks: ExecutionContainerHook[] = []\n\n\tconstructor(\n\t\tprivate readonly providers: Providers,\n\t) {\n\t}\n\n\tcreateBuilder(args: ExecutionContainerArgs): ExecutionContainerBuilder {\n\t\tconst builder = this.createBuilderInternal(args)\n\t\treturn this.hooks.reduce((acc, cb) => cb(acc), builder)\n\t}\n\n\tcreateBuilderInternal({ permissions, identityVariables, identityId, db, schema, schemaMeta, systemSchema, stage, project, schemaDatabaseMetadata }: ExecutionContainerArgs) {\n\t\treturn new Builder({})\n\t\t\t.addService('systemSchema', () =>\n\t\t\t\tsystemSchema)\n\t\t\t.addService('db', () =>\n\t\t\t\tdb)\n\t\t\t.addService('project', () =>\n\t\t\t\tproject)\n\t\t\t.addService('stage', () =>\n\t\t\t\tstage)\n\t\t\t.addService('schema', () =>\n\t\t\t\tschema)\n\t\t\t.addService('schemaMeta', () =>\n\t\t\t\tschemaMeta)\n\t\t\t.addService('schemaDatabaseMetadata', () =>\n\t\t\t\tschemaDatabaseMetadata)\n\t\t\t.addService('providers', () =>\n\t\t\t\tthis.providers)\n\t\t\t.addService('variableInjector', ({ schema }) =>\n\t\t\t\tnew VariableInjector(schema.model, identityVariables))\n\t\t\t.addService('predicateFactory', ({ variableInjector, schema }) =>\n\t\t\t\tnew PredicateFactory(permissions, schema.model, variableInjector))\n\t\t\t.addService('predicatesInjector', ({ predicateFactory, schema }) =>\n\t\t\t\tnew PredicatesInjector(schema.model, predicateFactory))\n\t\t\t.addService('joinBuilder', ({ schema }) =>\n\t\t\t\tnew JoinBuilder(schema.model))\n\t\t\t.addService('conditionBuilder', () =>\n\t\t\t\tnew ConditionBuilder())\n\t\t\t.addService('pathFactory', () =>\n\t\t\t\tnew PathFactory())\n\t\t\t.addService('whereOptimized', ({ schema }) =>\n\t\t\t\tnew WhereOptimizer(schema.model, new ConditionOptimizer()))\n\t\t\t.addService('whereBuilder', ({ joinBuilder, conditionBuilder, pathFactory, whereOptimized, schema }) =>\n\t\t\t\tnew WhereBuilder(\n\t\t\t\t\tschema.model,\n\t\t\t\t\tjoinBuilder,\n\t\t\t\t\tconditionBuilder,\n\t\t\t\t\tpathFactory,\n\t\t\t\t\twhereOptimized,\n\t\t\t\t\t(schema.settings.content?.useExistsInHasManyFilter ?? schema.settings.useExistsInHasManyFilter) === true,\n\t\t\t\t))\n\t\t\t.addService('orderByBuilder', ({ joinBuilder, schema }) =>\n\t\t\t\tnew OrderByBuilder(schema.model, joinBuilder))\n\t\t\t.addService('relationFetcher', ({ whereBuilder, orderByBuilder, predicatesInjector, pathFactory }) =>\n\t\t\t\tnew RelationFetcher(whereBuilder, orderByBuilder, predicatesInjector, pathFactory))\n\t\t\t.addService('fieldsVisitorFactory', ({ relationFetcher, predicateFactory, schema, providers }) =>\n\t\t\t\tnew FieldsVisitorFactory(schema.model, relationFetcher, predicateFactory, schema.settings.content ?? {}, providers))\n\t\t\t.addService('metaHandler', ({ whereBuilder, predicateFactory }) =>\n\t\t\t\tnew MetaHandler(whereBuilder, predicateFactory))\n\t\t\t.addService('uniqueWhereExpander', ({ schema }) =>\n\t\t\t\tnew UniqueWhereExpander(schema.model))\n\t\t\t.addService('hasManyToHasOneReducer', ({ uniqueWhereExpander, schema }) =>\n\t\t\t\tnew HasManyToHasOneReducerExecutionHandler(schema.model, uniqueWhereExpander))\n\t\t\t.addService('paginatedHasManyExecutionHandler', ({ relationFetcher, schema }) =>\n\t\t\t\tnew PaginatedHasManyExecutionHandler(schema.model, relationFetcher))\n\t\t\t.addService('selectHandlers', ({ hasManyToHasOneReducer, paginatedHasManyExecutionHandler }) => ({\n\t\t\t\t[HasManyToHasOneReducer.extensionName]: hasManyToHasOneReducer,\n\t\t\t\t[PaginatedHasManyFieldProvider.extensionName]: paginatedHasManyExecutionHandler,\n\t\t\t}))\n\t\t\t.addService('selectBuilderFactory', ({ whereBuilder, orderByBuilder, fieldsVisitorFactory, metaHandler, selectHandlers, pathFactory, predicateFactory, schema }) =>\n\t\t\t\tnew (class implements SelectBuilderFactory {\n\t\t\t\t\tcreate(qb: DbSelectBuilder, hydrator: SelectHydrator, relationPath: Model.AnyRelationContext[]): SelectBuilder {\n\t\t\t\t\t\treturn new SelectBuilder(\n\t\t\t\t\t\t\tschema.model,\n\t\t\t\t\t\t\twhereBuilder,\n\t\t\t\t\t\t\torderByBuilder,\n\t\t\t\t\t\t\tmetaHandler,\n\t\t\t\t\t\t\tqb,\n\t\t\t\t\t\t\thydrator,\n\t\t\t\t\t\t\tfieldsVisitorFactory,\n\t\t\t\t\t\t\tselectHandlers,\n\t\t\t\t\t\t\tpathFactory,\n\t\t\t\t\t\t\trelationPath,\n\t\t\t\t\t\t\tpredicateFactory,\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t})())\n\t\t\t.addService('insertBuilderFactory', ({ whereBuilder, pathFactory, schema, predicateFactory }) =>\n\t\t\t\tnew InsertBuilderFactory(schema.model, whereBuilder, pathFactory, predicateFactory))\n\t\t\t.addService('updateBuilderFactory', ({ whereBuilder, pathFactory, schema, predicateFactory }) =>\n\t\t\t\tnew UpdateBuilderFactory(schema.model, whereBuilder, pathFactory, predicateFactory))\n\t\t\t.addService('connectJunctionHandler', () =>\n\t\t\t\tnew JunctionConnectHandler())\n\t\t\t.addService('disconnectJunctionHandler', ({}) =>\n\t\t\t\tnew JunctionDisconnectHandler())\n\t\t\t.addService('junctionTableManager', ({ predicateFactory, whereBuilder, connectJunctionHandler, disconnectJunctionHandler, pathFactory, schema }) =>\n\t\t\t\tnew JunctionTableManager(schema.model, predicateFactory, whereBuilder, connectJunctionHandler, disconnectJunctionHandler, pathFactory))\n\t\t\t.addService('deleteExecutor', ({ predicateFactory, updateBuilderFactory, whereBuilder, pathFactory, schema }) =>\n\t\t\t\tnew DeleteExecutor(schema.model, predicateFactory, whereBuilder, updateBuilderFactory, pathFactory))\n\t\t\t.addService('updater', ({ updateBuilderFactory, schema }) =>\n\t\t\t\tnew Updater(schema.model, updateBuilderFactory))\n\t\t\t.addService('inserter', ({ insertBuilderFactory, providers, schema, schemaDatabaseMetadata }) =>\n\t\t\t\tnew Inserter(schema.model, schemaDatabaseMetadata, insertBuilderFactory, providers, { uuidVersion: schema.settings.content?.uuidVersion }))\n\t\t\t.addService('mapperFactory', ({ predicatesInjector, selectBuilderFactory, uniqueWhereExpander, whereBuilder, junctionTableManager, deleteExecutor, updater, inserter, pathFactory, providers, schema, schemaDatabaseMetadata }) => {\n\t\t\t\treturn new MapperFactory(\n\t\t\t\t\tdb,\n\t\t\t\t\tidentityId,\n\t\t\t\t\tschema.model,\n\t\t\t\t\tschemaDatabaseMetadata,\n\t\t\t\t\tpredicatesInjector,\n\t\t\t\t\tselectBuilderFactory,\n\t\t\t\t\tuniqueWhereExpander,\n\t\t\t\t\twhereBuilder,\n\t\t\t\t\tjunctionTableManager,\n\t\t\t\t\tdeleteExecutor,\n\t\t\t\t\tupdater,\n\t\t\t\t\tinserter,\n\t\t\t\t\tpathFactory,\n\t\t\t\t\tproviders,\n\t\t\t\t)\n\t\t\t})\n\n\t\t\t.addService('queryAstFactory', () =>\n\t\t\t\tnew GraphQlQueryAstFactory())\n\t\t\t.addService('readResolver', ({ mapperFactory, queryAstFactory }) =>\n\t\t\t\tnew ReadResolver(mapperFactory, queryAstFactory))\n\t\t\t.addService('validationDependencyCollector', () =>\n\t\t\t\tnew DependencyCollector())\n\t\t\t.addService('validationQueryAstFactory', ({ schema }) =>\n\t\t\t\tnew QueryAstFactory(schema.model))\n\t\t\t.addService('dataSelector', ({ validationQueryAstFactory, schema }) =>\n\t\t\t\tnew ValidationDataSelector(schema.model, validationQueryAstFactory))\n\t\t\t.addService('columnValueResolver', ({ providers }) =>\n\t\t\t\tnew ColumnValueResolver(providers))\n\t\t\t.addService('entityRulesResolver', ({ schema }) =>\n\t\t\t\tnew EntityRulesResolver(schema.validation, schema.model))\n\t\t\t.addService('inputPreValidator', ({ entityRulesResolver, columnValueResolver, dataSelector, schema }) =>\n\t\t\t\tnew InputPreValidator(schema.model, entityRulesResolver, columnValueResolver, dataSelector))\n\t\t\t.addService('mutationResolver', ({ mapperFactory, inputPreValidator, queryAstFactory, schema, schemaDatabaseMetadata }) =>\n\t\t\t\tnew MutationResolver(schema.model, mapperFactory, inputPreValidator, queryAstFactory, schemaDatabaseMetadata))\n\t\t\t.addService('validationResolver', ({ inputPreValidator, mapperFactory }) =>\n\t\t\t\tnew ValidationResolver(mapperFactory, inputPreValidator))\n\t\t\t.addService('refreshViewResolver', ({ schema, mapperFactory }) =>\n\t\t\t\tnew RefreshViewResolver(schema, mapperFactory))\n\t}\n\n\tpublic create(args: ExecutionContainerArgs): ExecutionContainer {\n\t\treturn this.createBuilder(args).build().pick('validationResolver', 'readResolver', 'mutationResolver', 'refreshViewResolver')\n\t}\n}\n\n"],"names":["schema","schemaDatabaseMetadata"],"mappings":"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"}
|
|
@@ -221,7 +221,7 @@ const prependPath = (path, results) => results.map((it) => ({
|
|
|
221
221
|
...it,
|
|
222
222
|
paths: (it.paths.length === 0 ? [[]] : it.paths).map((it2) => [...path, ...it2])
|
|
223
223
|
}));
|
|
224
|
-
const getInsertPrimary = (result) => result[0] && result[0].result === "ok" && result[0].type === "create" ? result[0].primary : void 0;
|
|
224
|
+
const getInsertPrimary = (result) => !result.some((it) => it.error) && result[0] && result[0].result === "ok" && result[0].type === "create" ? result[0].primary : void 0;
|
|
225
225
|
exports.ConstraintType = ConstraintType;
|
|
226
226
|
exports.InputErrorKind = InputErrorKind;
|
|
227
227
|
exports.MutationConstraintViolationError = MutationConstraintViolationError;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Result.cjs","sources":["../../../../../packages/engine-content-api/src/mapper/Result.ts"],"sourcesContent":["import { Input, Model, Value } from '@contember/schema'\nimport { MapperInput } from './types'\n\nexport enum MutationResultType {\n\tok = 'ok',\n\tnothingToDo = 'nothingToDo',\n\tnotFoundError = 'notFoundError',\n\tconstraintViolationError = 'constraintViolationError',\n\tnoResultError = 'noResultError',\n\tvalidationError = 'validationError',\n\tinputError = 'inputError',\n\tsqlError = 'sqlError',\n}\n\nexport enum MutationResultHint {\n\tsqlError = 'sqlError',\n\tsubSequentSqlError = 'subsequentSqlError',\n}\n\nexport enum ModificationType {\n\tcreate = 'create',\n\tupdate = 'update',\n\tdelete = 'delete',\n\tjunctionUpdate = 'junctionUpdate',\n}\n\nexport type MutationResult =\n\t| MutationUpdateOk\n\t| MutationCreateOk\n\t| MutationDeleteOk\n\t| MutationJunctionUpdateOk\n\t| MutationEntryNotFoundError\n\t| MutationNothingToDo\n\t| MutationConstraintViolationError\n\t| MutationNoResultError\n\t| MutationInputError\n\t| MutationSqlError\n\nexport type MutationResultList = MutationResult[]\n\ntype Path = ({ field: string } | { index: number; alias?: string })[]\n\ninterface MutationResultInterface {\n\terror: boolean\n\tresult: MutationResultType\n\tpaths: Path[]\n\tmessage?: string\n\thints: MutationResultHint[]\n}\n\nexport type RowValues = { [fieldName: string]: Value.FieldValue }\n\nexport class MutationUpdateOk implements MutationResultInterface {\n\terror = false\n\tresult = MutationResultType.ok as const\n\ttype = ModificationType.update as const\n\thints: MutationResultHint[] = []\n\n\tconstructor(\n\t\tpublic readonly paths: Path[],\n\t\tpublic readonly entity: Model.Entity,\n\t\tpublic readonly primary: Value.PrimaryValue,\n\t\tpublic readonly input: MapperInput.UpdateDataInput,\n\t\tpublic readonly values: RowValues,\n\t\tpublic readonly oldValues?: RowValues,\n\t) {}\n}\n\nexport class MutationCreateOk implements MutationResultInterface {\n\terror = false\n\tresult = MutationResultType.ok as const\n\ttype = ModificationType.create as const\n\thints: MutationResultHint[] = []\n\n\tconstructor(\n\t\tpublic readonly paths: Path[],\n\t\tpublic readonly entity: Model.Entity,\n\t\tpublic readonly primary: Value.PrimaryValue,\n\t\tpublic readonly input: MapperInput.CreateDataInput,\n\t\tpublic readonly values: RowValues,\n\t) {}\n}\n\nexport class MutationDeleteOk implements MutationResultInterface {\n\terror = false\n\tresult = MutationResultType.ok as const\n\ttype = ModificationType.delete as const\n\thints: MutationResultHint[] = []\n\n\tconstructor(\n\t\tpublic readonly paths: Path[],\n\t\tpublic readonly entity: Model.Entity,\n\t\tpublic readonly primary: Value.PrimaryValue,\n\t) {}\n}\n\nexport class MutationJunctionUpdateOk implements MutationResultInterface {\n\terror = false\n\tresult = MutationResultType.ok as const\n\ttype = ModificationType.junctionUpdate as const\n\thints: MutationResultHint[] = []\n\n\tconstructor(\n\t\tpublic readonly paths: Path[],\n\t\tpublic readonly entity: Model.Entity,\n\t\tpublic readonly relation: Model.ManyHasManyOwningRelation,\n\t\tpublic readonly owningUnique: Input.PrimaryValue,\n\t\tpublic readonly inverseUnique: Input.PrimaryValue,\n\t) {}\n}\n\nexport enum NothingToDoReason {\n\tnoData = 'noData',\n\temptyRelation = 'emptyRelation',\n\talreadyExists = 'alreadyExists',\n\taborted = 'aborted',\n\talreadyDeleted = 'alreadyDeleted',\n}\n\nexport class MutationNothingToDo implements MutationResultInterface {\n\terror = false\n\tresult = MutationResultType.nothingToDo as const\n\thints: MutationResultHint[] = []\n\n\tconstructor(public readonly paths: Path[], public readonly reason: NothingToDoReason) {}\n}\n\nexport enum InputErrorKind {\n\tnonUniqueWhere = 'nonUniqueWhere',\n\tinvalidData = 'invalidData',\n}\n\nexport class MutationInputError implements MutationResultInterface {\n\terror = true\n\tresult = MutationResultType.inputError as const\n\n\tconstructor(\n\t\tpublic readonly paths: Path[],\n\t\tpublic readonly kind: InputErrorKind,\n\t\tpublic readonly message?: string,\n\t\tpublic readonly hints: MutationResultHint[] = [],\n\t) {}\n}\n\nexport class MutationSqlError implements MutationResultInterface {\n\terror = true\n\tresult = MutationResultType.sqlError as const\n\n\tconstructor(\n\t\tpublic readonly paths: Path[],\n\t\tpublic readonly message?: string,\n\t\tpublic readonly hints: MutationResultHint[] = [],\n\t) {}\n}\n\nexport enum ConstraintType {\n\tnotNull = 'notNull',\n\tuniqueKey = 'uniqueKey',\n\tforeignKey = 'foreignKey',\n}\n\nexport class MutationConstraintViolationError implements MutationResultInterface {\n\terror = true\n\tresult = MutationResultType.constraintViolationError as const\n\n\tconstructor(\n\t\tpublic readonly paths: Path[],\n\t\tpublic readonly constraint: ConstraintType,\n\t\tpublic readonly message?: string,\n\t\tpublic readonly hints: MutationResultHint[] = [],\n\t) {}\n}\n\n// maybe denied by acl\nexport class MutationEntryNotFoundError implements MutationResultInterface {\n\terror = true\n\tresult = MutationResultType.notFoundError as const\n\thints: MutationResultHint[] = []\n\tmessage: string\n\n\tconstructor(public readonly paths: Path[], public readonly where: Input.UniqueWhere | Input.
|
|
1
|
+
{"version":3,"file":"Result.cjs","sources":["../../../../../packages/engine-content-api/src/mapper/Result.ts"],"sourcesContent":["import { Input, Model, Value } from '@contember/schema'\nimport { MapperInput } from './types'\n\nexport enum MutationResultType {\n\tok = 'ok',\n\tnothingToDo = 'nothingToDo',\n\tnotFoundError = 'notFoundError',\n\tconstraintViolationError = 'constraintViolationError',\n\tnoResultError = 'noResultError',\n\tvalidationError = 'validationError',\n\tinputError = 'inputError',\n\tsqlError = 'sqlError',\n}\n\nexport enum MutationResultHint {\n\tsqlError = 'sqlError',\n\tsubSequentSqlError = 'subsequentSqlError',\n}\n\nexport enum ModificationType {\n\tcreate = 'create',\n\tupdate = 'update',\n\tdelete = 'delete',\n\tjunctionUpdate = 'junctionUpdate',\n}\n\nexport type MutationResult =\n\t| MutationUpdateOk\n\t| MutationCreateOk\n\t| MutationDeleteOk\n\t| MutationJunctionUpdateOk\n\t| MutationEntryNotFoundError\n\t| MutationNothingToDo\n\t| MutationConstraintViolationError\n\t| MutationNoResultError\n\t| MutationInputError\n\t| MutationSqlError\n\nexport type MutationResultList = MutationResult[]\n\ntype Path = ({ field: string } | { index: number; alias?: string })[]\n\ninterface MutationResultInterface {\n\terror: boolean\n\tresult: MutationResultType\n\tpaths: Path[]\n\tmessage?: string\n\thints: MutationResultHint[]\n}\n\nexport type RowValues = { [fieldName: string]: Value.FieldValue }\n\nexport class MutationUpdateOk implements MutationResultInterface {\n\terror = false\n\tresult = MutationResultType.ok as const\n\ttype = ModificationType.update as const\n\thints: MutationResultHint[] = []\n\n\tconstructor(\n\t\tpublic readonly paths: Path[],\n\t\tpublic readonly entity: Model.Entity,\n\t\tpublic readonly primary: Value.PrimaryValue,\n\t\tpublic readonly input: MapperInput.UpdateDataInput,\n\t\tpublic readonly values: RowValues,\n\t\tpublic readonly oldValues?: RowValues,\n\t) {}\n}\n\nexport class MutationCreateOk implements MutationResultInterface {\n\terror = false\n\tresult = MutationResultType.ok as const\n\ttype = ModificationType.create as const\n\thints: MutationResultHint[] = []\n\n\tconstructor(\n\t\tpublic readonly paths: Path[],\n\t\tpublic readonly entity: Model.Entity,\n\t\tpublic readonly primary: Value.PrimaryValue,\n\t\tpublic readonly input: MapperInput.CreateDataInput,\n\t\tpublic readonly values: RowValues,\n\t) {}\n}\n\nexport class MutationDeleteOk implements MutationResultInterface {\n\terror = false\n\tresult = MutationResultType.ok as const\n\ttype = ModificationType.delete as const\n\thints: MutationResultHint[] = []\n\n\tconstructor(\n\t\tpublic readonly paths: Path[],\n\t\tpublic readonly entity: Model.Entity,\n\t\tpublic readonly primary: Value.PrimaryValue,\n\t) {}\n}\n\nexport class MutationJunctionUpdateOk implements MutationResultInterface {\n\terror = false\n\tresult = MutationResultType.ok as const\n\ttype = ModificationType.junctionUpdate as const\n\thints: MutationResultHint[] = []\n\n\tconstructor(\n\t\tpublic readonly paths: Path[],\n\t\tpublic readonly entity: Model.Entity,\n\t\tpublic readonly relation: Model.ManyHasManyOwningRelation,\n\t\tpublic readonly owningUnique: Input.PrimaryValue,\n\t\tpublic readonly inverseUnique: Input.PrimaryValue,\n\t) {}\n}\n\nexport enum NothingToDoReason {\n\tnoData = 'noData',\n\temptyRelation = 'emptyRelation',\n\talreadyExists = 'alreadyExists',\n\taborted = 'aborted',\n\talreadyDeleted = 'alreadyDeleted',\n}\n\nexport class MutationNothingToDo implements MutationResultInterface {\n\terror = false\n\tresult = MutationResultType.nothingToDo as const\n\thints: MutationResultHint[] = []\n\n\tconstructor(public readonly paths: Path[], public readonly reason: NothingToDoReason) {}\n}\n\nexport enum InputErrorKind {\n\tnonUniqueWhere = 'nonUniqueWhere',\n\tinvalidData = 'invalidData',\n}\n\nexport class MutationInputError implements MutationResultInterface {\n\terror = true\n\tresult = MutationResultType.inputError as const\n\n\tconstructor(\n\t\tpublic readonly paths: Path[],\n\t\tpublic readonly kind: InputErrorKind,\n\t\tpublic readonly message?: string,\n\t\tpublic readonly hints: MutationResultHint[] = [],\n\t) {}\n}\n\nexport class MutationSqlError implements MutationResultInterface {\n\terror = true\n\tresult = MutationResultType.sqlError as const\n\n\tconstructor(\n\t\tpublic readonly paths: Path[],\n\t\tpublic readonly message?: string,\n\t\tpublic readonly hints: MutationResultHint[] = [],\n\t) {}\n}\n\nexport enum ConstraintType {\n\tnotNull = 'notNull',\n\tuniqueKey = 'uniqueKey',\n\tforeignKey = 'foreignKey',\n}\n\nexport class MutationConstraintViolationError implements MutationResultInterface {\n\terror = true\n\tresult = MutationResultType.constraintViolationError as const\n\n\tconstructor(\n\t\tpublic readonly paths: Path[],\n\t\tpublic readonly constraint: ConstraintType,\n\t\tpublic readonly message?: string,\n\t\tpublic readonly hints: MutationResultHint[] = [],\n\t) {}\n}\n\n// maybe denied by acl\nexport class MutationEntryNotFoundError implements MutationResultInterface {\n\terror = true\n\tresult = MutationResultType.notFoundError as const\n\thints: MutationResultHint[] = []\n\tmessage: string\n\n\tconstructor(public readonly paths: Path[], public readonly where: Input.UniqueWhere | Input.OptionalWhere) {\n\t\tthis.message = 'for input ' + JSON.stringify(where)\n\t}\n}\n\n// possibly denied by acl\nexport class MutationNoResultError implements MutationResultInterface {\n\terror = true\n\tresult = MutationResultType.noResultError as const\n\n\tconstructor(\n\t\tpublic readonly paths: Path[],\n\t\tpublic readonly message?: string,\n\t\tpublic readonly hints: MutationResultHint[] = [],\n\t) {}\n}\n\nexport const prependPath = (path: Path, results: MutationResultList): MutationResultList =>\n\tresults.map(it => ({\n\t\t...it,\n\t\tpaths: (it.paths.length === 0 ? [[]] : it.paths).map(it => [...path, ...it]),\n\t}))\n\nexport const getInsertPrimary = (result: MutationResultList) =>\n\t!result.some(it => it.error) && result[0] && result[0].result === MutationResultType.ok && result[0].type === ModificationType.create\n\t\t? result[0].primary\n\t\t: undefined\n"],"names":["MutationResultType","MutationResultHint","NothingToDoReason","InputErrorKind","ConstraintType","it"],"mappings":";;;;;AAGY,IAAA,uCAAAA,wBAAL;AACNA,sBAAA,IAAK,IAAA;AACLA,sBAAA,aAAc,IAAA;AACdA,sBAAA,eAAgB,IAAA;AAChBA,sBAAA,0BAA2B,IAAA;AAC3BA,sBAAA,eAAgB,IAAA;AAChBA,sBAAA,iBAAkB,IAAA;AAClBA,sBAAA,YAAa,IAAA;AACbA,sBAAA,UAAW,IAAA;AARAA,SAAAA;AAAA,GAAA,sBAAA,CAAA,CAAA;AAWA,IAAA,uCAAAC,wBAAL;AACNA,sBAAA,UAAW,IAAA;AACXA,sBAAA,oBAAqB,IAAA;AAFVA,SAAAA;AAAA,GAAA,sBAAA,CAAA,CAAA;AAsCL,MAAM,iBAAoD;AAAA,EAMhE,YACiB,OACA,QACA,SACA,OACA,QACA,WACf;AANe,SAAA,QAAA;AACA,SAAA,SAAA;AACA,SAAA,UAAA;AACA,SAAA,QAAA;AACA,SAAA,SAAA;AACA,SAAA,YAAA;AAXT,kBAAA,MAAA,SAAA,KAAA;AACC;AAAA,MAAA;AAAA,MAAA;AAAA,MAAA;AAAA;AAAA,IAAA;AACF;AAAA,MAAA;AAAA,MAAA;AAAA,MAAA;AAAA;AAAA,IAAA;AACP,kBAAA,MAAA,SAA8B,EAAC;AAAA,EAAA;AAUhC;AAEO,MAAM,iBAAoD;AAAA,EAMhE,YACiB,OACA,QACA,SACA,OACA,QACf;AALe,SAAA,QAAA;AACA,SAAA,SAAA;AACA,SAAA,UAAA;AACA,SAAA,QAAA;AACA,SAAA,SAAA;AAVT,kBAAA,MAAA,SAAA,KAAA;AACC;AAAA,MAAA;AAAA,MAAA;AAAA,MAAA;AAAA;AAAA,IAAA;AACF;AAAA,MAAA;AAAA,MAAA;AAAA,MAAA;AAAA;AAAA,IAAA;AACP,kBAAA,MAAA,SAA8B,EAAC;AAAA,EAAA;AAShC;AAEO,MAAM,iBAAoD;AAAA,EAMhE,YACiB,OACA,QACA,SACf;AAHe,SAAA,QAAA;AACA,SAAA,SAAA;AACA,SAAA,UAAA;AART,kBAAA,MAAA,SAAA,KAAA;AACC;AAAA,MAAA;AAAA,MAAA;AAAA,MAAA;AAAA;AAAA,IAAA;AACF;AAAA,MAAA;AAAA,MAAA;AAAA,MAAA;AAAA;AAAA,IAAA;AACP,kBAAA,MAAA,SAA8B,EAAC;AAAA,EAAA;AAOhC;AAEO,MAAM,yBAA4D;AAAA,EAMxE,YACiB,OACA,QACA,UACA,cACA,eACf;AALe,SAAA,QAAA;AACA,SAAA,SAAA;AACA,SAAA,WAAA;AACA,SAAA,eAAA;AACA,SAAA,gBAAA;AAVT,kBAAA,MAAA,SAAA,KAAA;AACC;AAAA,MAAA;AAAA,MAAA;AAAA,MAAA;AAAA;AAAA,IAAA;AACF;AAAA,MAAA;AAAA,MAAA;AAAA,MAAA;AAAA;AAAA,IAAA;AACP,kBAAA,MAAA,SAA8B,EAAC;AAAA,EAAA;AAShC;AAEY,IAAA,sCAAAC,uBAAL;AACNA,qBAAA,QAAS,IAAA;AACTA,qBAAA,eAAgB,IAAA;AAChBA,qBAAA,eAAgB,IAAA;AAChBA,qBAAA,SAAU,IAAA;AACVA,qBAAA,gBAAiB,IAAA;AALNA,SAAAA;AAAA,GAAA,qBAAA,CAAA,CAAA;AAQL,MAAM,oBAAuD;AAAA,EAKnE,YAA4B,OAA+B,QAA2B;AAA1D,SAAA,QAAA;AAA+B,SAAA,SAAA;AAJnD,kBAAA,MAAA,SAAA,KAAA;AACC;AAAA,MAAA;AAAA,MAAA;AAAA,MAAA;AAAA;AAAA,IAAA;AACT,kBAAA,MAAA,SAA8B,EAAC;AAAA,EAAA;AAGhC;AAEY,IAAA,mCAAAC,oBAAL;AACNA,kBAAA,gBAAiB,IAAA;AACjBA,kBAAA,aAAc,IAAA;AAFHA,SAAAA;AAAA,GAAA,kBAAA,CAAA,CAAA;AAKL,MAAM,mBAAsD;AAAA,EAIlE,YACiB,OACA,MACA,SACA,QAA8B,CAAA,GAC7C;AAJe,SAAA,QAAA;AACA,SAAA,OAAA;AACA,SAAA,UAAA;AACA,SAAA,QAAA;AAPT,kBAAA,MAAA,SAAA,IAAA;AACC;AAAA,MAAA;AAAA,MAAA;AAAA,MAAA;AAAA;AAAA,IAAA;AAAA,EAAA;AAQV;AAEO,MAAM,iBAAoD;AAAA,EAIhE,YACiB,OACA,SACA,QAA8B,CAAA,GAC7C;AAHe,SAAA,QAAA;AACA,SAAA,UAAA;AACA,SAAA,QAAA;AANT,kBAAA,MAAA,SAAA,IAAA;AACC;AAAA,MAAA;AAAA,MAAA;AAAA,MAAA;AAAA;AAAA,IAAA;AAAA,EAAA;AAOV;AAEY,IAAA,mCAAAC,oBAAL;AACNA,kBAAA,SAAU,IAAA;AACVA,kBAAA,WAAY,IAAA;AACZA,kBAAA,YAAa,IAAA;AAHFA,SAAAA;AAAA,GAAA,kBAAA,CAAA,CAAA;AAML,MAAM,iCAAoE;AAAA,EAIhF,YACiB,OACA,YACA,SACA,QAA8B,CAAA,GAC7C;AAJe,SAAA,QAAA;AACA,SAAA,aAAA;AACA,SAAA,UAAA;AACA,SAAA,QAAA;AAPT,kBAAA,MAAA,SAAA,IAAA;AACC;AAAA,MAAA;AAAA,MAAA;AAAA,MAAA;AAAA;AAAA,IAAA;AAAA,EAAA;AAQV;AAGO,MAAM,2BAA8D;AAAA,EAM1E,YAA4B,OAA+B,OAAgD;AAA/E,SAAA,QAAA;AAA+B,SAAA,QAAA;AALnD,kBAAA,MAAA,SAAA,IAAA;AACC;AAAA,MAAA;AAAA,MAAA;AAAA,MAAA;AAAA;AAAA,IAAA;AACT,kBAAA,MAAA,SAA8B,EAAC;AAC/B,kBAAA,MAAA,SAAA;AAGC,SAAK,UAAU,eAAe,KAAK,UAAU,KAAK;AAAA,EAAA;AAEpD;AAGO,MAAM,sBAAyD;AAAA,EAIrE,YACiB,OACA,SACA,QAA8B,CAAA,GAC7C;AAHe,SAAA,QAAA;AACA,SAAA,UAAA;AACA,SAAA,QAAA;AANT,kBAAA,MAAA,SAAA,IAAA;AACC;AAAA,MAAA;AAAA,MAAA;AAAA,MAAA;AAAA;AAAA,IAAA;AAAA,EAAA;AAOV;AAEO,MAAM,cAAc,CAAC,MAAY,YACvC,QAAQ,IAAI,CAAO,QAAA;AAAA,EAClB,GAAG;AAAA,EACH,QAAQ,GAAG,MAAM,WAAW,IAAI,CAAC,EAAE,IAAI,GAAG,OAAO,IAAI,CAAAC,QAAM,CAAC,GAAG,MAAM,GAAGA,GAAE,CAAC;AAC5E,EAAE;AAEU,MAAA,mBAAmB,CAAC,WAChC,CAAC,OAAO,KAAK,CAAA,OAAM,GAAG,KAAK,KAAK,OAAO,CAAC,KAAK,OAAO,CAAC,EAAE,WAAW,QAAyB,OAAO,CAAC,EAAE,SAAS,WAC3G,OAAO,CAAC,EAAE,UACV;;;;;;;;;;;;;;;;;;"}
|
|
@@ -219,7 +219,7 @@ const prependPath = (path, results) => results.map((it) => ({
|
|
|
219
219
|
...it,
|
|
220
220
|
paths: (it.paths.length === 0 ? [[]] : it.paths).map((it2) => [...path, ...it2])
|
|
221
221
|
}));
|
|
222
|
-
const getInsertPrimary = (result) => result[0] && result[0].result === "ok" && result[0].type === "create" ? result[0].primary : void 0;
|
|
222
|
+
const getInsertPrimary = (result) => !result.some((it) => it.error) && result[0] && result[0].result === "ok" && result[0].type === "create" ? result[0].primary : void 0;
|
|
223
223
|
export {
|
|
224
224
|
ConstraintType,
|
|
225
225
|
InputErrorKind,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Result.js","sources":["../../../../../packages/engine-content-api/src/mapper/Result.ts"],"sourcesContent":["import { Input, Model, Value } from '@contember/schema'\nimport { MapperInput } from './types'\n\nexport enum MutationResultType {\n\tok = 'ok',\n\tnothingToDo = 'nothingToDo',\n\tnotFoundError = 'notFoundError',\n\tconstraintViolationError = 'constraintViolationError',\n\tnoResultError = 'noResultError',\n\tvalidationError = 'validationError',\n\tinputError = 'inputError',\n\tsqlError = 'sqlError',\n}\n\nexport enum MutationResultHint {\n\tsqlError = 'sqlError',\n\tsubSequentSqlError = 'subsequentSqlError',\n}\n\nexport enum ModificationType {\n\tcreate = 'create',\n\tupdate = 'update',\n\tdelete = 'delete',\n\tjunctionUpdate = 'junctionUpdate',\n}\n\nexport type MutationResult =\n\t| MutationUpdateOk\n\t| MutationCreateOk\n\t| MutationDeleteOk\n\t| MutationJunctionUpdateOk\n\t| MutationEntryNotFoundError\n\t| MutationNothingToDo\n\t| MutationConstraintViolationError\n\t| MutationNoResultError\n\t| MutationInputError\n\t| MutationSqlError\n\nexport type MutationResultList = MutationResult[]\n\ntype Path = ({ field: string } | { index: number; alias?: string })[]\n\ninterface MutationResultInterface {\n\terror: boolean\n\tresult: MutationResultType\n\tpaths: Path[]\n\tmessage?: string\n\thints: MutationResultHint[]\n}\n\nexport type RowValues = { [fieldName: string]: Value.FieldValue }\n\nexport class MutationUpdateOk implements MutationResultInterface {\n\terror = false\n\tresult = MutationResultType.ok as const\n\ttype = ModificationType.update as const\n\thints: MutationResultHint[] = []\n\n\tconstructor(\n\t\tpublic readonly paths: Path[],\n\t\tpublic readonly entity: Model.Entity,\n\t\tpublic readonly primary: Value.PrimaryValue,\n\t\tpublic readonly input: MapperInput.UpdateDataInput,\n\t\tpublic readonly values: RowValues,\n\t\tpublic readonly oldValues?: RowValues,\n\t) {}\n}\n\nexport class MutationCreateOk implements MutationResultInterface {\n\terror = false\n\tresult = MutationResultType.ok as const\n\ttype = ModificationType.create as const\n\thints: MutationResultHint[] = []\n\n\tconstructor(\n\t\tpublic readonly paths: Path[],\n\t\tpublic readonly entity: Model.Entity,\n\t\tpublic readonly primary: Value.PrimaryValue,\n\t\tpublic readonly input: MapperInput.CreateDataInput,\n\t\tpublic readonly values: RowValues,\n\t) {}\n}\n\nexport class MutationDeleteOk implements MutationResultInterface {\n\terror = false\n\tresult = MutationResultType.ok as const\n\ttype = ModificationType.delete as const\n\thints: MutationResultHint[] = []\n\n\tconstructor(\n\t\tpublic readonly paths: Path[],\n\t\tpublic readonly entity: Model.Entity,\n\t\tpublic readonly primary: Value.PrimaryValue,\n\t) {}\n}\n\nexport class MutationJunctionUpdateOk implements MutationResultInterface {\n\terror = false\n\tresult = MutationResultType.ok as const\n\ttype = ModificationType.junctionUpdate as const\n\thints: MutationResultHint[] = []\n\n\tconstructor(\n\t\tpublic readonly paths: Path[],\n\t\tpublic readonly entity: Model.Entity,\n\t\tpublic readonly relation: Model.ManyHasManyOwningRelation,\n\t\tpublic readonly owningUnique: Input.PrimaryValue,\n\t\tpublic readonly inverseUnique: Input.PrimaryValue,\n\t) {}\n}\n\nexport enum NothingToDoReason {\n\tnoData = 'noData',\n\temptyRelation = 'emptyRelation',\n\talreadyExists = 'alreadyExists',\n\taborted = 'aborted',\n\talreadyDeleted = 'alreadyDeleted',\n}\n\nexport class MutationNothingToDo implements MutationResultInterface {\n\terror = false\n\tresult = MutationResultType.nothingToDo as const\n\thints: MutationResultHint[] = []\n\n\tconstructor(public readonly paths: Path[], public readonly reason: NothingToDoReason) {}\n}\n\nexport enum InputErrorKind {\n\tnonUniqueWhere = 'nonUniqueWhere',\n\tinvalidData = 'invalidData',\n}\n\nexport class MutationInputError implements MutationResultInterface {\n\terror = true\n\tresult = MutationResultType.inputError as const\n\n\tconstructor(\n\t\tpublic readonly paths: Path[],\n\t\tpublic readonly kind: InputErrorKind,\n\t\tpublic readonly message?: string,\n\t\tpublic readonly hints: MutationResultHint[] = [],\n\t) {}\n}\n\nexport class MutationSqlError implements MutationResultInterface {\n\terror = true\n\tresult = MutationResultType.sqlError as const\n\n\tconstructor(\n\t\tpublic readonly paths: Path[],\n\t\tpublic readonly message?: string,\n\t\tpublic readonly hints: MutationResultHint[] = [],\n\t) {}\n}\n\nexport enum ConstraintType {\n\tnotNull = 'notNull',\n\tuniqueKey = 'uniqueKey',\n\tforeignKey = 'foreignKey',\n}\n\nexport class MutationConstraintViolationError implements MutationResultInterface {\n\terror = true\n\tresult = MutationResultType.constraintViolationError as const\n\n\tconstructor(\n\t\tpublic readonly paths: Path[],\n\t\tpublic readonly constraint: ConstraintType,\n\t\tpublic readonly message?: string,\n\t\tpublic readonly hints: MutationResultHint[] = [],\n\t) {}\n}\n\n// maybe denied by acl\nexport class MutationEntryNotFoundError implements MutationResultInterface {\n\terror = true\n\tresult = MutationResultType.notFoundError as const\n\thints: MutationResultHint[] = []\n\tmessage: string\n\n\tconstructor(public readonly paths: Path[], public readonly where: Input.UniqueWhere | Input.
|
|
1
|
+
{"version":3,"file":"Result.js","sources":["../../../../../packages/engine-content-api/src/mapper/Result.ts"],"sourcesContent":["import { Input, Model, Value } from '@contember/schema'\nimport { MapperInput } from './types'\n\nexport enum MutationResultType {\n\tok = 'ok',\n\tnothingToDo = 'nothingToDo',\n\tnotFoundError = 'notFoundError',\n\tconstraintViolationError = 'constraintViolationError',\n\tnoResultError = 'noResultError',\n\tvalidationError = 'validationError',\n\tinputError = 'inputError',\n\tsqlError = 'sqlError',\n}\n\nexport enum MutationResultHint {\n\tsqlError = 'sqlError',\n\tsubSequentSqlError = 'subsequentSqlError',\n}\n\nexport enum ModificationType {\n\tcreate = 'create',\n\tupdate = 'update',\n\tdelete = 'delete',\n\tjunctionUpdate = 'junctionUpdate',\n}\n\nexport type MutationResult =\n\t| MutationUpdateOk\n\t| MutationCreateOk\n\t| MutationDeleteOk\n\t| MutationJunctionUpdateOk\n\t| MutationEntryNotFoundError\n\t| MutationNothingToDo\n\t| MutationConstraintViolationError\n\t| MutationNoResultError\n\t| MutationInputError\n\t| MutationSqlError\n\nexport type MutationResultList = MutationResult[]\n\ntype Path = ({ field: string } | { index: number; alias?: string })[]\n\ninterface MutationResultInterface {\n\terror: boolean\n\tresult: MutationResultType\n\tpaths: Path[]\n\tmessage?: string\n\thints: MutationResultHint[]\n}\n\nexport type RowValues = { [fieldName: string]: Value.FieldValue }\n\nexport class MutationUpdateOk implements MutationResultInterface {\n\terror = false\n\tresult = MutationResultType.ok as const\n\ttype = ModificationType.update as const\n\thints: MutationResultHint[] = []\n\n\tconstructor(\n\t\tpublic readonly paths: Path[],\n\t\tpublic readonly entity: Model.Entity,\n\t\tpublic readonly primary: Value.PrimaryValue,\n\t\tpublic readonly input: MapperInput.UpdateDataInput,\n\t\tpublic readonly values: RowValues,\n\t\tpublic readonly oldValues?: RowValues,\n\t) {}\n}\n\nexport class MutationCreateOk implements MutationResultInterface {\n\terror = false\n\tresult = MutationResultType.ok as const\n\ttype = ModificationType.create as const\n\thints: MutationResultHint[] = []\n\n\tconstructor(\n\t\tpublic readonly paths: Path[],\n\t\tpublic readonly entity: Model.Entity,\n\t\tpublic readonly primary: Value.PrimaryValue,\n\t\tpublic readonly input: MapperInput.CreateDataInput,\n\t\tpublic readonly values: RowValues,\n\t) {}\n}\n\nexport class MutationDeleteOk implements MutationResultInterface {\n\terror = false\n\tresult = MutationResultType.ok as const\n\ttype = ModificationType.delete as const\n\thints: MutationResultHint[] = []\n\n\tconstructor(\n\t\tpublic readonly paths: Path[],\n\t\tpublic readonly entity: Model.Entity,\n\t\tpublic readonly primary: Value.PrimaryValue,\n\t) {}\n}\n\nexport class MutationJunctionUpdateOk implements MutationResultInterface {\n\terror = false\n\tresult = MutationResultType.ok as const\n\ttype = ModificationType.junctionUpdate as const\n\thints: MutationResultHint[] = []\n\n\tconstructor(\n\t\tpublic readonly paths: Path[],\n\t\tpublic readonly entity: Model.Entity,\n\t\tpublic readonly relation: Model.ManyHasManyOwningRelation,\n\t\tpublic readonly owningUnique: Input.PrimaryValue,\n\t\tpublic readonly inverseUnique: Input.PrimaryValue,\n\t) {}\n}\n\nexport enum NothingToDoReason {\n\tnoData = 'noData',\n\temptyRelation = 'emptyRelation',\n\talreadyExists = 'alreadyExists',\n\taborted = 'aborted',\n\talreadyDeleted = 'alreadyDeleted',\n}\n\nexport class MutationNothingToDo implements MutationResultInterface {\n\terror = false\n\tresult = MutationResultType.nothingToDo as const\n\thints: MutationResultHint[] = []\n\n\tconstructor(public readonly paths: Path[], public readonly reason: NothingToDoReason) {}\n}\n\nexport enum InputErrorKind {\n\tnonUniqueWhere = 'nonUniqueWhere',\n\tinvalidData = 'invalidData',\n}\n\nexport class MutationInputError implements MutationResultInterface {\n\terror = true\n\tresult = MutationResultType.inputError as const\n\n\tconstructor(\n\t\tpublic readonly paths: Path[],\n\t\tpublic readonly kind: InputErrorKind,\n\t\tpublic readonly message?: string,\n\t\tpublic readonly hints: MutationResultHint[] = [],\n\t) {}\n}\n\nexport class MutationSqlError implements MutationResultInterface {\n\terror = true\n\tresult = MutationResultType.sqlError as const\n\n\tconstructor(\n\t\tpublic readonly paths: Path[],\n\t\tpublic readonly message?: string,\n\t\tpublic readonly hints: MutationResultHint[] = [],\n\t) {}\n}\n\nexport enum ConstraintType {\n\tnotNull = 'notNull',\n\tuniqueKey = 'uniqueKey',\n\tforeignKey = 'foreignKey',\n}\n\nexport class MutationConstraintViolationError implements MutationResultInterface {\n\terror = true\n\tresult = MutationResultType.constraintViolationError as const\n\n\tconstructor(\n\t\tpublic readonly paths: Path[],\n\t\tpublic readonly constraint: ConstraintType,\n\t\tpublic readonly message?: string,\n\t\tpublic readonly hints: MutationResultHint[] = [],\n\t) {}\n}\n\n// maybe denied by acl\nexport class MutationEntryNotFoundError implements MutationResultInterface {\n\terror = true\n\tresult = MutationResultType.notFoundError as const\n\thints: MutationResultHint[] = []\n\tmessage: string\n\n\tconstructor(public readonly paths: Path[], public readonly where: Input.UniqueWhere | Input.OptionalWhere) {\n\t\tthis.message = 'for input ' + JSON.stringify(where)\n\t}\n}\n\n// possibly denied by acl\nexport class MutationNoResultError implements MutationResultInterface {\n\terror = true\n\tresult = MutationResultType.noResultError as const\n\n\tconstructor(\n\t\tpublic readonly paths: Path[],\n\t\tpublic readonly message?: string,\n\t\tpublic readonly hints: MutationResultHint[] = [],\n\t) {}\n}\n\nexport const prependPath = (path: Path, results: MutationResultList): MutationResultList =>\n\tresults.map(it => ({\n\t\t...it,\n\t\tpaths: (it.paths.length === 0 ? [[]] : it.paths).map(it => [...path, ...it]),\n\t}))\n\nexport const getInsertPrimary = (result: MutationResultList) =>\n\t!result.some(it => it.error) && result[0] && result[0].result === MutationResultType.ok && result[0].type === ModificationType.create\n\t\t? result[0].primary\n\t\t: undefined\n"],"names":["MutationResultType","MutationResultHint","NothingToDoReason","InputErrorKind","ConstraintType","it"],"mappings":"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"}
|
|
@@ -7,10 +7,8 @@ const UpdateInputVisitor = require("../../inputProcessing/UpdateInputVisitor.cjs
|
|
|
7
7
|
const Result = require("../Result.cjs");
|
|
8
8
|
const ColumnValue = require("../ColumnValue.cjs");
|
|
9
9
|
class Updater {
|
|
10
|
-
constructor(schema,
|
|
10
|
+
constructor(schema, updateBuilderFactory) {
|
|
11
11
|
this.schema = schema;
|
|
12
|
-
this.schemaDatabaseMetadata = schemaDatabaseMetadata;
|
|
13
|
-
this.predicateFactory = predicateFactory;
|
|
14
12
|
this.updateBuilderFactory = updateBuilderFactory;
|
|
15
13
|
}
|
|
16
14
|
async update(mapper, entity, primaryValue, data, filter) {
|
|
@@ -49,6 +47,20 @@ class Updater {
|
|
|
49
47
|
}
|
|
50
48
|
const result = await updateBuilder.execute(mapper);
|
|
51
49
|
if (!result.executed) {
|
|
50
|
+
if (filter && Object.keys(filter).length > 0) {
|
|
51
|
+
const where = {
|
|
52
|
+
and: [
|
|
53
|
+
filter,
|
|
54
|
+
{
|
|
55
|
+
[entity.primary]: { eq: primaryValue }
|
|
56
|
+
}
|
|
57
|
+
]
|
|
58
|
+
};
|
|
59
|
+
const count = await mapper.count(entity, where);
|
|
60
|
+
if (!count) {
|
|
61
|
+
return [new Result.MutationEntryNotFoundError([], where)];
|
|
62
|
+
}
|
|
63
|
+
}
|
|
52
64
|
resultList.unshift(new Result.MutationNothingToDo([], Result.NothingToDoReason.noData));
|
|
53
65
|
} else if (result.affectedRows !== 1) {
|
|
54
66
|
return [new Result.MutationNoResultError([])];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Updater.cjs","sources":["../../../../../../packages/engine-content-api/src/mapper/update/Updater.ts"],"sourcesContent":["import { SqlUpdateInputProcessor, SqlUpdateInputProcessorResult } from './SqlUpdateInputProcessor'\nimport { UpdateInputVisitor } from '../../inputProcessing'\nimport { Input, Model } from '@contember/schema'\nimport {
|
|
1
|
+
{"version":3,"file":"Updater.cjs","sources":["../../../../../../packages/engine-content-api/src/mapper/update/Updater.ts"],"sourcesContent":["import { SqlUpdateInputProcessor, SqlUpdateInputProcessorResult } from './SqlUpdateInputProcessor'\nimport { UpdateInputVisitor } from '../../inputProcessing'\nimport { Input, Model } from '@contember/schema'\nimport { UpdateBuilderFactory } from './UpdateBuilderFactory'\nimport { Mapper } from '../Mapper'\nimport { acceptFieldVisitor } from '@contember/schema-utils'\nimport { MutationEntryNotFoundError, MutationNoResultError, MutationNothingToDo, MutationResultList, MutationUpdateOk, NothingToDoReason } from '../Result'\nimport { UpdateBuilder } from './UpdateBuilder'\nimport { rowDataToFieldValues } from '../ColumnValue'\nimport { MapperInput } from '../types'\n\nexport class Updater {\n\tconstructor(\n\t\tprivate readonly schema: Model.Schema,\n\t\tprivate readonly updateBuilderFactory: UpdateBuilderFactory,\n\t) {}\n\n\tpublic async update(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tprimaryValue: Input.PrimaryValue,\n\t\tdata: MapperInput.UpdateDataInput,\n\t\tfilter?: Input.OptionalWhere,\n\t): Promise<MutationResultList> {\n\t\tconst updateBuilder = this.updateBuilderFactory.create(entity, primaryValue)\n\n\t\tconst predicateFields = Object.keys(data)\n\t\tupdateBuilder.addPredicates(predicateFields)\n\t\tif (filter && Object.keys(filter).length > 0) {\n\t\t\tupdateBuilder.addOldWhere(filter)\n\t\t}\n\n\t\tconst visitor = new UpdateInputVisitor<SqlUpdateInputProcessorResult>(\n\t\t\tnew SqlUpdateInputProcessor(primaryValue, data, updateBuilder, mapper),\n\t\t\tthis.schema,\n\t\t\tdata,\n\t\t)\n\t\tconst resultList: MutationResultList = []\n\t\tconst postUpdates: Exclude<SqlUpdateInputProcessorResult, MutationResultList>[] = []\n\n\t\tfor (const key of Object.keys(data)) {\n\t\t\tconst resultSet = await acceptFieldVisitor(\n\t\t\t\tthis.schema,\n\t\t\t\tentity,\n\t\t\t\tkey,\n\t\t\t\tvisitor,\n\t\t\t)\n\t\t\tfor (const result of resultSet) {\n\t\t\t\tif (typeof result === 'function') {\n\t\t\t\t\tpostUpdates.push(result)\n\t\t\t\t} else {\n\t\t\t\t\tfor (const resultItem of await result) {\n\t\t\t\t\t\tresultList.push(resultItem)\n\t\t\t\t\t\tif (resultItem.error) {\n\t\t\t\t\t\t\treturn resultList\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst result = await updateBuilder.execute(mapper)\n\n\t\tif (!result.executed) {\n\t\t\tif (filter && Object.keys(filter).length > 0) {\n\t\t\t\t// direct update was not invoked, but we still need to check if the row matches the filter\n\t\t\t\tconst where: Input.OptionalWhere = {\n\t\t\t\t\tand: [\n\t\t\t\t\t\tfilter,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t[entity.primary]: { eq: primaryValue },\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t}\n\t\t\t\tconst count = await mapper.count(entity, where)\n\t\t\t\tif (!count) {\n\t\t\t\t\treturn [new MutationEntryNotFoundError([], where)]\n\t\t\t\t}\n\t\t\t}\n\t\t\tresultList.unshift(new MutationNothingToDo([], NothingToDoReason.noData))\n\t\t} else if (result.affectedRows !== 1) {\n\t\t\treturn [new MutationNoResultError([])]\n\t\t} else {\n\t\t\tconst okResult = new MutationUpdateOk([], entity, primaryValue, data, rowDataToFieldValues(result.values))\n\t\t\tresultList.unshift(okResult)\n\t\t}\n\n\t\tfor (const postUpdate of postUpdates) {\n\t\t\tconst postInsertResult = await postUpdate({ primary: primaryValue })\n\t\t\tfor (const result of postInsertResult) {\n\t\t\t\tresultList.push(result)\n\t\t\t\tif (result.error) {\n\t\t\t\t\treturn resultList\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn resultList\n\t}\n\n\tpublic async updateCb(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tprimaryValue: Input.PrimaryValue,\n\t\tbuilderCb: (builder: UpdateBuilder) => void,\n\t): Promise<MutationResultList> {\n\t\tconst updateBuilder = this.updateBuilderFactory.create(entity, primaryValue)\n\n\t\tbuilderCb(updateBuilder)\n\n\t\tconst result = await updateBuilder.execute(mapper)\n\n\t\tif (!result.executed) {\n\t\t\treturn [new MutationNothingToDo([], NothingToDoReason.noData)]\n\t\t}\n\t\tif (result.affectedRows !== 1) {\n\t\t\treturn [new MutationNoResultError([])]\n\t\t}\n\t\treturn [new MutationUpdateOk([], entity, primaryValue, {}, rowDataToFieldValues(result.values))]\n\t}\n}\n"],"names":["UpdateInputVisitor","SqlUpdateInputProcessor","acceptFieldVisitor","result","MutationEntryNotFoundError","MutationNothingToDo","NothingToDoReason","MutationNoResultError","MutationUpdateOk","rowDataToFieldValues"],"mappings":"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"}
|
|
@@ -2,13 +2,11 @@ import { SqlUpdateInputProcessor } from "./SqlUpdateInputProcessor.js";
|
|
|
2
2
|
import { acceptFieldVisitor } from "@contember/schema-utils";
|
|
3
3
|
import "@contember/schema";
|
|
4
4
|
import { UpdateInputVisitor } from "../../inputProcessing/UpdateInputVisitor.js";
|
|
5
|
-
import { MutationNothingToDo, NothingToDoReason, MutationNoResultError, MutationUpdateOk } from "../Result.js";
|
|
5
|
+
import { MutationEntryNotFoundError, MutationNothingToDo, NothingToDoReason, MutationNoResultError, MutationUpdateOk } from "../Result.js";
|
|
6
6
|
import { rowDataToFieldValues } from "../ColumnValue.js";
|
|
7
7
|
class Updater {
|
|
8
|
-
constructor(schema,
|
|
8
|
+
constructor(schema, updateBuilderFactory) {
|
|
9
9
|
this.schema = schema;
|
|
10
|
-
this.schemaDatabaseMetadata = schemaDatabaseMetadata;
|
|
11
|
-
this.predicateFactory = predicateFactory;
|
|
12
10
|
this.updateBuilderFactory = updateBuilderFactory;
|
|
13
11
|
}
|
|
14
12
|
async update(mapper, entity, primaryValue, data, filter) {
|
|
@@ -47,6 +45,20 @@ class Updater {
|
|
|
47
45
|
}
|
|
48
46
|
const result = await updateBuilder.execute(mapper);
|
|
49
47
|
if (!result.executed) {
|
|
48
|
+
if (filter && Object.keys(filter).length > 0) {
|
|
49
|
+
const where = {
|
|
50
|
+
and: [
|
|
51
|
+
filter,
|
|
52
|
+
{
|
|
53
|
+
[entity.primary]: { eq: primaryValue }
|
|
54
|
+
}
|
|
55
|
+
]
|
|
56
|
+
};
|
|
57
|
+
const count = await mapper.count(entity, where);
|
|
58
|
+
if (!count) {
|
|
59
|
+
return [new MutationEntryNotFoundError([], where)];
|
|
60
|
+
}
|
|
61
|
+
}
|
|
50
62
|
resultList.unshift(new MutationNothingToDo([], NothingToDoReason.noData));
|
|
51
63
|
} else if (result.affectedRows !== 1) {
|
|
52
64
|
return [new MutationNoResultError([])];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Updater.js","sources":["../../../../../../packages/engine-content-api/src/mapper/update/Updater.ts"],"sourcesContent":["import { SqlUpdateInputProcessor, SqlUpdateInputProcessorResult } from './SqlUpdateInputProcessor'\nimport { UpdateInputVisitor } from '../../inputProcessing'\nimport { Input, Model } from '@contember/schema'\nimport {
|
|
1
|
+
{"version":3,"file":"Updater.js","sources":["../../../../../../packages/engine-content-api/src/mapper/update/Updater.ts"],"sourcesContent":["import { SqlUpdateInputProcessor, SqlUpdateInputProcessorResult } from './SqlUpdateInputProcessor'\nimport { UpdateInputVisitor } from '../../inputProcessing'\nimport { Input, Model } from '@contember/schema'\nimport { UpdateBuilderFactory } from './UpdateBuilderFactory'\nimport { Mapper } from '../Mapper'\nimport { acceptFieldVisitor } from '@contember/schema-utils'\nimport { MutationEntryNotFoundError, MutationNoResultError, MutationNothingToDo, MutationResultList, MutationUpdateOk, NothingToDoReason } from '../Result'\nimport { UpdateBuilder } from './UpdateBuilder'\nimport { rowDataToFieldValues } from '../ColumnValue'\nimport { MapperInput } from '../types'\n\nexport class Updater {\n\tconstructor(\n\t\tprivate readonly schema: Model.Schema,\n\t\tprivate readonly updateBuilderFactory: UpdateBuilderFactory,\n\t) {}\n\n\tpublic async update(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tprimaryValue: Input.PrimaryValue,\n\t\tdata: MapperInput.UpdateDataInput,\n\t\tfilter?: Input.OptionalWhere,\n\t): Promise<MutationResultList> {\n\t\tconst updateBuilder = this.updateBuilderFactory.create(entity, primaryValue)\n\n\t\tconst predicateFields = Object.keys(data)\n\t\tupdateBuilder.addPredicates(predicateFields)\n\t\tif (filter && Object.keys(filter).length > 0) {\n\t\t\tupdateBuilder.addOldWhere(filter)\n\t\t}\n\n\t\tconst visitor = new UpdateInputVisitor<SqlUpdateInputProcessorResult>(\n\t\t\tnew SqlUpdateInputProcessor(primaryValue, data, updateBuilder, mapper),\n\t\t\tthis.schema,\n\t\t\tdata,\n\t\t)\n\t\tconst resultList: MutationResultList = []\n\t\tconst postUpdates: Exclude<SqlUpdateInputProcessorResult, MutationResultList>[] = []\n\n\t\tfor (const key of Object.keys(data)) {\n\t\t\tconst resultSet = await acceptFieldVisitor(\n\t\t\t\tthis.schema,\n\t\t\t\tentity,\n\t\t\t\tkey,\n\t\t\t\tvisitor,\n\t\t\t)\n\t\t\tfor (const result of resultSet) {\n\t\t\t\tif (typeof result === 'function') {\n\t\t\t\t\tpostUpdates.push(result)\n\t\t\t\t} else {\n\t\t\t\t\tfor (const resultItem of await result) {\n\t\t\t\t\t\tresultList.push(resultItem)\n\t\t\t\t\t\tif (resultItem.error) {\n\t\t\t\t\t\t\treturn resultList\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst result = await updateBuilder.execute(mapper)\n\n\t\tif (!result.executed) {\n\t\t\tif (filter && Object.keys(filter).length > 0) {\n\t\t\t\t// direct update was not invoked, but we still need to check if the row matches the filter\n\t\t\t\tconst where: Input.OptionalWhere = {\n\t\t\t\t\tand: [\n\t\t\t\t\t\tfilter,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t[entity.primary]: { eq: primaryValue },\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t}\n\t\t\t\tconst count = await mapper.count(entity, where)\n\t\t\t\tif (!count) {\n\t\t\t\t\treturn [new MutationEntryNotFoundError([], where)]\n\t\t\t\t}\n\t\t\t}\n\t\t\tresultList.unshift(new MutationNothingToDo([], NothingToDoReason.noData))\n\t\t} else if (result.affectedRows !== 1) {\n\t\t\treturn [new MutationNoResultError([])]\n\t\t} else {\n\t\t\tconst okResult = new MutationUpdateOk([], entity, primaryValue, data, rowDataToFieldValues(result.values))\n\t\t\tresultList.unshift(okResult)\n\t\t}\n\n\t\tfor (const postUpdate of postUpdates) {\n\t\t\tconst postInsertResult = await postUpdate({ primary: primaryValue })\n\t\t\tfor (const result of postInsertResult) {\n\t\t\t\tresultList.push(result)\n\t\t\t\tif (result.error) {\n\t\t\t\t\treturn resultList\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn resultList\n\t}\n\n\tpublic async updateCb(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tprimaryValue: Input.PrimaryValue,\n\t\tbuilderCb: (builder: UpdateBuilder) => void,\n\t): Promise<MutationResultList> {\n\t\tconst updateBuilder = this.updateBuilderFactory.create(entity, primaryValue)\n\n\t\tbuilderCb(updateBuilder)\n\n\t\tconst result = await updateBuilder.execute(mapper)\n\n\t\tif (!result.executed) {\n\t\t\treturn [new MutationNothingToDo([], NothingToDoReason.noData)]\n\t\t}\n\t\tif (result.affectedRows !== 1) {\n\t\t\treturn [new MutationNoResultError([])]\n\t\t}\n\t\treturn [new MutationUpdateOk([], entity, primaryValue, {}, rowDataToFieldValues(result.values))]\n\t}\n}\n"],"names":["result"],"mappings":"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"}
|
|
@@ -6,13 +6,14 @@ class RefreshViewResolver {
|
|
|
6
6
|
this.schema = schema;
|
|
7
7
|
this.mapperFactory = mapperFactory;
|
|
8
8
|
}
|
|
9
|
-
async resolve(entity) {
|
|
9
|
+
async resolve(entity, options) {
|
|
10
10
|
const mapper = this.mapperFactory.create();
|
|
11
11
|
const entityModel = this.schema.model.entities[entity];
|
|
12
12
|
if (!entityModel) {
|
|
13
13
|
throw new Error(`Entity ${entity} not found`);
|
|
14
14
|
}
|
|
15
|
-
|
|
15
|
+
const concurrently = options?.concurrently ? " CONCURRENTLY" : "";
|
|
16
|
+
await mapper.db.query(`REFRESH MATERIALIZED VIEW${concurrently} ${Database.wrapIdentifier(mapper.db.schema)}.${Database.wrapIdentifier(entityModel.tableName)}`);
|
|
16
17
|
return { ok: true };
|
|
17
18
|
}
|
|
18
19
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RefreshViewResolver.cjs","sources":["../../../../../packages/engine-content-api/src/resolvers/RefreshViewResolver.ts"],"sourcesContent":["import { Schema } from '@contember/schema'\nimport { MapperFactory } from '../mapper'\nimport { wrapIdentifier } from '@contember/database'\
|
|
1
|
+
{"version":3,"file":"RefreshViewResolver.cjs","sources":["../../../../../packages/engine-content-api/src/resolvers/RefreshViewResolver.ts"],"sourcesContent":["import { Schema } from '@contember/schema'\nimport { MapperFactory } from '../mapper'\nimport { wrapIdentifier } from '@contember/database'\n\nexport class RefreshViewResolver {\n\tconstructor(\n\t\tprivate readonly schema: Schema,\n\t\tprivate readonly mapperFactory: MapperFactory,\n\t) {\n\t}\n\n\tpublic async resolve(entity: string, options?: { concurrently?: boolean }): Promise<{ ok: boolean }> {\n\t\tconst mapper = this.mapperFactory.create()\n\t\tconst entityModel = this.schema.model.entities[entity]\n\t\tif (!entityModel) {\n\t\t\tthrow new Error(`Entity ${entity} not found`)\n\t\t}\n\t\tconst concurrently = options?.concurrently ? ' CONCURRENTLY' : ''\n\t\tawait mapper.db.query(`REFRESH MATERIALIZED VIEW${concurrently} ${wrapIdentifier(mapper.db.schema)}.${wrapIdentifier(entityModel.tableName)}`)\n\n\t\treturn { ok: true }\n\t}\n}\n"],"names":["wrapIdentifier"],"mappings":";;;AAIO,MAAM,oBAAoB;AAAA,EAChC,YACkB,QACA,eAChB;AAFgB,SAAA,SAAA;AACA,SAAA,gBAAA;AAAA,EAAA;AAAA,EAIlB,MAAa,QAAQ,QAAgB,SAAgE;AAC9F,UAAA,SAAS,KAAK,cAAc,OAAO;AACzC,UAAM,cAAc,KAAK,OAAO,MAAM,SAAS,MAAM;AACrD,QAAI,CAAC,aAAa;AACjB,YAAM,IAAI,MAAM,UAAU,MAAM,YAAY;AAAA,IAAA;AAEvC,UAAA,eAAe,SAAS,eAAe,kBAAkB;AAC/D,UAAM,OAAO,GAAG,MAAM,4BAA4B,YAAY,IAAIA,SAAe,eAAA,OAAO,GAAG,MAAM,CAAC,IAAIA,SAAA,eAAe,YAAY,SAAS,CAAC,EAAE;AAEtI,WAAA,EAAE,IAAI,KAAK;AAAA,EAAA;AAEpB;;"}
|
|
@@ -4,13 +4,14 @@ class RefreshViewResolver {
|
|
|
4
4
|
this.schema = schema;
|
|
5
5
|
this.mapperFactory = mapperFactory;
|
|
6
6
|
}
|
|
7
|
-
async resolve(entity) {
|
|
7
|
+
async resolve(entity, options) {
|
|
8
8
|
const mapper = this.mapperFactory.create();
|
|
9
9
|
const entityModel = this.schema.model.entities[entity];
|
|
10
10
|
if (!entityModel) {
|
|
11
11
|
throw new Error(`Entity ${entity} not found`);
|
|
12
12
|
}
|
|
13
|
-
|
|
13
|
+
const concurrently = options?.concurrently ? " CONCURRENTLY" : "";
|
|
14
|
+
await mapper.db.query(`REFRESH MATERIALIZED VIEW${concurrently} ${wrapIdentifier(mapper.db.schema)}.${wrapIdentifier(entityModel.tableName)}`);
|
|
14
15
|
return { ok: true };
|
|
15
16
|
}
|
|
16
17
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RefreshViewResolver.js","sources":["../../../../../packages/engine-content-api/src/resolvers/RefreshViewResolver.ts"],"sourcesContent":["import { Schema } from '@contember/schema'\nimport { MapperFactory } from '../mapper'\nimport { wrapIdentifier } from '@contember/database'\
|
|
1
|
+
{"version":3,"file":"RefreshViewResolver.js","sources":["../../../../../packages/engine-content-api/src/resolvers/RefreshViewResolver.ts"],"sourcesContent":["import { Schema } from '@contember/schema'\nimport { MapperFactory } from '../mapper'\nimport { wrapIdentifier } from '@contember/database'\n\nexport class RefreshViewResolver {\n\tconstructor(\n\t\tprivate readonly schema: Schema,\n\t\tprivate readonly mapperFactory: MapperFactory,\n\t) {\n\t}\n\n\tpublic async resolve(entity: string, options?: { concurrently?: boolean }): Promise<{ ok: boolean }> {\n\t\tconst mapper = this.mapperFactory.create()\n\t\tconst entityModel = this.schema.model.entities[entity]\n\t\tif (!entityModel) {\n\t\t\tthrow new Error(`Entity ${entity} not found`)\n\t\t}\n\t\tconst concurrently = options?.concurrently ? ' CONCURRENTLY' : ''\n\t\tawait mapper.db.query(`REFRESH MATERIALIZED VIEW${concurrently} ${wrapIdentifier(mapper.db.schema)}.${wrapIdentifier(entityModel.tableName)}`)\n\n\t\treturn { ok: true }\n\t}\n}\n"],"names":[],"mappings":";AAIO,MAAM,oBAAoB;AAAA,EAChC,YACkB,QACA,eAChB;AAFgB,SAAA,SAAA;AACA,SAAA,gBAAA;AAAA,EAAA;AAAA,EAIlB,MAAa,QAAQ,QAAgB,SAAgE;AAC9F,UAAA,SAAS,KAAK,cAAc,OAAO;AACzC,UAAM,cAAc,KAAK,OAAO,MAAM,SAAS,MAAM;AACrD,QAAI,CAAC,aAAa;AACjB,YAAM,IAAI,MAAM,UAAU,MAAM,YAAY;AAAA,IAAA;AAEvC,UAAA,eAAe,SAAS,eAAe,kBAAkB;AAC/D,UAAM,OAAO,GAAG,MAAM,4BAA4B,YAAY,IAAI,eAAe,OAAO,GAAG,MAAM,CAAC,IAAI,eAAe,YAAY,SAAS,CAAC,EAAE;AAEtI,WAAA,EAAE,IAAI,KAAK;AAAA,EAAA;AAEpB;"}
|
|
@@ -15,6 +15,12 @@ class RefreshViewMutationProvider {
|
|
|
15
15
|
name: "_MaterializedView",
|
|
16
16
|
values: Object.fromEntries(materializedViews.map((it) => [it.name, { value: it.name }]))
|
|
17
17
|
});
|
|
18
|
+
const refreshViewOptions = new graphql.GraphQLInputObjectType({
|
|
19
|
+
name: "RefreshMaterializedViewOptions",
|
|
20
|
+
fields: {
|
|
21
|
+
concurrently: { type: graphql.GraphQLBoolean }
|
|
22
|
+
}
|
|
23
|
+
});
|
|
18
24
|
return {
|
|
19
25
|
type: new graphql.GraphQLObjectType({
|
|
20
26
|
name: "RefreshMaterializedViewResponse",
|
|
@@ -23,10 +29,11 @@ class RefreshViewMutationProvider {
|
|
|
23
29
|
}
|
|
24
30
|
}),
|
|
25
31
|
args: {
|
|
26
|
-
name: { type: materializedViewsEnum }
|
|
32
|
+
name: { type: materializedViewsEnum },
|
|
33
|
+
options: { type: refreshViewOptions }
|
|
27
34
|
},
|
|
28
35
|
resolve: async (parent, args, context) => {
|
|
29
|
-
return await context.executionContainer.refreshViewResolver.resolve(args.name);
|
|
36
|
+
return await context.executionContainer.refreshViewResolver.resolve(args.name, args.options);
|
|
30
37
|
}
|
|
31
38
|
};
|
|
32
39
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RefreshViewMutationProvider.cjs","sources":["../../../../../packages/engine-content-api/src/schema/RefreshViewMutationProvider.ts"],"sourcesContent":["import { Model } from '@contember/schema'\nimport { GraphQLBoolean, GraphQLEnumType, GraphQLFieldConfig, GraphQLObjectType } from 'graphql'\nimport { Context } from '../types'\nimport { Authorizator } from '../acl'\n\nexport class RefreshViewMutationProvider {\n\tconstructor(\n\t\tprivate readonly schema: Model.Schema,\n\t\tprivate readonly authorizator: Authorizator,\n\t) {\n\t}\n\tgetMutation(): GraphQLFieldConfig<any, Context, any> | undefined {\n\t\tconst materializedViews = Object.values(this.schema.entities)\n\t\t\t.filter(it => it.view?.materialized)\n\t\t\t.filter(it => this.authorizator.isRefreshMaterializedViewAllowed(it.name))\n\t\tif (materializedViews.length === 0) {\n\t\t\treturn undefined\n\t\t}\n\n\t\tconst materializedViewsEnum = new GraphQLEnumType({\n\t\t\tname: '_MaterializedView',\n\t\t\tvalues: Object.fromEntries(materializedViews.map(it => [it.name, { value: it.name }])),\n\t\t})\n\n\t\treturn {\n\t\t\ttype: new GraphQLObjectType({\n\t\t\t\tname: 'RefreshMaterializedViewResponse',\n\t\t\t\tfields: {\n\t\t\t\t\tok: { type: GraphQLBoolean },\n\t\t\t\t},\n\t\t\t}),\n\t\t\targs: {\n\t\t\t\tname: { type: materializedViewsEnum },\n\t\t\t},\n\t\t\tresolve: async (parent, args, context) => {\n\t\t\t\treturn await context.executionContainer.refreshViewResolver.resolve(args.name)\n\t\t\t},\n\t\t}\n\t}\n}\n"],"names":["GraphQLEnumType","
|
|
1
|
+
{"version":3,"file":"RefreshViewMutationProvider.cjs","sources":["../../../../../packages/engine-content-api/src/schema/RefreshViewMutationProvider.ts"],"sourcesContent":["import { Model } from '@contember/schema'\nimport { GraphQLBoolean, GraphQLEnumType, GraphQLFieldConfig, GraphQLInputObjectType, GraphQLObjectType } from 'graphql'\nimport { Context } from '../types'\nimport { Authorizator } from '../acl'\n\nexport class RefreshViewMutationProvider {\n\tconstructor(\n\t\tprivate readonly schema: Model.Schema,\n\t\tprivate readonly authorizator: Authorizator,\n\t) {\n\t}\n\tgetMutation(): GraphQLFieldConfig<any, Context, any> | undefined {\n\t\tconst materializedViews = Object.values(this.schema.entities)\n\t\t\t.filter(it => it.view?.materialized)\n\t\t\t.filter(it => this.authorizator.isRefreshMaterializedViewAllowed(it.name))\n\t\tif (materializedViews.length === 0) {\n\t\t\treturn undefined\n\t\t}\n\n\t\tconst materializedViewsEnum = new GraphQLEnumType({\n\t\t\tname: '_MaterializedView',\n\t\t\tvalues: Object.fromEntries(materializedViews.map(it => [it.name, { value: it.name }])),\n\t\t})\n\n\t\tconst refreshViewOptions = new GraphQLInputObjectType({\n\t\t\tname: 'RefreshMaterializedViewOptions',\n\t\t\tfields: {\n\t\t\t\tconcurrently: { type: GraphQLBoolean },\n\t\t\t},\n\t\t})\n\t\treturn {\n\t\t\ttype: new GraphQLObjectType({\n\t\t\t\tname: 'RefreshMaterializedViewResponse',\n\t\t\t\tfields: {\n\t\t\t\t\tok: { type: GraphQLBoolean },\n\t\t\t\t},\n\t\t\t}),\n\t\t\targs: {\n\t\t\t\tname: { type: materializedViewsEnum },\n\t\t\t\toptions: { type: refreshViewOptions },\n\t\t\t},\n\t\t\tresolve: async (parent, args, context) => {\n\t\t\t\treturn await context.executionContainer.refreshViewResolver.resolve(args.name, args.options)\n\t\t\t},\n\t\t}\n\t}\n}\n"],"names":["GraphQLEnumType","GraphQLInputObjectType","GraphQLBoolean","GraphQLObjectType"],"mappings":";;;AAKO,MAAM,4BAA4B;AAAA,EACxC,YACkB,QACA,cAChB;AAFgB,SAAA,SAAA;AACA,SAAA,eAAA;AAAA,EAAA;AAAA,EAGlB,cAAiE;AAC1D,UAAA,oBAAoB,OAAO,OAAO,KAAK,OAAO,QAAQ,EAC1D,OAAO,CAAM,OAAA,GAAG,MAAM,YAAY,EAClC,OAAO,CAAM,OAAA,KAAK,aAAa,iCAAiC,GAAG,IAAI,CAAC;AACtE,QAAA,kBAAkB,WAAW,GAAG;AAC5B,aAAA;AAAA,IAAA;AAGF,UAAA,wBAAwB,IAAIA,wBAAgB;AAAA,MACjD,MAAM;AAAA,MACN,QAAQ,OAAO,YAAY,kBAAkB,IAAI,CAAM,OAAA,CAAC,GAAG,MAAM,EAAE,OAAO,GAAG,KAAM,CAAA,CAAC,CAAC;AAAA,IAAA,CACrF;AAEK,UAAA,qBAAqB,IAAIC,+BAAuB;AAAA,MACrD,MAAM;AAAA,MACN,QAAQ;AAAA,QACP,cAAc,EAAE,MAAMC,QAAe,eAAA;AAAA,MAAA;AAAA,IACtC,CACA;AACM,WAAA;AAAA,MACN,MAAM,IAAIC,QAAAA,kBAAkB;AAAA,QAC3B,MAAM;AAAA,QACN,QAAQ;AAAA,UACP,IAAI,EAAE,MAAMD,QAAe,eAAA;AAAA,QAAA;AAAA,MAC5B,CACA;AAAA,MACD,MAAM;AAAA,QACL,MAAM,EAAE,MAAM,sBAAsB;AAAA,QACpC,SAAS,EAAE,MAAM,mBAAmB;AAAA,MACrC;AAAA,MACA,SAAS,OAAO,QAAQ,MAAM,YAAY;AAClC,eAAA,MAAM,QAAQ,mBAAmB,oBAAoB,QAAQ,KAAK,MAAM,KAAK,OAAO;AAAA,MAAA;AAAA,IAE7F;AAAA,EAAA;AAEF;;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { GraphQLEnumType,
|
|
1
|
+
import { GraphQLEnumType, GraphQLInputObjectType, GraphQLBoolean, GraphQLObjectType } from "graphql";
|
|
2
2
|
class RefreshViewMutationProvider {
|
|
3
3
|
constructor(schema, authorizator) {
|
|
4
4
|
this.schema = schema;
|
|
@@ -13,6 +13,12 @@ class RefreshViewMutationProvider {
|
|
|
13
13
|
name: "_MaterializedView",
|
|
14
14
|
values: Object.fromEntries(materializedViews.map((it) => [it.name, { value: it.name }]))
|
|
15
15
|
});
|
|
16
|
+
const refreshViewOptions = new GraphQLInputObjectType({
|
|
17
|
+
name: "RefreshMaterializedViewOptions",
|
|
18
|
+
fields: {
|
|
19
|
+
concurrently: { type: GraphQLBoolean }
|
|
20
|
+
}
|
|
21
|
+
});
|
|
16
22
|
return {
|
|
17
23
|
type: new GraphQLObjectType({
|
|
18
24
|
name: "RefreshMaterializedViewResponse",
|
|
@@ -21,10 +27,11 @@ class RefreshViewMutationProvider {
|
|
|
21
27
|
}
|
|
22
28
|
}),
|
|
23
29
|
args: {
|
|
24
|
-
name: { type: materializedViewsEnum }
|
|
30
|
+
name: { type: materializedViewsEnum },
|
|
31
|
+
options: { type: refreshViewOptions }
|
|
25
32
|
},
|
|
26
33
|
resolve: async (parent, args, context) => {
|
|
27
|
-
return await context.executionContainer.refreshViewResolver.resolve(args.name);
|
|
34
|
+
return await context.executionContainer.refreshViewResolver.resolve(args.name, args.options);
|
|
28
35
|
}
|
|
29
36
|
};
|
|
30
37
|
}
|