@contember/engine-content-api 2.0.0-rc.2 → 2.1.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (157) hide show
  1. package/dist/development/src/ExecutionContainer.cjs +1 -1
  2. package/dist/development/src/ExecutionContainer.cjs.map +1 -1
  3. package/dist/development/src/ExecutionContainer.js +1 -1
  4. package/dist/development/src/ExecutionContainer.js.map +1 -1
  5. package/dist/development/src/input-validation/ColumnValueResolver.cjs +1 -1
  6. package/dist/development/src/input-validation/ColumnValueResolver.cjs.map +1 -1
  7. package/dist/development/src/input-validation/ColumnValueResolver.js +1 -1
  8. package/dist/development/src/input-validation/ColumnValueResolver.js.map +1 -1
  9. package/dist/development/src/mapper/insert/Inserter.cjs +3 -2
  10. package/dist/development/src/mapper/insert/Inserter.cjs.map +1 -1
  11. package/dist/development/src/mapper/insert/Inserter.js +3 -2
  12. package/dist/development/src/mapper/insert/Inserter.js.map +1 -1
  13. package/dist/development/src/mapper/insert/SqlCreateInputProcessor.cjs +3 -2
  14. package/dist/development/src/mapper/insert/SqlCreateInputProcessor.cjs.map +1 -1
  15. package/dist/development/src/mapper/insert/SqlCreateInputProcessor.js +3 -2
  16. package/dist/development/src/mapper/insert/SqlCreateInputProcessor.js.map +1 -1
  17. package/dist/development/src/mapper/select/ConditionBuilder.cjs +9 -2
  18. package/dist/development/src/mapper/select/ConditionBuilder.cjs.map +1 -1
  19. package/dist/development/src/mapper/select/ConditionBuilder.js +10 -3
  20. package/dist/development/src/mapper/select/ConditionBuilder.js.map +1 -1
  21. package/dist/development/src/mapper/select/WhereBuilder.cjs +3 -3
  22. package/dist/development/src/mapper/select/WhereBuilder.cjs.map +1 -1
  23. package/dist/development/src/mapper/select/WhereBuilder.js +3 -3
  24. package/dist/development/src/mapper/select/WhereBuilder.js.map +1 -1
  25. package/dist/development/src/mapper/select/handlers/FieldsVisitor.cjs +3 -0
  26. package/dist/development/src/mapper/select/handlers/FieldsVisitor.cjs.map +1 -1
  27. package/dist/development/src/mapper/select/handlers/FieldsVisitor.js +3 -0
  28. package/dist/development/src/mapper/select/handlers/FieldsVisitor.js.map +1 -1
  29. package/dist/development/src/schema/ColumnTypeResolver.cjs +9 -0
  30. package/dist/development/src/schema/ColumnTypeResolver.cjs.map +1 -1
  31. package/dist/development/src/schema/ColumnTypeResolver.js +10 -1
  32. package/dist/development/src/schema/ColumnTypeResolver.js.map +1 -1
  33. package/dist/development/src/schema/ConditionTypeProvider.cjs +35 -23
  34. package/dist/development/src/schema/ConditionTypeProvider.cjs.map +1 -1
  35. package/dist/development/src/schema/ConditionTypeProvider.js +36 -24
  36. package/dist/development/src/schema/ConditionTypeProvider.js.map +1 -1
  37. package/dist/development/src/schema/CustomTypesProvider.cjs +30 -0
  38. package/dist/development/src/schema/CustomTypesProvider.cjs.map +1 -1
  39. package/dist/development/src/schema/CustomTypesProvider.js +30 -0
  40. package/dist/development/src/schema/CustomTypesProvider.js.map +1 -1
  41. package/dist/development/src/schema/OrderByTypeProvider.cjs +6 -1
  42. package/dist/development/src/schema/OrderByTypeProvider.cjs.map +1 -1
  43. package/dist/development/src/schema/OrderByTypeProvider.js +6 -1
  44. package/dist/development/src/schema/OrderByTypeProvider.js.map +1 -1
  45. package/dist/development/src/schema/WhereTypeProvider.cjs +1 -1
  46. package/dist/development/src/schema/WhereTypeProvider.cjs.map +1 -1
  47. package/dist/development/src/schema/WhereTypeProvider.js +1 -1
  48. package/dist/development/src/schema/WhereTypeProvider.js.map +1 -1
  49. package/dist/development/src/schema/entities/FieldTypeVisitor.cjs +3 -3
  50. package/dist/development/src/schema/entities/FieldTypeVisitor.cjs.map +1 -1
  51. package/dist/development/src/schema/entities/FieldTypeVisitor.js +3 -3
  52. package/dist/development/src/schema/entities/FieldTypeVisitor.js.map +1 -1
  53. package/dist/development/src/schema/mutations/CreateEntityInputFieldVisitor.cjs +1 -1
  54. package/dist/development/src/schema/mutations/CreateEntityInputFieldVisitor.cjs.map +1 -1
  55. package/dist/development/src/schema/mutations/CreateEntityInputFieldVisitor.js +1 -1
  56. package/dist/development/src/schema/mutations/CreateEntityInputFieldVisitor.js.map +1 -1
  57. package/dist/development/src/schema/mutations/UpdateEntityInputFieldVisitor.cjs +1 -1
  58. package/dist/development/src/schema/mutations/UpdateEntityInputFieldVisitor.cjs.map +1 -1
  59. package/dist/development/src/schema/mutations/UpdateEntityInputFieldVisitor.js +1 -1
  60. package/dist/development/src/schema/mutations/UpdateEntityInputFieldVisitor.js.map +1 -1
  61. package/dist/production/src/ExecutionContainer.cjs +1 -1
  62. package/dist/production/src/ExecutionContainer.cjs.map +1 -1
  63. package/dist/production/src/ExecutionContainer.js +1 -1
  64. package/dist/production/src/ExecutionContainer.js.map +1 -1
  65. package/dist/production/src/input-validation/ColumnValueResolver.cjs +1 -1
  66. package/dist/production/src/input-validation/ColumnValueResolver.cjs.map +1 -1
  67. package/dist/production/src/input-validation/ColumnValueResolver.js +1 -1
  68. package/dist/production/src/input-validation/ColumnValueResolver.js.map +1 -1
  69. package/dist/production/src/mapper/insert/Inserter.cjs +3 -2
  70. package/dist/production/src/mapper/insert/Inserter.cjs.map +1 -1
  71. package/dist/production/src/mapper/insert/Inserter.js +3 -2
  72. package/dist/production/src/mapper/insert/Inserter.js.map +1 -1
  73. package/dist/production/src/mapper/insert/SqlCreateInputProcessor.cjs +3 -2
  74. package/dist/production/src/mapper/insert/SqlCreateInputProcessor.cjs.map +1 -1
  75. package/dist/production/src/mapper/insert/SqlCreateInputProcessor.js +3 -2
  76. package/dist/production/src/mapper/insert/SqlCreateInputProcessor.js.map +1 -1
  77. package/dist/production/src/mapper/select/ConditionBuilder.cjs +9 -2
  78. package/dist/production/src/mapper/select/ConditionBuilder.cjs.map +1 -1
  79. package/dist/production/src/mapper/select/ConditionBuilder.js +10 -3
  80. package/dist/production/src/mapper/select/ConditionBuilder.js.map +1 -1
  81. package/dist/production/src/mapper/select/WhereBuilder.cjs +3 -3
  82. package/dist/production/src/mapper/select/WhereBuilder.cjs.map +1 -1
  83. package/dist/production/src/mapper/select/WhereBuilder.js +3 -3
  84. package/dist/production/src/mapper/select/WhereBuilder.js.map +1 -1
  85. package/dist/production/src/mapper/select/handlers/FieldsVisitor.cjs +3 -0
  86. package/dist/production/src/mapper/select/handlers/FieldsVisitor.cjs.map +1 -1
  87. package/dist/production/src/mapper/select/handlers/FieldsVisitor.js +3 -0
  88. package/dist/production/src/mapper/select/handlers/FieldsVisitor.js.map +1 -1
  89. package/dist/production/src/schema/ColumnTypeResolver.cjs +9 -0
  90. package/dist/production/src/schema/ColumnTypeResolver.cjs.map +1 -1
  91. package/dist/production/src/schema/ColumnTypeResolver.js +10 -1
  92. package/dist/production/src/schema/ColumnTypeResolver.js.map +1 -1
  93. package/dist/production/src/schema/ConditionTypeProvider.cjs +35 -23
  94. package/dist/production/src/schema/ConditionTypeProvider.cjs.map +1 -1
  95. package/dist/production/src/schema/ConditionTypeProvider.js +36 -24
  96. package/dist/production/src/schema/ConditionTypeProvider.js.map +1 -1
  97. package/dist/production/src/schema/CustomTypesProvider.cjs +30 -0
  98. package/dist/production/src/schema/CustomTypesProvider.cjs.map +1 -1
  99. package/dist/production/src/schema/CustomTypesProvider.js +30 -0
  100. package/dist/production/src/schema/CustomTypesProvider.js.map +1 -1
  101. package/dist/production/src/schema/OrderByTypeProvider.cjs +6 -1
  102. package/dist/production/src/schema/OrderByTypeProvider.cjs.map +1 -1
  103. package/dist/production/src/schema/OrderByTypeProvider.js +6 -1
  104. package/dist/production/src/schema/OrderByTypeProvider.js.map +1 -1
  105. package/dist/production/src/schema/WhereTypeProvider.cjs +1 -1
  106. package/dist/production/src/schema/WhereTypeProvider.cjs.map +1 -1
  107. package/dist/production/src/schema/WhereTypeProvider.js +1 -1
  108. package/dist/production/src/schema/WhereTypeProvider.js.map +1 -1
  109. package/dist/production/src/schema/entities/FieldTypeVisitor.cjs +3 -3
  110. package/dist/production/src/schema/entities/FieldTypeVisitor.cjs.map +1 -1
  111. package/dist/production/src/schema/entities/FieldTypeVisitor.js +3 -3
  112. package/dist/production/src/schema/entities/FieldTypeVisitor.js.map +1 -1
  113. package/dist/production/src/schema/mutations/CreateEntityInputFieldVisitor.cjs +1 -1
  114. package/dist/production/src/schema/mutations/CreateEntityInputFieldVisitor.cjs.map +1 -1
  115. package/dist/production/src/schema/mutations/CreateEntityInputFieldVisitor.js +1 -1
  116. package/dist/production/src/schema/mutations/CreateEntityInputFieldVisitor.js.map +1 -1
  117. package/dist/production/src/schema/mutations/UpdateEntityInputFieldVisitor.cjs +1 -1
  118. package/dist/production/src/schema/mutations/UpdateEntityInputFieldVisitor.cjs.map +1 -1
  119. package/dist/production/src/schema/mutations/UpdateEntityInputFieldVisitor.js +1 -1
  120. package/dist/production/src/schema/mutations/UpdateEntityInputFieldVisitor.js.map +1 -1
  121. package/dist/tests/tsconfig.tsbuildinfo +1 -1
  122. package/dist/types/mapper/insert/Inserter.d.ts +4 -1
  123. package/dist/types/mapper/insert/Inserter.d.ts.map +1 -1
  124. package/dist/types/mapper/insert/SqlCreateInputProcessor.d.ts +4 -1
  125. package/dist/types/mapper/insert/SqlCreateInputProcessor.d.ts.map +1 -1
  126. package/dist/types/mapper/select/ConditionBuilder.d.ts +2 -2
  127. package/dist/types/mapper/select/ConditionBuilder.d.ts.map +1 -1
  128. package/dist/types/mapper/select/handlers/FieldsVisitor.d.ts.map +1 -1
  129. package/dist/types/schema/ColumnTypeResolver.d.ts +5 -5
  130. package/dist/types/schema/ColumnTypeResolver.d.ts.map +1 -1
  131. package/dist/types/schema/ConditionTypeProvider.d.ts +1 -0
  132. package/dist/types/schema/ConditionTypeProvider.d.ts.map +1 -1
  133. package/dist/types/schema/CustomTypesProvider.d.ts +1 -0
  134. package/dist/types/schema/CustomTypesProvider.d.ts.map +1 -1
  135. package/dist/types/schema/OrderByTypeProvider.d.ts.map +1 -1
  136. package/dist/types/schema/mutations/UpdateEntityInputFieldVisitor.d.ts +1 -1
  137. package/dist/types/tsconfig.tsbuildinfo +1 -1
  138. package/package.json +10 -10
  139. package/src/ExecutionContainer.ts +1 -1
  140. package/src/input-validation/ColumnValueResolver.ts +1 -1
  141. package/src/mapper/insert/Inserter.ts +2 -1
  142. package/src/mapper/insert/SqlCreateInputProcessor.ts +2 -1
  143. package/src/mapper/select/ConditionBuilder.ts +19 -5
  144. package/src/mapper/select/WhereBuilder.ts +3 -3
  145. package/src/mapper/select/handlers/FieldsVisitor.ts +3 -0
  146. package/src/schema/ColumnTypeResolver.ts +15 -3
  147. package/src/schema/ConditionTypeProvider.ts +40 -25
  148. package/src/schema/CustomTypesProvider.ts +37 -0
  149. package/src/schema/OrderByTypeProvider.ts +6 -1
  150. package/src/schema/WhereTypeProvider.ts +1 -1
  151. package/src/schema/entities/FieldTypeVisitor.ts +3 -3
  152. package/src/schema/mutations/CreateEntityInputFieldVisitor.ts +1 -1
  153. package/src/schema/mutations/UpdateEntityInputFieldVisitor.ts +1 -1
  154. package/tests/cases/integration/graphQlSchema/graphQlSchemaBuilder.test.ts +37 -1
  155. package/tests/cases/integration/graphQlSchema/schema-aliased-type.gql +6 -0
  156. package/tests/cases/integration/graphQlSchema/schema-array.gql +257 -0
  157. package/tests/cases/integration/graphQlSchema/schema-column-types.gql +420 -0
@@ -84,7 +84,7 @@ class ExecutionContainerFactory {
84
84
  predicateFactory
85
85
  );
86
86
  }
87
- }()).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", ({ predicateFactory, updateBuilderFactory, schema: schema2, schemaDatabaseMetadata: schemaDatabaseMetadata2 }) => new Updater.Updater(schema2.model, schemaDatabaseMetadata2, predicateFactory, updateBuilderFactory)).addService("inserter", ({ insertBuilderFactory, providers, schema: schema2, schemaDatabaseMetadata: schemaDatabaseMetadata2 }) => new Inserter.Inserter(schema2.model, schemaDatabaseMetadata2, insertBuilderFactory, providers)).addService("mapperFactory", ({ predicatesInjector, selectBuilderFactory, uniqueWhereExpander, whereBuilder, junctionTableManager, deleteExecutor, updater, inserter, pathFactory, providers, schema: schema2, schemaDatabaseMetadata: schemaDatabaseMetadata2 }) => {
87
+ }()).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", ({ predicateFactory, updateBuilderFactory, schema: schema2, schemaDatabaseMetadata: schemaDatabaseMetadata2 }) => new Updater.Updater(schema2.model, schemaDatabaseMetadata2, predicateFactory, 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 }) => {
88
88
  return new MapperFactory.MapperFactory(
89
89
  db,
90
90
  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 { 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'\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}\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 }) =>\n\t\t\t\tnew FieldsVisitorFactory(relationFetcher, predicateFactory, schema.settings.content ?? {}))\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))\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}\n\n\tpublic create(args: ExecutionContainerArgs): ExecutionContainer {\n\t\treturn this.createBuilder(args).build().pick('validationResolver', 'readResolver', 'mutationResolver')\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"],"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 { 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'\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}\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 }) =>\n\t\t\t\tnew FieldsVisitorFactory(relationFetcher, predicateFactory, schema.settings.content ?? {}))\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}\n\n\tpublic create(args: ExecutionContainerArgs): ExecutionContainer {\n\t\treturn this.createBuilder(args).build().pick('validationResolver', 'readResolver', 'mutationResolver')\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"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkEO,MAAM,0BAA0B;AAAA,EAGtC,YACkB,WAChB;AADgB,SAAA,YAAA;AAHlB,kBAAA,MAAgB,SAAkC,EAAC;AAAA,EAAA;AAAA,EAOnD,cAAc,MAAyD;AAChE,UAAA,UAAU,KAAK,sBAAsB,IAAI;AACxC,WAAA,KAAK,MAAM,OAAO,CAAC,KAAK,OAAO,GAAG,GAAG,GAAG,OAAO;AAAA,EAAA;AAAA,EAGvD,sBAAsB,EAAE,aAAa,mBAAmB,YAAY,IAAI,QAAQ,YAAY,cAAc,OAAO,SAAS,uBAAA,GAAkD;AAC3K,WAAO,IAAIA,IAAAA,QAAQ,CAAA,CAAE,EACnB,WAAW,gBAAgB,MAC3B,YAAY,EACZ,WAAW,MAAM,MACjB,EAAE,EACF,WAAW,WAAW,MACtB,OAAO,EACP,WAAW,SAAS,MACpB,KAAK,EACL,WAAW,UAAU,MACrB,MAAM,EACN,WAAW,cAAc,MACzB,UAAU,EACV,WAAW,0BAA0B,MACrC,sBAAsB,EACtB,WAAW,aAAa,MACxB,KAAK,SAAS,EACd,WAAW,oBAAoB,CAAC,EAAE,QAAAC,QAAO,MACzC,IAAIC,kCAAiBD,QAAO,OAAO,iBAAiB,CAAC,EACrD,WAAW,oBAAoB,CAAC,EAAE,kBAAkB,QAAAA,QACpD,MAAA,IAAIE,iBAAAA,iBAAiB,aAAaF,QAAO,OAAO,gBAAgB,CAAC,EACjE,WAAW,sBAAsB,CAAC,EAAE,kBAAkB,QAAAA,QAAAA,MACtD,IAAIG,mBAAmBH,mBAAAA,QAAO,OAAO,gBAAgB,CAAC,EACtD,WAAW,eAAe,CAAC,EAAE,QAAAA,cAC7B,IAAII,wBAAYJ,QAAO,KAAK,CAAC,EAC7B,WAAW,oBAAoB,MAC/B,IAAIK,iBAAAA,kBAAkB,EACtB,WAAW,eAAe,MAC1B,IAAIC,KAAAA,YAAa,CAAA,EACjB,WAAW,kBAAkB,CAAC,EAAE,QAAAN,QAAO,MACvC,IAAIO,eAAeP,eAAAA,QAAO,OAAO,IAAIQ,mBAAmB,mBAAA,CAAC,CAAC,EAC1D,WAAW,gBAAgB,CAAC,EAAE,aAAa,kBAAkB,aAAa,gBAAgB,QAAAR,QAAAA,MAC1F,IAAIS,aAAA;AAAA,MACHT,QAAO;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,OACCA,QAAO,SAAS,SAAS,4BAA4BA,QAAO,SAAS,8BAA8B;AAAA,IAAA,CACpG,EACD,WAAW,kBAAkB,CAAC,EAAE,aAAa,QAAAA,QAC7C,MAAA,IAAIU,eAAeV,eAAAA,QAAO,OAAO,WAAW,CAAC,EAC7C,WAAW,mBAAmB,CAAC,EAAE,cAAc,gBAAgB,oBAAoB,kBACnF,IAAIW,gCAAgB,cAAc,gBAAgB,oBAAoB,WAAW,CAAC,EAClF,WAAW,wBAAwB,CAAC,EAAE,iBAAiB,kBAAkB,QAAAX,QAAO,MAChF,IAAIY,qBAAAA,qBAAqB,iBAAiB,kBAAkBZ,QAAO,SAAS,WAAW,CAAA,CAAE,CAAC,EAC1F,WAAW,eAAe,CAAC,EAAE,cAAc,iBAAiB,MAC5D,IAAIa,YAAA,YAAY,cAAc,gBAAgB,CAAC,EAC/C,WAAW,uBAAuB,CAAC,EAAE,QAAAb,cACrC,IAAIc,wCAAoBd,QAAO,KAAK,CAAC,EACrC,WAAW,0BAA0B,CAAC,EAAE,qBAAqB,QAAAA,QAAO,MACpE,IAAIe,uCAAAA,uCAAuCf,QAAO,OAAO,mBAAmB,CAAC,EAC7E,WAAW,oCAAoC,CAAC,EAAE,iBAAiB,QAAAA,QAAO,MAC1E,IAAIgB,iCAAAA,iCAAiChB,QAAO,OAAO,eAAe,CAAC,EACnE,WAAW,kBAAkB,CAAC,EAAE,wBAAwB,wCAAwC;AAAA,MAChG,CAACiB,uBAAAA,uBAAuB,aAAa,GAAG;AAAA,MACxC,CAACC,8BAAAA,8BAA8B,aAAa,GAAG;AAAA,IAAA,EAC9C,EACD,WAAW,wBAAwB,CAAC,EAAE,cAAc,gBAAgB,sBAAsB,aAAa,gBAAgB,aAAa,kBAAkB,QAAAlB,QAAO,MAC7J,IAAK,MAAsC;AAAA,MAC1C,OAAO,IAAqB,UAA0B,cAAyD;AAC9G,eAAO,IAAImB,cAAA;AAAA,UACVnB,QAAO;AAAA,UACP;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACD;AAAA,MAAA;AAAA,IACD,EACG,CAAA,EACJ,WAAW,wBAAwB,CAAC,EAAE,cAAc,aAAa,QAAAA,SAAQ,iBAAiB,MAC1F,IAAIoB,0CAAqBpB,QAAO,OAAO,cAAc,aAAa,gBAAgB,CAAC,EACnF,WAAW,wBAAwB,CAAC,EAAE,cAAc,aAAa,QAAAA,SAAQ,uBACzE,IAAIqB,qBAAAA,qBAAqBrB,QAAO,OAAO,cAAc,aAAa,gBAAgB,CAAC,EACnF,WAAW,0BAA0B,MACrC,IAAIsB,qBAAAA,uBAAwB,CAAA,EAC5B,WAAW,6BAA6B,CAAC,OACzC,IAAIC,qBAAA,0BAAA,CAA2B,EAC/B,WAAW,wBAAwB,CAAC,EAAE,kBAAkB,cAAc,wBAAwB,2BAA2B,aAAa,QAAAvB,QAAO,MAC7I,IAAIwB,qBAAAA,qBAAqBxB,QAAO,OAAO,kBAAkB,cAAc,wBAAwB,2BAA2B,WAAW,CAAC,EACtI,WAAW,kBAAkB,CAAC,EAAE,kBAAkB,sBAAsB,cAAc,aAAa,QAAAA,QAAAA,MACnG,IAAIyB,eAAA,eAAezB,QAAO,OAAO,kBAAkB,cAAc,sBAAsB,WAAW,CAAC,EACnG,WAAW,WAAW,CAAC,EAAE,kBAAkB,sBAAsB,QAAAA,SAAQ,wBAAA0B,wBAAAA,MACzE,IAAIC,QAAA,QAAQ3B,QAAO,OAAO0B,yBAAwB,kBAAkB,oBAAoB,CAAC,EACzF,WAAW,YAAY,CAAC,EAAG,sBAAsB,WAAW,QAAA1B,SAAQ,wBAAA0B,wBAAuB,MAC3F,IAAIE,SAAAA,SAAS5B,QAAO,OAAO0B,yBAAwB,sBAAsB,WAAW,EAAE,aAAa1B,QAAO,SAAS,SAAS,YAAY,CAAC,CAAC,EAC1I,WAAW,iBAAiB,CAAC,EAAE,oBAAoB,sBAAsB,qBAAqB,cAAc,sBAAsB,gBAAgB,SAAS,UAAU,aAAa,WAAW,QAAAA,SAAQ,wBAAA0B,8BAA6B;AAClO,aAAO,IAAIG,cAAA;AAAA,QACV;AAAA,QACA;AAAA,QACA7B,QAAO;AAAA,QACP0B;AAAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD;AAAA,IACA,CAAA,EAEA,WAAW,mBAAmB,MAC9B,IAAII,uBAAAA,uBAAwB,CAAA,EAC5B,WAAW,gBAAgB,CAAC,EAAE,eAAe,gBAC7C,MAAA,IAAIC,aAAAA,aAAa,eAAe,eAAe,CAAC,EAChD,WAAW,iCAAiC,MAC5C,IAAIC,wCAAqB,CAAA,EACzB,WAAW,6BAA6B,CAAC,EAAE,QAAAhC,QAAO,MAClD,IAAIiC,gBAAAA,gBAAgBjC,QAAO,KAAK,CAAC,EACjC,WAAW,gBAAgB,CAAC,EAAE,2BAA2B,QAAAA,QACzD,MAAA,IAAIkC,uBAAAA,uBAAuBlC,QAAO,OAAO,yBAAyB,CAAC,EACnE,WAAW,uBAAuB,CAAC,EAAE,gBACrC,IAAImC,wCAAoB,SAAS,CAAC,EAClC,WAAW,uBAAuB,CAAC,EAAE,QAAAnC,QAAO,MAC5C,IAAIoC,oBAAA,oBAAoBpC,QAAO,YAAYA,QAAO,KAAK,CAAC,EACxD,WAAW,qBAAqB,CAAC,EAAE,qBAAqB,qBAAqB,cAAc,QAAAA,QAAO,MAClG,IAAIqC,kBAAAA,kBAAkBrC,QAAO,OAAO,qBAAqB,qBAAqB,YAAY,CAAC,EAC3F,WAAW,oBAAoB,CAAC,EAAE,eAAe,mBAAmB,iBAAiB,QAAAA,SAAQ,wBAAA0B,wBAAuB,MACpH,IAAIY,iBAAAA,iBAAiBtC,QAAO,OAAO,eAAe,mBAAmB,iBAAiB0B,uBAAsB,CAAC,EAC7G,WAAW,sBAAsB,CAAC,EAAE,mBAAmB,cACvD,MAAA,IAAIa,mBAAAA,mBAAmB,eAAe,iBAAiB,CAAC;AAAA,EAAA;AAAA,EAGpD,OAAO,MAAkD;AACxD,WAAA,KAAK,cAAc,IAAI,EAAE,MAAQ,EAAA,KAAK,sBAAsB,gBAAgB,kBAAkB;AAAA,EAAA;AAEvG;;"}
@@ -82,7 +82,7 @@ class ExecutionContainerFactory {
82
82
  predicateFactory
83
83
  );
84
84
  }
85
- }()).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", ({ predicateFactory, updateBuilderFactory, schema: schema2, schemaDatabaseMetadata: schemaDatabaseMetadata2 }) => new Updater(schema2.model, schemaDatabaseMetadata2, predicateFactory, updateBuilderFactory)).addService("inserter", ({ insertBuilderFactory, providers, schema: schema2, schemaDatabaseMetadata: schemaDatabaseMetadata2 }) => new Inserter(schema2.model, schemaDatabaseMetadata2, insertBuilderFactory, providers)).addService("mapperFactory", ({ predicatesInjector, selectBuilderFactory, uniqueWhereExpander, whereBuilder, junctionTableManager, deleteExecutor, updater, inserter, pathFactory, providers, schema: schema2, schemaDatabaseMetadata: schemaDatabaseMetadata2 }) => {
85
+ }()).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", ({ predicateFactory, updateBuilderFactory, schema: schema2, schemaDatabaseMetadata: schemaDatabaseMetadata2 }) => new Updater(schema2.model, schemaDatabaseMetadata2, predicateFactory, 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 }) => {
86
86
  return new MapperFactory(
87
87
  db,
88
88
  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 { 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'\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}\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 }) =>\n\t\t\t\tnew FieldsVisitorFactory(relationFetcher, predicateFactory, schema.settings.content ?? {}))\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))\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}\n\n\tpublic create(args: ExecutionContainerArgs): ExecutionContainer {\n\t\treturn this.createBuilder(args).build().pick('validationResolver', 'readResolver', 'mutationResolver')\n\t}\n}\n\n"],"names":["schema","schemaDatabaseMetadata"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkEO,MAAM,0BAA0B;AAAA,EAGtC,YACkB,WAChB;AADgB,SAAA,YAAA;AAHlB,kBAAA,MAAgB,SAAkC,EAAC;AAAA,EAAA;AAAA,EAOnD,cAAc,MAAyD;AAChE,UAAA,UAAU,KAAK,sBAAsB,IAAI;AACxC,WAAA,KAAK,MAAM,OAAO,CAAC,KAAK,OAAO,GAAG,GAAG,GAAG,OAAO;AAAA,EAAA;AAAA,EAGvD,sBAAsB,EAAE,aAAa,mBAAmB,YAAY,IAAI,QAAQ,YAAY,cAAc,OAAO,SAAS,uBAAA,GAAkD;AAC3K,WAAO,IAAI,QAAQ,CAAA,CAAE,EACnB,WAAW,gBAAgB,MAC3B,YAAY,EACZ,WAAW,MAAM,MACjB,EAAE,EACF,WAAW,WAAW,MACtB,OAAO,EACP,WAAW,SAAS,MACpB,KAAK,EACL,WAAW,UAAU,MACrB,MAAM,EACN,WAAW,cAAc,MACzB,UAAU,EACV,WAAW,0BAA0B,MACrC,sBAAsB,EACtB,WAAW,aAAa,MACxB,KAAK,SAAS,EACd,WAAW,oBAAoB,CAAC,EAAE,QAAAA,QAAO,MACzC,IAAI,iBAAiBA,QAAO,OAAO,iBAAiB,CAAC,EACrD,WAAW,oBAAoB,CAAC,EAAE,kBAAkB,QAAAA,QACpD,MAAA,IAAI,iBAAiB,aAAaA,QAAO,OAAO,gBAAgB,CAAC,EACjE,WAAW,sBAAsB,CAAC,EAAE,kBAAkB,QAAAA,QAAAA,MACtD,IAAI,mBAAmBA,QAAO,OAAO,gBAAgB,CAAC,EACtD,WAAW,eAAe,CAAC,EAAE,QAAAA,cAC7B,IAAI,YAAYA,QAAO,KAAK,CAAC,EAC7B,WAAW,oBAAoB,MAC/B,IAAI,kBAAkB,EACtB,WAAW,eAAe,MAC1B,IAAI,YAAa,CAAA,EACjB,WAAW,kBAAkB,CAAC,EAAE,QAAAA,QAAO,MACvC,IAAI,eAAeA,QAAO,OAAO,IAAI,mBAAmB,CAAC,CAAC,EAC1D,WAAW,gBAAgB,CAAC,EAAE,aAAa,kBAAkB,aAAa,gBAAgB,QAAAA,QAAAA,MAC1F,IAAI;AAAA,MACHA,QAAO;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,OACCA,QAAO,SAAS,SAAS,4BAA4BA,QAAO,SAAS,8BAA8B;AAAA,IAAA,CACpG,EACD,WAAW,kBAAkB,CAAC,EAAE,aAAa,QAAAA,QAC7C,MAAA,IAAI,eAAeA,QAAO,OAAO,WAAW,CAAC,EAC7C,WAAW,mBAAmB,CAAC,EAAE,cAAc,gBAAgB,oBAAoB,kBACnF,IAAI,gBAAgB,cAAc,gBAAgB,oBAAoB,WAAW,CAAC,EAClF,WAAW,wBAAwB,CAAC,EAAE,iBAAiB,kBAAkB,QAAAA,QAAO,MAChF,IAAI,qBAAqB,iBAAiB,kBAAkBA,QAAO,SAAS,WAAW,CAAA,CAAE,CAAC,EAC1F,WAAW,eAAe,CAAC,EAAE,cAAc,iBAAiB,MAC5D,IAAI,YAAY,cAAc,gBAAgB,CAAC,EAC/C,WAAW,uBAAuB,CAAC,EAAE,QAAAA,cACrC,IAAI,oBAAoBA,QAAO,KAAK,CAAC,EACrC,WAAW,0BAA0B,CAAC,EAAE,qBAAqB,QAAAA,QAAO,MACpE,IAAI,uCAAuCA,QAAO,OAAO,mBAAmB,CAAC,EAC7E,WAAW,oCAAoC,CAAC,EAAE,iBAAiB,QAAAA,QAAO,MAC1E,IAAI,iCAAiCA,QAAO,OAAO,eAAe,CAAC,EACnE,WAAW,kBAAkB,CAAC,EAAE,wBAAwB,wCAAwC;AAAA,MAChG,CAAC,uBAAuB,aAAa,GAAG;AAAA,MACxC,CAAC,8BAA8B,aAAa,GAAG;AAAA,IAAA,EAC9C,EACD,WAAW,wBAAwB,CAAC,EAAE,cAAc,gBAAgB,sBAAsB,aAAa,gBAAgB,aAAa,kBAAkB,QAAAA,QAAO,MAC7J,IAAK,MAAsC;AAAA,MAC1C,OAAO,IAAqB,UAA0B,cAAyD;AAC9G,eAAO,IAAI;AAAA,UACVA,QAAO;AAAA,UACP;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACD;AAAA,MAAA;AAAA,IACD,EACG,CAAA,EACJ,WAAW,wBAAwB,CAAC,EAAE,cAAc,aAAa,QAAAA,SAAQ,iBAAiB,MAC1F,IAAI,qBAAqBA,QAAO,OAAO,cAAc,aAAa,gBAAgB,CAAC,EACnF,WAAW,wBAAwB,CAAC,EAAE,cAAc,aAAa,QAAAA,SAAQ,iBACzE,MAAA,IAAI,qBAAqBA,QAAO,OAAO,cAAc,aAAa,gBAAgB,CAAC,EACnF,WAAW,0BAA0B,MACrC,IAAI,wBAAwB,EAC5B,WAAW,6BAA6B,CAAC,CAAC,MAC1C,IAAI,0BAA2B,CAAA,EAC/B,WAAW,wBAAwB,CAAC,EAAE,kBAAkB,cAAc,wBAAwB,2BAA2B,aAAa,QAAAA,QAAAA,MACtI,IAAI,qBAAqBA,QAAO,OAAO,kBAAkB,cAAc,wBAAwB,2BAA2B,WAAW,CAAC,EACtI,WAAW,kBAAkB,CAAC,EAAE,kBAAkB,sBAAsB,cAAc,aAAa,QAAAA,QAAO,MAC1G,IAAI,eAAeA,QAAO,OAAO,kBAAkB,cAAc,sBAAsB,WAAW,CAAC,EACnG,WAAW,WAAW,CAAC,EAAE,kBAAkB,sBAAsB,QAAAA,SAAQ,wBAAAC,8BACzE,IAAI,QAAQD,QAAO,OAAOC,yBAAwB,kBAAkB,oBAAoB,CAAC,EACzF,WAAW,YAAY,CAAC,EAAG,sBAAsB,WAAW,QAAAD,SAAQ,wBAAAC,wBAAuB,MAC3F,IAAI,SAASD,QAAO,OAAOC,yBAAwB,sBAAsB,SAAS,CAAC,EACnF,WAAW,iBAAiB,CAAC,EAAE,oBAAoB,sBAAsB,qBAAqB,cAAc,sBAAsB,gBAAgB,SAAS,UAAU,aAAa,WAAW,QAAAD,SAAQ,wBAAAC,8BAA6B;AAClO,aAAO,IAAI;AAAA,QACV;AAAA,QACA;AAAA,QACAD,QAAO;AAAA,QACPC;AAAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD;AAAA,IACA,CAAA,EAEA,WAAW,mBAAmB,MAC9B,IAAI,uBAAwB,CAAA,EAC5B,WAAW,gBAAgB,CAAC,EAAE,eAAe,gBAC7C,MAAA,IAAI,aAAa,eAAe,eAAe,CAAC,EAChD,WAAW,iCAAiC,MAC5C,IAAI,oBAAqB,CAAA,EACzB,WAAW,6BAA6B,CAAC,EAAE,QAAAD,QAAO,MAClD,IAAI,gBAAgBA,QAAO,KAAK,CAAC,EACjC,WAAW,gBAAgB,CAAC,EAAE,2BAA2B,QAAAA,QACzD,MAAA,IAAI,uBAAuBA,QAAO,OAAO,yBAAyB,CAAC,EACnE,WAAW,uBAAuB,CAAC,EAAE,gBACrC,IAAI,oBAAoB,SAAS,CAAC,EAClC,WAAW,uBAAuB,CAAC,EAAE,QAAAA,QAAO,MAC5C,IAAI,oBAAoBA,QAAO,YAAYA,QAAO,KAAK,CAAC,EACxD,WAAW,qBAAqB,CAAC,EAAE,qBAAqB,qBAAqB,cAAc,QAAAA,QAAO,MAClG,IAAI,kBAAkBA,QAAO,OAAO,qBAAqB,qBAAqB,YAAY,CAAC,EAC3F,WAAW,oBAAoB,CAAC,EAAE,eAAe,mBAAmB,iBAAiB,QAAAA,SAAQ,wBAAAC,wBAAuB,MACpH,IAAI,iBAAiBD,QAAO,OAAO,eAAe,mBAAmB,iBAAiBC,uBAAsB,CAAC,EAC7G,WAAW,sBAAsB,CAAC,EAAE,mBAAmB,cACvD,MAAA,IAAI,mBAAmB,eAAe,iBAAiB,CAAC;AAAA,EAAA;AAAA,EAGpD,OAAO,MAAkD;AACxD,WAAA,KAAK,cAAc,IAAI,EAAE,MAAQ,EAAA,KAAK,sBAAsB,gBAAgB,kBAAkB;AAAA,EAAA;AAEvG;"}
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 { 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'\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}\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 }) =>\n\t\t\t\tnew FieldsVisitorFactory(relationFetcher, predicateFactory, schema.settings.content ?? {}))\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}\n\n\tpublic create(args: ExecutionContainerArgs): ExecutionContainer {\n\t\treturn this.createBuilder(args).build().pick('validationResolver', 'readResolver', 'mutationResolver')\n\t}\n}\n\n"],"names":["schema","schemaDatabaseMetadata"],"mappings":"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"}
@@ -10,7 +10,7 @@ class ColumnValueResolver {
10
10
  return "00000000-0000-0000-0000-000000000000";
11
11
  }
12
12
  try {
13
- return schemaUtils.resolveColumnValue(context, this.providers);
13
+ return schemaUtils.resolveColumnValue(context, this.providers, {});
14
14
  } catch (e) {
15
15
  if (e instanceof schemaUtils.NoDataError) {
16
16
  return void 0;
@@ -1 +1 @@
1
- {"version":3,"file":"ColumnValueResolver.cjs","sources":["../../../../../packages/engine-content-api/src/input-validation/ColumnValueResolver.ts"],"sourcesContent":["import { NoDataError, Providers, resolveColumnValue } from '@contember/schema-utils'\nimport { Model, Value } from '@contember/schema'\n\nexport class ColumnValueResolver {\n\tconstructor(private readonly providers: Providers) {}\n\n\tgetDefaultValidationValue(context: Model.ColumnContext & { input: Value.FieldValue | undefined }): Value.FieldValue | undefined {\n\t\tif (context.column.name === context.entity.primary) {\n\t\t\treturn '00000000-0000-0000-0000-000000000000'\n\t\t}\n\t\ttry {\n\t\t\treturn resolveColumnValue(context, this.providers)\n\t\t} catch (e) {\n\t\t\tif (e instanceof NoDataError) {\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\tthrow e\n\t\t}\n\t}\n}\n"],"names":["resolveColumnValue","NoDataError"],"mappings":";;;AAGO,MAAM,oBAAoB;AAAA,EAChC,YAA6B,WAAsB;AAAtB,SAAA,YAAA;AAAA,EAAA;AAAA,EAE7B,0BAA0B,SAAsG;AAC/H,QAAI,QAAQ,OAAO,SAAS,QAAQ,OAAO,SAAS;AAC5C,aAAA;AAAA,IAAA;AAEJ,QAAA;AACI,aAAAA,+BAAmB,SAAS,KAAK,SAAS;AAAA,aACzC,GAAG;AACX,UAAI,aAAaC,YAAAA,aAAa;AACtB,eAAA;AAAA,MAAA;AAEF,YAAA;AAAA,IAAA;AAAA,EACP;AAEF;;"}
1
+ {"version":3,"file":"ColumnValueResolver.cjs","sources":["../../../../../packages/engine-content-api/src/input-validation/ColumnValueResolver.ts"],"sourcesContent":["import { NoDataError, Providers, resolveColumnValue } from '@contember/schema-utils'\nimport { Model, Value } from '@contember/schema'\n\nexport class ColumnValueResolver {\n\tconstructor(private readonly providers: Providers) {}\n\n\tgetDefaultValidationValue(context: Model.ColumnContext & { input: Value.FieldValue | undefined }): Value.FieldValue | undefined {\n\t\tif (context.column.name === context.entity.primary) {\n\t\t\treturn '00000000-0000-0000-0000-000000000000'\n\t\t}\n\t\ttry {\n\t\t\treturn resolveColumnValue(context, this.providers, {})\n\t\t} catch (e) {\n\t\t\tif (e instanceof NoDataError) {\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\tthrow e\n\t\t}\n\t}\n}\n"],"names":["resolveColumnValue","NoDataError"],"mappings":";;;AAGO,MAAM,oBAAoB;AAAA,EAChC,YAA6B,WAAsB;AAAtB,SAAA,YAAA;AAAA,EAAA;AAAA,EAE7B,0BAA0B,SAAsG;AAC/H,QAAI,QAAQ,OAAO,SAAS,QAAQ,OAAO,SAAS;AAC5C,aAAA;AAAA,IAAA;AAEJ,QAAA;AACH,aAAOA,YAAmB,mBAAA,SAAS,KAAK,WAAW,CAAA,CAAE;AAAA,aAC7C,GAAG;AACX,UAAI,aAAaC,YAAAA,aAAa;AACtB,eAAA;AAAA,MAAA;AAEF,YAAA;AAAA,IAAA;AAAA,EACP;AAEF;;"}
@@ -8,7 +8,7 @@ class ColumnValueResolver {
8
8
  return "00000000-0000-0000-0000-000000000000";
9
9
  }
10
10
  try {
11
- return resolveColumnValue(context, this.providers);
11
+ return resolveColumnValue(context, this.providers, {});
12
12
  } catch (e) {
13
13
  if (e instanceof NoDataError) {
14
14
  return void 0;
@@ -1 +1 @@
1
- {"version":3,"file":"ColumnValueResolver.js","sources":["../../../../../packages/engine-content-api/src/input-validation/ColumnValueResolver.ts"],"sourcesContent":["import { NoDataError, Providers, resolveColumnValue } from '@contember/schema-utils'\nimport { Model, Value } from '@contember/schema'\n\nexport class ColumnValueResolver {\n\tconstructor(private readonly providers: Providers) {}\n\n\tgetDefaultValidationValue(context: Model.ColumnContext & { input: Value.FieldValue | undefined }): Value.FieldValue | undefined {\n\t\tif (context.column.name === context.entity.primary) {\n\t\t\treturn '00000000-0000-0000-0000-000000000000'\n\t\t}\n\t\ttry {\n\t\t\treturn resolveColumnValue(context, this.providers)\n\t\t} catch (e) {\n\t\t\tif (e instanceof NoDataError) {\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\tthrow e\n\t\t}\n\t}\n}\n"],"names":[],"mappings":";AAGO,MAAM,oBAAoB;AAAA,EAChC,YAA6B,WAAsB;AAAtB,SAAA,YAAA;AAAA,EAAA;AAAA,EAE7B,0BAA0B,SAAsG;AAC/H,QAAI,QAAQ,OAAO,SAAS,QAAQ,OAAO,SAAS;AAC5C,aAAA;AAAA,IAAA;AAEJ,QAAA;AACI,aAAA,mBAAmB,SAAS,KAAK,SAAS;AAAA,aACzC,GAAG;AACX,UAAI,aAAa,aAAa;AACtB,eAAA;AAAA,MAAA;AAEF,YAAA;AAAA,IAAA;AAAA,EACP;AAEF;"}
1
+ {"version":3,"file":"ColumnValueResolver.js","sources":["../../../../../packages/engine-content-api/src/input-validation/ColumnValueResolver.ts"],"sourcesContent":["import { NoDataError, Providers, resolveColumnValue } from '@contember/schema-utils'\nimport { Model, Value } from '@contember/schema'\n\nexport class ColumnValueResolver {\n\tconstructor(private readonly providers: Providers) {}\n\n\tgetDefaultValidationValue(context: Model.ColumnContext & { input: Value.FieldValue | undefined }): Value.FieldValue | undefined {\n\t\tif (context.column.name === context.entity.primary) {\n\t\t\treturn '00000000-0000-0000-0000-000000000000'\n\t\t}\n\t\ttry {\n\t\t\treturn resolveColumnValue(context, this.providers, {})\n\t\t} catch (e) {\n\t\t\tif (e instanceof NoDataError) {\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\tthrow e\n\t\t}\n\t}\n}\n"],"names":[],"mappings":";AAGO,MAAM,oBAAoB;AAAA,EAChC,YAA6B,WAAsB;AAAtB,SAAA,YAAA;AAAA,EAAA;AAAA,EAE7B,0BAA0B,SAAsG;AAC/H,QAAI,QAAQ,OAAO,SAAS,QAAQ,OAAO,SAAS;AAC5C,aAAA;AAAA,IAAA;AAEJ,QAAA;AACH,aAAO,mBAAmB,SAAS,KAAK,WAAW,CAAA,CAAE;AAAA,aAC7C,GAAG;AACX,UAAI,aAAa,aAAa;AACtB,eAAA;AAAA,MAAA;AAEF,YAAA;AAAA,IAAA;AAAA,EACP;AAEF;"}
@@ -7,17 +7,18 @@ require("@contember/schema");
7
7
  const SqlCreateInputProcessor = require("./SqlCreateInputProcessor.cjs");
8
8
  const ColumnValue = require("../ColumnValue.cjs");
9
9
  class Inserter {
10
- constructor(schema, schemaDatabaseMetadata, insertBuilderFactory, providers) {
10
+ constructor(schema, schemaDatabaseMetadata, insertBuilderFactory, providers, options) {
11
11
  this.schema = schema;
12
12
  this.schemaDatabaseMetadata = schemaDatabaseMetadata;
13
13
  this.insertBuilderFactory = insertBuilderFactory;
14
14
  this.providers = providers;
15
+ this.options = options;
15
16
  }
16
17
  async insert(mapper, entity, data, insertIdCallback, builderCb) {
17
18
  const insertBuilder = this.insertBuilderFactory.create(entity);
18
19
  insertBuilder.addPredicates(Object.keys(data));
19
20
  const visitor = new CreateInputVisitor.CreateInputVisitor(
20
- new SqlCreateInputProcessor.SqlCreateInputProcessor(insertBuilder, mapper, this.providers),
21
+ new SqlCreateInputProcessor.SqlCreateInputProcessor(insertBuilder, mapper, this.providers, this.options),
21
22
  this.schema,
22
23
  data
23
24
  );
@@ -1 +1 @@
1
- {"version":3,"file":"Inserter.cjs","sources":["../../../../../../packages/engine-content-api/src/mapper/insert/Inserter.ts"],"sourcesContent":["import { MutationCreateOk, MutationNoResultError, MutationResultList } from '../Result'\nimport { CreateInputVisitor } from '../../inputProcessing'\nimport { SqlCreateInputProcessor, SqlCreateInputProcessorResult } from './SqlCreateInputProcessor'\nimport { Mapper } from '../Mapper'\nimport { Model } from '@contember/schema'\nimport { acceptFieldVisitor, Providers } from '@contember/schema-utils'\nimport { InsertBuilderFactory } from './InsertBuilderFactory'\nimport { InsertBuilder } from './InsertBuilder'\nimport { rowDataToFieldValues } from '../ColumnValue'\nimport { DatabaseMetadata } from '@contember/database'\nimport { MapperInput } from '../types'\n\nexport class Inserter {\n\tconstructor(\n\t\tprivate readonly schema: Model.Schema,\n\t\tprivate readonly schemaDatabaseMetadata: DatabaseMetadata,\n\t\tprivate readonly insertBuilderFactory: InsertBuilderFactory,\n\t\tprivate readonly providers: Providers,\n\t) {}\n\n\tpublic async insert(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tdata: MapperInput.CreateDataInput,\n\t\tinsertIdCallback: (id: string) => void,\n\t\tbuilderCb: (builder: InsertBuilder) => void,\n\t): Promise<MutationResultList> {\n\t\tconst insertBuilder = this.insertBuilderFactory.create(entity)\n\n\t\tinsertBuilder.addPredicates(Object.keys(data))\n\n\t\tconst visitor = new CreateInputVisitor<SqlCreateInputProcessorResult>(\n\t\t\tnew SqlCreateInputProcessor(insertBuilder, mapper, this.providers),\n\t\t\tthis.schema,\n\t\t\tdata,\n\t\t)\n\n\t\tconst resultList: MutationResultList = []\n\t\tconst postInserts: Exclude<SqlCreateInputProcessorResult, MutationResultList>[] = []\n\n\t\tconst keys = new Set([\n\t\t\tentity.primary,\n\t\t\t...Object.keys(data),\n\t\t\t...Object.keys(entity.fields),\n\t\t])\n\n\t\tfor (const key of keys.values()) {\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\tpostInserts.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\tbuilderCb(insertBuilder)\n\t\tconst insertResult = await insertBuilder.execute(mapper)\n\n\t\tif (insertResult.primaryValue === null) {\n\t\t\treturn [new MutationNoResultError([]), ...resultList]\n\t\t}\n\t\tinsertIdCallback(String(insertResult.primaryValue))\n\n\t\tconst okResult = new MutationCreateOk([], entity, insertResult.primaryValue, data, rowDataToFieldValues(insertResult.values))\n\t\tresultList.unshift(okResult)\n\n\t\tfor (const postInsert of postInserts) {\n\t\t\tconst postInsertResult = await postInsert({ primary: insertResult.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\n"],"names":["CreateInputVisitor","SqlCreateInputProcessor","acceptFieldVisitor","MutationNoResultError","MutationCreateOk","rowDataToFieldValues"],"mappings":";;;;;;;;AAYO,MAAM,SAAS;AAAA,EACrB,YACkB,QACA,wBACA,sBACA,WAChB;AAJgB,SAAA,SAAA;AACA,SAAA,yBAAA;AACA,SAAA,uBAAA;AACA,SAAA,YAAA;AAAA,EAAA;AAAA,EAGlB,MAAa,OACZ,QACA,QACA,MACA,kBACA,WAC8B;AAC9B,UAAM,gBAAgB,KAAK,qBAAqB,OAAO,MAAM;AAE7D,kBAAc,cAAc,OAAO,KAAK,IAAI,CAAC;AAE7C,UAAM,UAAU,IAAIA,mBAAA;AAAA,MACnB,IAAIC,wBAAA,wBAAwB,eAAe,QAAQ,KAAK,SAAS;AAAA,MACjE,KAAK;AAAA,MACL;AAAA,IACD;AAEA,UAAM,aAAiC,CAAC;AACxC,UAAM,cAA4E,CAAC;AAE7E,UAAA,2BAAW,IAAI;AAAA,MACpB,OAAO;AAAA,MACP,GAAG,OAAO,KAAK,IAAI;AAAA,MACnB,GAAG,OAAO,KAAK,OAAO,MAAM;AAAA,IAAA,CAC5B;AAEU,eAAA,OAAO,KAAK,UAAU;AAChC,YAAM,YAAY,MAAMC,YAAA;AAAA,QACvB,KAAK;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,MACD;AACA,iBAAW,UAAU,WAAW;AAC3B,YAAA,OAAO,WAAW,YAAY;AACjC,sBAAY,KAAK,MAAM;AAAA,QAAA,OACjB;AACK,qBAAA,cAAc,MAAM,QAAQ;AACtC,uBAAW,KAAK,UAAU;AAC1B,gBAAI,WAAW,OAAO;AACd,qBAAA;AAAA,YAAA;AAAA,UACR;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAGD,cAAU,aAAa;AACvB,UAAM,eAAe,MAAM,cAAc,QAAQ,MAAM;AAEnD,QAAA,aAAa,iBAAiB,MAAM;AACvC,aAAO,CAAC,IAAIC,OAAA,sBAAsB,EAAE,GAAG,GAAG,UAAU;AAAA,IAAA;AAEpC,qBAAA,OAAO,aAAa,YAAY,CAAC;AAElD,UAAM,WAAW,IAAIC,wBAAiB,CAAA,GAAI,QAAQ,aAAa,cAAc,MAAMC,YAAAA,qBAAqB,aAAa,MAAM,CAAC;AAC5H,eAAW,QAAQ,QAAQ;AAE3B,eAAW,cAAc,aAAa;AACrC,YAAM,mBAAmB,MAAM,WAAW,EAAE,SAAS,aAAa,cAAc;AAChF,iBAAW,UAAU,kBAAkB;AACtC,mBAAW,KAAK,MAAM;AACtB,YAAI,OAAO,OAAO;AACV,iBAAA;AAAA,QAAA;AAAA,MACR;AAAA,IACD;AAGM,WAAA;AAAA,EAAA;AAET;;"}
1
+ {"version":3,"file":"Inserter.cjs","sources":["../../../../../../packages/engine-content-api/src/mapper/insert/Inserter.ts"],"sourcesContent":["import { MutationCreateOk, MutationNoResultError, MutationResultList } from '../Result'\nimport { CreateInputVisitor } from '../../inputProcessing'\nimport { SqlCreateInputProcessor, SqlCreateInputProcessorResult } from './SqlCreateInputProcessor'\nimport { Mapper } from '../Mapper'\nimport { Model } from '@contember/schema'\nimport { acceptFieldVisitor, Providers } from '@contember/schema-utils'\nimport { InsertBuilderFactory } from './InsertBuilderFactory'\nimport { InsertBuilder } from './InsertBuilder'\nimport { rowDataToFieldValues } from '../ColumnValue'\nimport { DatabaseMetadata } from '@contember/database'\nimport { MapperInput } from '../types'\n\nexport class Inserter {\n\tconstructor(\n\t\tprivate readonly schema: Model.Schema,\n\t\tprivate readonly schemaDatabaseMetadata: DatabaseMetadata,\n\t\tprivate readonly insertBuilderFactory: InsertBuilderFactory,\n\t\tprivate readonly providers: Providers,\n\t\tprivate readonly options: { uuidVersion?: 4 | 7 },\n\t) {}\n\n\tpublic async insert(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tdata: MapperInput.CreateDataInput,\n\t\tinsertIdCallback: (id: string) => void,\n\t\tbuilderCb: (builder: InsertBuilder) => void,\n\t): Promise<MutationResultList> {\n\t\tconst insertBuilder = this.insertBuilderFactory.create(entity)\n\n\t\tinsertBuilder.addPredicates(Object.keys(data))\n\n\t\tconst visitor = new CreateInputVisitor<SqlCreateInputProcessorResult>(\n\t\t\tnew SqlCreateInputProcessor(insertBuilder, mapper, this.providers, this.options),\n\t\t\tthis.schema,\n\t\t\tdata,\n\t\t)\n\n\t\tconst resultList: MutationResultList = []\n\t\tconst postInserts: Exclude<SqlCreateInputProcessorResult, MutationResultList>[] = []\n\n\t\tconst keys = new Set([\n\t\t\tentity.primary,\n\t\t\t...Object.keys(data),\n\t\t\t...Object.keys(entity.fields),\n\t\t])\n\n\t\tfor (const key of keys.values()) {\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\tpostInserts.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\tbuilderCb(insertBuilder)\n\t\tconst insertResult = await insertBuilder.execute(mapper)\n\n\t\tif (insertResult.primaryValue === null) {\n\t\t\treturn [new MutationNoResultError([]), ...resultList]\n\t\t}\n\t\tinsertIdCallback(String(insertResult.primaryValue))\n\n\t\tconst okResult = new MutationCreateOk([], entity, insertResult.primaryValue, data, rowDataToFieldValues(insertResult.values))\n\t\tresultList.unshift(okResult)\n\n\t\tfor (const postInsert of postInserts) {\n\t\t\tconst postInsertResult = await postInsert({ primary: insertResult.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\n"],"names":["CreateInputVisitor","SqlCreateInputProcessor","acceptFieldVisitor","MutationNoResultError","MutationCreateOk","rowDataToFieldValues"],"mappings":";;;;;;;;AAYO,MAAM,SAAS;AAAA,EACrB,YACkB,QACA,wBACA,sBACA,WACA,SAChB;AALgB,SAAA,SAAA;AACA,SAAA,yBAAA;AACA,SAAA,uBAAA;AACA,SAAA,YAAA;AACA,SAAA,UAAA;AAAA,EAAA;AAAA,EAGlB,MAAa,OACZ,QACA,QACA,MACA,kBACA,WAC8B;AAC9B,UAAM,gBAAgB,KAAK,qBAAqB,OAAO,MAAM;AAE7D,kBAAc,cAAc,OAAO,KAAK,IAAI,CAAC;AAE7C,UAAM,UAAU,IAAIA,mBAAA;AAAA,MACnB,IAAIC,wBAAAA,wBAAwB,eAAe,QAAQ,KAAK,WAAW,KAAK,OAAO;AAAA,MAC/E,KAAK;AAAA,MACL;AAAA,IACD;AAEA,UAAM,aAAiC,CAAC;AACxC,UAAM,cAA4E,CAAC;AAE7E,UAAA,2BAAW,IAAI;AAAA,MACpB,OAAO;AAAA,MACP,GAAG,OAAO,KAAK,IAAI;AAAA,MACnB,GAAG,OAAO,KAAK,OAAO,MAAM;AAAA,IAAA,CAC5B;AAEU,eAAA,OAAO,KAAK,UAAU;AAChC,YAAM,YAAY,MAAMC,YAAA;AAAA,QACvB,KAAK;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,MACD;AACA,iBAAW,UAAU,WAAW;AAC3B,YAAA,OAAO,WAAW,YAAY;AACjC,sBAAY,KAAK,MAAM;AAAA,QAAA,OACjB;AACK,qBAAA,cAAc,MAAM,QAAQ;AACtC,uBAAW,KAAK,UAAU;AAC1B,gBAAI,WAAW,OAAO;AACd,qBAAA;AAAA,YAAA;AAAA,UACR;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAGD,cAAU,aAAa;AACvB,UAAM,eAAe,MAAM,cAAc,QAAQ,MAAM;AAEnD,QAAA,aAAa,iBAAiB,MAAM;AACvC,aAAO,CAAC,IAAIC,OAAA,sBAAsB,EAAE,GAAG,GAAG,UAAU;AAAA,IAAA;AAEpC,qBAAA,OAAO,aAAa,YAAY,CAAC;AAElD,UAAM,WAAW,IAAIC,wBAAiB,CAAA,GAAI,QAAQ,aAAa,cAAc,MAAMC,YAAAA,qBAAqB,aAAa,MAAM,CAAC;AAC5H,eAAW,QAAQ,QAAQ;AAE3B,eAAW,cAAc,aAAa;AACrC,YAAM,mBAAmB,MAAM,WAAW,EAAE,SAAS,aAAa,cAAc;AAChF,iBAAW,UAAU,kBAAkB;AACtC,mBAAW,KAAK,MAAM;AACtB,YAAI,OAAO,OAAO;AACV,iBAAA;AAAA,QAAA;AAAA,MACR;AAAA,IACD;AAGM,WAAA;AAAA,EAAA;AAET;;"}
@@ -5,17 +5,18 @@ import "@contember/schema";
5
5
  import { SqlCreateInputProcessor } from "./SqlCreateInputProcessor.js";
6
6
  import { rowDataToFieldValues } from "../ColumnValue.js";
7
7
  class Inserter {
8
- constructor(schema, schemaDatabaseMetadata, insertBuilderFactory, providers) {
8
+ constructor(schema, schemaDatabaseMetadata, insertBuilderFactory, providers, options) {
9
9
  this.schema = schema;
10
10
  this.schemaDatabaseMetadata = schemaDatabaseMetadata;
11
11
  this.insertBuilderFactory = insertBuilderFactory;
12
12
  this.providers = providers;
13
+ this.options = options;
13
14
  }
14
15
  async insert(mapper, entity, data, insertIdCallback, builderCb) {
15
16
  const insertBuilder = this.insertBuilderFactory.create(entity);
16
17
  insertBuilder.addPredicates(Object.keys(data));
17
18
  const visitor = new CreateInputVisitor(
18
- new SqlCreateInputProcessor(insertBuilder, mapper, this.providers),
19
+ new SqlCreateInputProcessor(insertBuilder, mapper, this.providers, this.options),
19
20
  this.schema,
20
21
  data
21
22
  );
@@ -1 +1 @@
1
- {"version":3,"file":"Inserter.js","sources":["../../../../../../packages/engine-content-api/src/mapper/insert/Inserter.ts"],"sourcesContent":["import { MutationCreateOk, MutationNoResultError, MutationResultList } from '../Result'\nimport { CreateInputVisitor } from '../../inputProcessing'\nimport { SqlCreateInputProcessor, SqlCreateInputProcessorResult } from './SqlCreateInputProcessor'\nimport { Mapper } from '../Mapper'\nimport { Model } from '@contember/schema'\nimport { acceptFieldVisitor, Providers } from '@contember/schema-utils'\nimport { InsertBuilderFactory } from './InsertBuilderFactory'\nimport { InsertBuilder } from './InsertBuilder'\nimport { rowDataToFieldValues } from '../ColumnValue'\nimport { DatabaseMetadata } from '@contember/database'\nimport { MapperInput } from '../types'\n\nexport class Inserter {\n\tconstructor(\n\t\tprivate readonly schema: Model.Schema,\n\t\tprivate readonly schemaDatabaseMetadata: DatabaseMetadata,\n\t\tprivate readonly insertBuilderFactory: InsertBuilderFactory,\n\t\tprivate readonly providers: Providers,\n\t) {}\n\n\tpublic async insert(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tdata: MapperInput.CreateDataInput,\n\t\tinsertIdCallback: (id: string) => void,\n\t\tbuilderCb: (builder: InsertBuilder) => void,\n\t): Promise<MutationResultList> {\n\t\tconst insertBuilder = this.insertBuilderFactory.create(entity)\n\n\t\tinsertBuilder.addPredicates(Object.keys(data))\n\n\t\tconst visitor = new CreateInputVisitor<SqlCreateInputProcessorResult>(\n\t\t\tnew SqlCreateInputProcessor(insertBuilder, mapper, this.providers),\n\t\t\tthis.schema,\n\t\t\tdata,\n\t\t)\n\n\t\tconst resultList: MutationResultList = []\n\t\tconst postInserts: Exclude<SqlCreateInputProcessorResult, MutationResultList>[] = []\n\n\t\tconst keys = new Set([\n\t\t\tentity.primary,\n\t\t\t...Object.keys(data),\n\t\t\t...Object.keys(entity.fields),\n\t\t])\n\n\t\tfor (const key of keys.values()) {\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\tpostInserts.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\tbuilderCb(insertBuilder)\n\t\tconst insertResult = await insertBuilder.execute(mapper)\n\n\t\tif (insertResult.primaryValue === null) {\n\t\t\treturn [new MutationNoResultError([]), ...resultList]\n\t\t}\n\t\tinsertIdCallback(String(insertResult.primaryValue))\n\n\t\tconst okResult = new MutationCreateOk([], entity, insertResult.primaryValue, data, rowDataToFieldValues(insertResult.values))\n\t\tresultList.unshift(okResult)\n\n\t\tfor (const postInsert of postInserts) {\n\t\t\tconst postInsertResult = await postInsert({ primary: insertResult.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\n"],"names":[],"mappings":";;;;;;AAYO,MAAM,SAAS;AAAA,EACrB,YACkB,QACA,wBACA,sBACA,WAChB;AAJgB,SAAA,SAAA;AACA,SAAA,yBAAA;AACA,SAAA,uBAAA;AACA,SAAA,YAAA;AAAA,EAAA;AAAA,EAGlB,MAAa,OACZ,QACA,QACA,MACA,kBACA,WAC8B;AAC9B,UAAM,gBAAgB,KAAK,qBAAqB,OAAO,MAAM;AAE7D,kBAAc,cAAc,OAAO,KAAK,IAAI,CAAC;AAE7C,UAAM,UAAU,IAAI;AAAA,MACnB,IAAI,wBAAwB,eAAe,QAAQ,KAAK,SAAS;AAAA,MACjE,KAAK;AAAA,MACL;AAAA,IACD;AAEA,UAAM,aAAiC,CAAC;AACxC,UAAM,cAA4E,CAAC;AAE7E,UAAA,2BAAW,IAAI;AAAA,MACpB,OAAO;AAAA,MACP,GAAG,OAAO,KAAK,IAAI;AAAA,MACnB,GAAG,OAAO,KAAK,OAAO,MAAM;AAAA,IAAA,CAC5B;AAEU,eAAA,OAAO,KAAK,UAAU;AAChC,YAAM,YAAY,MAAM;AAAA,QACvB,KAAK;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,MACD;AACA,iBAAW,UAAU,WAAW;AAC3B,YAAA,OAAO,WAAW,YAAY;AACjC,sBAAY,KAAK,MAAM;AAAA,QAAA,OACjB;AACK,qBAAA,cAAc,MAAM,QAAQ;AACtC,uBAAW,KAAK,UAAU;AAC1B,gBAAI,WAAW,OAAO;AACd,qBAAA;AAAA,YAAA;AAAA,UACR;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAGD,cAAU,aAAa;AACvB,UAAM,eAAe,MAAM,cAAc,QAAQ,MAAM;AAEnD,QAAA,aAAa,iBAAiB,MAAM;AACvC,aAAO,CAAC,IAAI,sBAAsB,EAAE,GAAG,GAAG,UAAU;AAAA,IAAA;AAEpC,qBAAA,OAAO,aAAa,YAAY,CAAC;AAElD,UAAM,WAAW,IAAI,iBAAiB,CAAA,GAAI,QAAQ,aAAa,cAAc,MAAM,qBAAqB,aAAa,MAAM,CAAC;AAC5H,eAAW,QAAQ,QAAQ;AAE3B,eAAW,cAAc,aAAa;AACrC,YAAM,mBAAmB,MAAM,WAAW,EAAE,SAAS,aAAa,cAAc;AAChF,iBAAW,UAAU,kBAAkB;AACtC,mBAAW,KAAK,MAAM;AACtB,YAAI,OAAO,OAAO;AACV,iBAAA;AAAA,QAAA;AAAA,MACR;AAAA,IACD;AAGM,WAAA;AAAA,EAAA;AAET;"}
1
+ {"version":3,"file":"Inserter.js","sources":["../../../../../../packages/engine-content-api/src/mapper/insert/Inserter.ts"],"sourcesContent":["import { MutationCreateOk, MutationNoResultError, MutationResultList } from '../Result'\nimport { CreateInputVisitor } from '../../inputProcessing'\nimport { SqlCreateInputProcessor, SqlCreateInputProcessorResult } from './SqlCreateInputProcessor'\nimport { Mapper } from '../Mapper'\nimport { Model } from '@contember/schema'\nimport { acceptFieldVisitor, Providers } from '@contember/schema-utils'\nimport { InsertBuilderFactory } from './InsertBuilderFactory'\nimport { InsertBuilder } from './InsertBuilder'\nimport { rowDataToFieldValues } from '../ColumnValue'\nimport { DatabaseMetadata } from '@contember/database'\nimport { MapperInput } from '../types'\n\nexport class Inserter {\n\tconstructor(\n\t\tprivate readonly schema: Model.Schema,\n\t\tprivate readonly schemaDatabaseMetadata: DatabaseMetadata,\n\t\tprivate readonly insertBuilderFactory: InsertBuilderFactory,\n\t\tprivate readonly providers: Providers,\n\t\tprivate readonly options: { uuidVersion?: 4 | 7 },\n\t) {}\n\n\tpublic async insert(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tdata: MapperInput.CreateDataInput,\n\t\tinsertIdCallback: (id: string) => void,\n\t\tbuilderCb: (builder: InsertBuilder) => void,\n\t): Promise<MutationResultList> {\n\t\tconst insertBuilder = this.insertBuilderFactory.create(entity)\n\n\t\tinsertBuilder.addPredicates(Object.keys(data))\n\n\t\tconst visitor = new CreateInputVisitor<SqlCreateInputProcessorResult>(\n\t\t\tnew SqlCreateInputProcessor(insertBuilder, mapper, this.providers, this.options),\n\t\t\tthis.schema,\n\t\t\tdata,\n\t\t)\n\n\t\tconst resultList: MutationResultList = []\n\t\tconst postInserts: Exclude<SqlCreateInputProcessorResult, MutationResultList>[] = []\n\n\t\tconst keys = new Set([\n\t\t\tentity.primary,\n\t\t\t...Object.keys(data),\n\t\t\t...Object.keys(entity.fields),\n\t\t])\n\n\t\tfor (const key of keys.values()) {\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\tpostInserts.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\tbuilderCb(insertBuilder)\n\t\tconst insertResult = await insertBuilder.execute(mapper)\n\n\t\tif (insertResult.primaryValue === null) {\n\t\t\treturn [new MutationNoResultError([]), ...resultList]\n\t\t}\n\t\tinsertIdCallback(String(insertResult.primaryValue))\n\n\t\tconst okResult = new MutationCreateOk([], entity, insertResult.primaryValue, data, rowDataToFieldValues(insertResult.values))\n\t\tresultList.unshift(okResult)\n\n\t\tfor (const postInsert of postInserts) {\n\t\t\tconst postInsertResult = await postInsert({ primary: insertResult.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\n"],"names":[],"mappings":";;;;;;AAYO,MAAM,SAAS;AAAA,EACrB,YACkB,QACA,wBACA,sBACA,WACA,SAChB;AALgB,SAAA,SAAA;AACA,SAAA,yBAAA;AACA,SAAA,uBAAA;AACA,SAAA,YAAA;AACA,SAAA,UAAA;AAAA,EAAA;AAAA,EAGlB,MAAa,OACZ,QACA,QACA,MACA,kBACA,WAC8B;AAC9B,UAAM,gBAAgB,KAAK,qBAAqB,OAAO,MAAM;AAE7D,kBAAc,cAAc,OAAO,KAAK,IAAI,CAAC;AAE7C,UAAM,UAAU,IAAI;AAAA,MACnB,IAAI,wBAAwB,eAAe,QAAQ,KAAK,WAAW,KAAK,OAAO;AAAA,MAC/E,KAAK;AAAA,MACL;AAAA,IACD;AAEA,UAAM,aAAiC,CAAC;AACxC,UAAM,cAA4E,CAAC;AAE7E,UAAA,2BAAW,IAAI;AAAA,MACpB,OAAO;AAAA,MACP,GAAG,OAAO,KAAK,IAAI;AAAA,MACnB,GAAG,OAAO,KAAK,OAAO,MAAM;AAAA,IAAA,CAC5B;AAEU,eAAA,OAAO,KAAK,UAAU;AAChC,YAAM,YAAY,MAAM;AAAA,QACvB,KAAK;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,MACD;AACA,iBAAW,UAAU,WAAW;AAC3B,YAAA,OAAO,WAAW,YAAY;AACjC,sBAAY,KAAK,MAAM;AAAA,QAAA,OACjB;AACK,qBAAA,cAAc,MAAM,QAAQ;AACtC,uBAAW,KAAK,UAAU;AAC1B,gBAAI,WAAW,OAAO;AACd,qBAAA;AAAA,YAAA;AAAA,UACR;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAGD,cAAU,aAAa;AACvB,UAAM,eAAe,MAAM,cAAc,QAAQ,MAAM;AAEnD,QAAA,aAAa,iBAAiB,MAAM;AACvC,aAAO,CAAC,IAAI,sBAAsB,EAAE,GAAG,GAAG,UAAU;AAAA,IAAA;AAEpC,qBAAA,OAAO,aAAa,YAAY,CAAC;AAElD,UAAM,WAAW,IAAI,iBAAiB,CAAA,GAAI,QAAQ,aAAa,cAAc,MAAM,qBAAqB,aAAa,MAAM,CAAC;AAC5H,eAAW,QAAQ,QAAQ;AAE3B,eAAW,cAAc,aAAa;AACrC,YAAM,mBAAmB,MAAM,WAAW,EAAE,SAAS,aAAa,cAAc;AAChF,iBAAW,UAAU,kBAAkB;AACtC,mBAAW,KAAK,MAAM;AACtB,YAAI,OAAO,OAAO;AACV,iBAAA;AAAA,QAAA;AAAA,MACR;AAAA,IACD;AAGM,WAAA;AAAA,EAAA;AAET;"}
@@ -11,10 +11,11 @@ var __defProp = Object.defineProperty;
11
11
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
12
12
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
13
13
  class SqlCreateInputProcessor {
14
- constructor(insertBuilder, mapper, providers) {
14
+ constructor(insertBuilder, mapper, providers, options = {}) {
15
15
  this.insertBuilder = insertBuilder;
16
16
  this.mapper = mapper;
17
17
  this.providers = providers;
18
+ this.options = options;
18
19
  __publicField(this, "oneHasOneInverseCreateInputProcessor");
19
20
  __publicField(this, "oneHasOneOwningCreateInputProcessor");
20
21
  __publicField(this, "oneHasManyCreateInputProcessor");
@@ -67,7 +68,7 @@ class SqlCreateInputProcessor {
67
68
  async column(context) {
68
69
  this.insertBuilder.addFieldValue(
69
70
  context.column.name,
70
- schemaUtils.resolveColumnValue(context, this.providers)
71
+ schemaUtils.resolveColumnValue(context, this.providers, this.options)
71
72
  );
72
73
  return [];
73
74
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SqlCreateInputProcessor.cjs","sources":["../../../../../../packages/engine-content-api/src/mapper/insert/SqlCreateInputProcessor.ts"],"sourcesContent":["import { Input, Model, Value } from '@contember/schema'\nimport { Mapper } from '../Mapper'\nimport { InsertBuilder } from './InsertBuilder'\nimport { Providers, resolveColumnValue } from '@contember/schema-utils'\nimport { CreateInputProcessor } from '../../inputProcessing'\nimport { MutationResultList } from '../Result'\nimport { hasManyProcessor, hasOneProcessor } from '../MutationProcessorHelper'\nimport { OneHasOneInverseCreateInputProcessor } from './relations/OneHasOneInverseCreateInputProcessor'\nimport { OneHasOneOwningCreateInputProcessor } from './relations/OneHasOneOwningCreateInputProcessor'\nimport { OneHasManyCreateInputProcessor } from './relations/OneHasManyCreateInputProcessor'\nimport { ManyHasOneCreateInputProcessor } from './relations/ManyHasOneCreateInputProcessor'\nimport { ManyHasManyCreateInputProcessor } from './relations/ManyHasManyCreateInputProcessor'\n\n\nexport type SqlCreateInputProcessorResult = MutationResultList | ((ctx: { primary: Input.PrimaryValue }) => Promise<MutationResultList>)\nexport class SqlCreateInputProcessor implements CreateInputProcessor<SqlCreateInputProcessorResult> {\n\n\tprivate oneHasOneInverseCreateInputProcessor: OneHasOneInverseCreateInputProcessor\n\tprivate oneHasOneOwningCreateInputProcessor: OneHasOneOwningCreateInputProcessor\n\tprivate oneHasManyCreateInputProcessor: OneHasManyCreateInputProcessor\n\tprivate manyHasOneCreateInputProcessor: ManyHasOneCreateInputProcessor\n\tprivate manyHasManyCreateInputProcessor: ManyHasManyCreateInputProcessor\n\n\tconstructor(\n\t\tprivate readonly insertBuilder: InsertBuilder,\n\t\tprivate readonly mapper: Mapper,\n\t\tprivate readonly providers: Providers,\n\t) {\n\t\tthis.oneHasOneInverseCreateInputProcessor = new OneHasOneInverseCreateInputProcessor(this.mapper)\n\t\tthis.oneHasOneOwningCreateInputProcessor = new OneHasOneOwningCreateInputProcessor(this.mapper, this.insertBuilder)\n\t\tthis.oneHasManyCreateInputProcessor = new OneHasManyCreateInputProcessor(this.mapper)\n\t\tthis.manyHasOneCreateInputProcessor = new ManyHasOneCreateInputProcessor(this.mapper, this.insertBuilder)\n\t\tthis.manyHasManyCreateInputProcessor = new ManyHasManyCreateInputProcessor(this.mapper)\n\t}\n\n\tpublic async column(context: Model.ColumnContext & { input: Input.ColumnValue | undefined }): Promise<SqlCreateInputProcessorResult> {\n\t\tthis.insertBuilder.addFieldValue(\n\t\t\tcontext.column.name,\n\t\t\tresolveColumnValue(context, this.providers),\n\t\t)\n\t\treturn []\n\t}\n\n\tmanyHasManyInverse: CreateInputProcessor<SqlCreateInputProcessorResult>['manyHasManyInverse'] = {\n\t\tconnect: hasManyProcessor(ctx => this.manyHasManyCreateInputProcessor.connect(ctx)),\n\t\tcreate: hasManyProcessor(ctx => this.manyHasManyCreateInputProcessor.create(ctx)),\n\t\tconnectOrCreate: hasManyProcessor(ctx => this.manyHasManyCreateInputProcessor.connectOrCreate(ctx)),\n\t}\n\n\tmanyHasManyOwning: CreateInputProcessor<SqlCreateInputProcessorResult>['manyHasManyOwning'] = {\n\t\tconnect: hasManyProcessor(ctx => this.manyHasManyCreateInputProcessor.connect(ctx)),\n\t\tcreate: hasManyProcessor(ctx => this.manyHasManyCreateInputProcessor.create(ctx)),\n\t\tconnectOrCreate: hasManyProcessor(ctx => this.manyHasManyCreateInputProcessor.connectOrCreate(ctx)),\n\t}\n\n\tmanyHasOne: CreateInputProcessor<SqlCreateInputProcessorResult>['manyHasOne'] = {\n\t\tnothing: async ctx => {\n\t\t\tthis.insertBuilder.addFieldValue(ctx.relation.name, null)\n\t\t\treturn []\n\t\t},\n\t\tconnect: hasOneProcessor(ctx => this.manyHasOneCreateInputProcessor.connect(ctx)),\n\t\tcreate: hasOneProcessor(ctx => this.manyHasOneCreateInputProcessor.create(ctx)),\n\t\tconnectOrCreate: hasOneProcessor(ctx => this.manyHasOneCreateInputProcessor.connectOrCreate(ctx)),\n\t}\n\n\toneHasMany: CreateInputProcessor<SqlCreateInputProcessorResult>['oneHasMany'] = {\n\t\tconnect: hasManyProcessor(ctx => this.oneHasManyCreateInputProcessor.connect(ctx)),\n\t\tcreate: hasManyProcessor(ctx => this.oneHasManyCreateInputProcessor.create(ctx)),\n\t\tconnectOrCreate: hasManyProcessor(ctx => this.oneHasManyCreateInputProcessor.connectOrCreate(ctx)),\n\t}\n\n\n\toneHasOneOwning: CreateInputProcessor<SqlCreateInputProcessorResult>['oneHasOneOwning'] = {\n\t\tnothing: async ctx => {\n\t\t\tthis.insertBuilder.addFieldValue(ctx.relation.name, null)\n\t\t\treturn []\n\t\t},\n\t\tconnect: hasOneProcessor(ctx => this.oneHasOneOwningCreateInputProcessor.connect(ctx)),\n\t\tcreate: hasOneProcessor(ctx => this.oneHasOneOwningCreateInputProcessor.create(ctx)),\n\t\tconnectOrCreate: hasOneProcessor(ctx => this.oneHasOneOwningCreateInputProcessor.connectOrCreate(ctx)),\n\t}\n\n\toneHasOneInverse: CreateInputProcessor<SqlCreateInputProcessorResult>['oneHasOneInverse'] = {\n\t\tconnect: hasOneProcessor(ctx => this.oneHasOneInverseCreateInputProcessor.connect(ctx)),\n\t\tcreate: hasOneProcessor(ctx => this.oneHasOneInverseCreateInputProcessor.create(ctx)),\n\t\tconnectOrCreate: hasOneProcessor(ctx => this.oneHasOneInverseCreateInputProcessor.connectOrCreate(ctx)),\n\t}\n}\n"],"names":["hasManyProcessor","hasOneProcessor","OneHasOneInverseCreateInputProcessor","OneHasOneOwningCreateInputProcessor","OneHasManyCreateInputProcessor","ManyHasOneCreateInputProcessor","ManyHasManyCreateInputProcessor","resolveColumnValue"],"mappings":"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"}
1
+ {"version":3,"file":"SqlCreateInputProcessor.cjs","sources":["../../../../../../packages/engine-content-api/src/mapper/insert/SqlCreateInputProcessor.ts"],"sourcesContent":["import { Input, Model, Value } from '@contember/schema'\nimport { Mapper } from '../Mapper'\nimport { InsertBuilder } from './InsertBuilder'\nimport { Providers, resolveColumnValue } from '@contember/schema-utils'\nimport { CreateInputProcessor } from '../../inputProcessing'\nimport { MutationResultList } from '../Result'\nimport { hasManyProcessor, hasOneProcessor } from '../MutationProcessorHelper'\nimport { OneHasOneInverseCreateInputProcessor } from './relations/OneHasOneInverseCreateInputProcessor'\nimport { OneHasOneOwningCreateInputProcessor } from './relations/OneHasOneOwningCreateInputProcessor'\nimport { OneHasManyCreateInputProcessor } from './relations/OneHasManyCreateInputProcessor'\nimport { ManyHasOneCreateInputProcessor } from './relations/ManyHasOneCreateInputProcessor'\nimport { ManyHasManyCreateInputProcessor } from './relations/ManyHasManyCreateInputProcessor'\n\n\nexport type SqlCreateInputProcessorResult = MutationResultList | ((ctx: { primary: Input.PrimaryValue }) => Promise<MutationResultList>)\nexport class SqlCreateInputProcessor implements CreateInputProcessor<SqlCreateInputProcessorResult> {\n\n\tprivate oneHasOneInverseCreateInputProcessor: OneHasOneInverseCreateInputProcessor\n\tprivate oneHasOneOwningCreateInputProcessor: OneHasOneOwningCreateInputProcessor\n\tprivate oneHasManyCreateInputProcessor: OneHasManyCreateInputProcessor\n\tprivate manyHasOneCreateInputProcessor: ManyHasOneCreateInputProcessor\n\tprivate manyHasManyCreateInputProcessor: ManyHasManyCreateInputProcessor\n\n\tconstructor(\n\t\tprivate readonly insertBuilder: InsertBuilder,\n\t\tprivate readonly mapper: Mapper,\n\t\tprivate readonly providers: Providers,\n\t\tprivate readonly options: { uuidVersion?: 4 | 7 } = {},\n\t) {\n\t\tthis.oneHasOneInverseCreateInputProcessor = new OneHasOneInverseCreateInputProcessor(this.mapper)\n\t\tthis.oneHasOneOwningCreateInputProcessor = new OneHasOneOwningCreateInputProcessor(this.mapper, this.insertBuilder)\n\t\tthis.oneHasManyCreateInputProcessor = new OneHasManyCreateInputProcessor(this.mapper)\n\t\tthis.manyHasOneCreateInputProcessor = new ManyHasOneCreateInputProcessor(this.mapper, this.insertBuilder)\n\t\tthis.manyHasManyCreateInputProcessor = new ManyHasManyCreateInputProcessor(this.mapper)\n\t}\n\n\tpublic async column(context: Model.ColumnContext & { input: Input.ColumnValue | undefined }): Promise<SqlCreateInputProcessorResult> {\n\t\tthis.insertBuilder.addFieldValue(\n\t\t\tcontext.column.name,\n\t\t\tresolveColumnValue(context, this.providers, this.options),\n\t\t)\n\t\treturn []\n\t}\n\n\tmanyHasManyInverse: CreateInputProcessor<SqlCreateInputProcessorResult>['manyHasManyInverse'] = {\n\t\tconnect: hasManyProcessor(ctx => this.manyHasManyCreateInputProcessor.connect(ctx)),\n\t\tcreate: hasManyProcessor(ctx => this.manyHasManyCreateInputProcessor.create(ctx)),\n\t\tconnectOrCreate: hasManyProcessor(ctx => this.manyHasManyCreateInputProcessor.connectOrCreate(ctx)),\n\t}\n\n\tmanyHasManyOwning: CreateInputProcessor<SqlCreateInputProcessorResult>['manyHasManyOwning'] = {\n\t\tconnect: hasManyProcessor(ctx => this.manyHasManyCreateInputProcessor.connect(ctx)),\n\t\tcreate: hasManyProcessor(ctx => this.manyHasManyCreateInputProcessor.create(ctx)),\n\t\tconnectOrCreate: hasManyProcessor(ctx => this.manyHasManyCreateInputProcessor.connectOrCreate(ctx)),\n\t}\n\n\tmanyHasOne: CreateInputProcessor<SqlCreateInputProcessorResult>['manyHasOne'] = {\n\t\tnothing: async ctx => {\n\t\t\tthis.insertBuilder.addFieldValue(ctx.relation.name, null)\n\t\t\treturn []\n\t\t},\n\t\tconnect: hasOneProcessor(ctx => this.manyHasOneCreateInputProcessor.connect(ctx)),\n\t\tcreate: hasOneProcessor(ctx => this.manyHasOneCreateInputProcessor.create(ctx)),\n\t\tconnectOrCreate: hasOneProcessor(ctx => this.manyHasOneCreateInputProcessor.connectOrCreate(ctx)),\n\t}\n\n\toneHasMany: CreateInputProcessor<SqlCreateInputProcessorResult>['oneHasMany'] = {\n\t\tconnect: hasManyProcessor(ctx => this.oneHasManyCreateInputProcessor.connect(ctx)),\n\t\tcreate: hasManyProcessor(ctx => this.oneHasManyCreateInputProcessor.create(ctx)),\n\t\tconnectOrCreate: hasManyProcessor(ctx => this.oneHasManyCreateInputProcessor.connectOrCreate(ctx)),\n\t}\n\n\n\toneHasOneOwning: CreateInputProcessor<SqlCreateInputProcessorResult>['oneHasOneOwning'] = {\n\t\tnothing: async ctx => {\n\t\t\tthis.insertBuilder.addFieldValue(ctx.relation.name, null)\n\t\t\treturn []\n\t\t},\n\t\tconnect: hasOneProcessor(ctx => this.oneHasOneOwningCreateInputProcessor.connect(ctx)),\n\t\tcreate: hasOneProcessor(ctx => this.oneHasOneOwningCreateInputProcessor.create(ctx)),\n\t\tconnectOrCreate: hasOneProcessor(ctx => this.oneHasOneOwningCreateInputProcessor.connectOrCreate(ctx)),\n\t}\n\n\toneHasOneInverse: CreateInputProcessor<SqlCreateInputProcessorResult>['oneHasOneInverse'] = {\n\t\tconnect: hasOneProcessor(ctx => this.oneHasOneInverseCreateInputProcessor.connect(ctx)),\n\t\tcreate: hasOneProcessor(ctx => this.oneHasOneInverseCreateInputProcessor.create(ctx)),\n\t\tconnectOrCreate: hasOneProcessor(ctx => this.oneHasOneInverseCreateInputProcessor.connectOrCreate(ctx)),\n\t}\n}\n"],"names":["hasManyProcessor","hasOneProcessor","OneHasOneInverseCreateInputProcessor","OneHasOneOwningCreateInputProcessor","OneHasManyCreateInputProcessor","ManyHasOneCreateInputProcessor","ManyHasManyCreateInputProcessor","resolveColumnValue"],"mappings":"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"}
@@ -9,10 +9,11 @@ var __defProp = Object.defineProperty;
9
9
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
10
10
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
11
11
  class SqlCreateInputProcessor {
12
- constructor(insertBuilder, mapper, providers) {
12
+ constructor(insertBuilder, mapper, providers, options = {}) {
13
13
  this.insertBuilder = insertBuilder;
14
14
  this.mapper = mapper;
15
15
  this.providers = providers;
16
+ this.options = options;
16
17
  __publicField(this, "oneHasOneInverseCreateInputProcessor");
17
18
  __publicField(this, "oneHasOneOwningCreateInputProcessor");
18
19
  __publicField(this, "oneHasManyCreateInputProcessor");
@@ -65,7 +66,7 @@ class SqlCreateInputProcessor {
65
66
  async column(context) {
66
67
  this.insertBuilder.addFieldValue(
67
68
  context.column.name,
68
- resolveColumnValue(context, this.providers)
69
+ resolveColumnValue(context, this.providers, this.options)
69
70
  );
70
71
  return [];
71
72
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SqlCreateInputProcessor.js","sources":["../../../../../../packages/engine-content-api/src/mapper/insert/SqlCreateInputProcessor.ts"],"sourcesContent":["import { Input, Model, Value } from '@contember/schema'\nimport { Mapper } from '../Mapper'\nimport { InsertBuilder } from './InsertBuilder'\nimport { Providers, resolveColumnValue } from '@contember/schema-utils'\nimport { CreateInputProcessor } from '../../inputProcessing'\nimport { MutationResultList } from '../Result'\nimport { hasManyProcessor, hasOneProcessor } from '../MutationProcessorHelper'\nimport { OneHasOneInverseCreateInputProcessor } from './relations/OneHasOneInverseCreateInputProcessor'\nimport { OneHasOneOwningCreateInputProcessor } from './relations/OneHasOneOwningCreateInputProcessor'\nimport { OneHasManyCreateInputProcessor } from './relations/OneHasManyCreateInputProcessor'\nimport { ManyHasOneCreateInputProcessor } from './relations/ManyHasOneCreateInputProcessor'\nimport { ManyHasManyCreateInputProcessor } from './relations/ManyHasManyCreateInputProcessor'\n\n\nexport type SqlCreateInputProcessorResult = MutationResultList | ((ctx: { primary: Input.PrimaryValue }) => Promise<MutationResultList>)\nexport class SqlCreateInputProcessor implements CreateInputProcessor<SqlCreateInputProcessorResult> {\n\n\tprivate oneHasOneInverseCreateInputProcessor: OneHasOneInverseCreateInputProcessor\n\tprivate oneHasOneOwningCreateInputProcessor: OneHasOneOwningCreateInputProcessor\n\tprivate oneHasManyCreateInputProcessor: OneHasManyCreateInputProcessor\n\tprivate manyHasOneCreateInputProcessor: ManyHasOneCreateInputProcessor\n\tprivate manyHasManyCreateInputProcessor: ManyHasManyCreateInputProcessor\n\n\tconstructor(\n\t\tprivate readonly insertBuilder: InsertBuilder,\n\t\tprivate readonly mapper: Mapper,\n\t\tprivate readonly providers: Providers,\n\t) {\n\t\tthis.oneHasOneInverseCreateInputProcessor = new OneHasOneInverseCreateInputProcessor(this.mapper)\n\t\tthis.oneHasOneOwningCreateInputProcessor = new OneHasOneOwningCreateInputProcessor(this.mapper, this.insertBuilder)\n\t\tthis.oneHasManyCreateInputProcessor = new OneHasManyCreateInputProcessor(this.mapper)\n\t\tthis.manyHasOneCreateInputProcessor = new ManyHasOneCreateInputProcessor(this.mapper, this.insertBuilder)\n\t\tthis.manyHasManyCreateInputProcessor = new ManyHasManyCreateInputProcessor(this.mapper)\n\t}\n\n\tpublic async column(context: Model.ColumnContext & { input: Input.ColumnValue | undefined }): Promise<SqlCreateInputProcessorResult> {\n\t\tthis.insertBuilder.addFieldValue(\n\t\t\tcontext.column.name,\n\t\t\tresolveColumnValue(context, this.providers),\n\t\t)\n\t\treturn []\n\t}\n\n\tmanyHasManyInverse: CreateInputProcessor<SqlCreateInputProcessorResult>['manyHasManyInverse'] = {\n\t\tconnect: hasManyProcessor(ctx => this.manyHasManyCreateInputProcessor.connect(ctx)),\n\t\tcreate: hasManyProcessor(ctx => this.manyHasManyCreateInputProcessor.create(ctx)),\n\t\tconnectOrCreate: hasManyProcessor(ctx => this.manyHasManyCreateInputProcessor.connectOrCreate(ctx)),\n\t}\n\n\tmanyHasManyOwning: CreateInputProcessor<SqlCreateInputProcessorResult>['manyHasManyOwning'] = {\n\t\tconnect: hasManyProcessor(ctx => this.manyHasManyCreateInputProcessor.connect(ctx)),\n\t\tcreate: hasManyProcessor(ctx => this.manyHasManyCreateInputProcessor.create(ctx)),\n\t\tconnectOrCreate: hasManyProcessor(ctx => this.manyHasManyCreateInputProcessor.connectOrCreate(ctx)),\n\t}\n\n\tmanyHasOne: CreateInputProcessor<SqlCreateInputProcessorResult>['manyHasOne'] = {\n\t\tnothing: async ctx => {\n\t\t\tthis.insertBuilder.addFieldValue(ctx.relation.name, null)\n\t\t\treturn []\n\t\t},\n\t\tconnect: hasOneProcessor(ctx => this.manyHasOneCreateInputProcessor.connect(ctx)),\n\t\tcreate: hasOneProcessor(ctx => this.manyHasOneCreateInputProcessor.create(ctx)),\n\t\tconnectOrCreate: hasOneProcessor(ctx => this.manyHasOneCreateInputProcessor.connectOrCreate(ctx)),\n\t}\n\n\toneHasMany: CreateInputProcessor<SqlCreateInputProcessorResult>['oneHasMany'] = {\n\t\tconnect: hasManyProcessor(ctx => this.oneHasManyCreateInputProcessor.connect(ctx)),\n\t\tcreate: hasManyProcessor(ctx => this.oneHasManyCreateInputProcessor.create(ctx)),\n\t\tconnectOrCreate: hasManyProcessor(ctx => this.oneHasManyCreateInputProcessor.connectOrCreate(ctx)),\n\t}\n\n\n\toneHasOneOwning: CreateInputProcessor<SqlCreateInputProcessorResult>['oneHasOneOwning'] = {\n\t\tnothing: async ctx => {\n\t\t\tthis.insertBuilder.addFieldValue(ctx.relation.name, null)\n\t\t\treturn []\n\t\t},\n\t\tconnect: hasOneProcessor(ctx => this.oneHasOneOwningCreateInputProcessor.connect(ctx)),\n\t\tcreate: hasOneProcessor(ctx => this.oneHasOneOwningCreateInputProcessor.create(ctx)),\n\t\tconnectOrCreate: hasOneProcessor(ctx => this.oneHasOneOwningCreateInputProcessor.connectOrCreate(ctx)),\n\t}\n\n\toneHasOneInverse: CreateInputProcessor<SqlCreateInputProcessorResult>['oneHasOneInverse'] = {\n\t\tconnect: hasOneProcessor(ctx => this.oneHasOneInverseCreateInputProcessor.connect(ctx)),\n\t\tcreate: hasOneProcessor(ctx => this.oneHasOneInverseCreateInputProcessor.create(ctx)),\n\t\tconnectOrCreate: hasOneProcessor(ctx => this.oneHasOneInverseCreateInputProcessor.connectOrCreate(ctx)),\n\t}\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SqlCreateInputProcessor.js","sources":["../../../../../../packages/engine-content-api/src/mapper/insert/SqlCreateInputProcessor.ts"],"sourcesContent":["import { Input, Model, Value } from '@contember/schema'\nimport { Mapper } from '../Mapper'\nimport { InsertBuilder } from './InsertBuilder'\nimport { Providers, resolveColumnValue } from '@contember/schema-utils'\nimport { CreateInputProcessor } from '../../inputProcessing'\nimport { MutationResultList } from '../Result'\nimport { hasManyProcessor, hasOneProcessor } from '../MutationProcessorHelper'\nimport { OneHasOneInverseCreateInputProcessor } from './relations/OneHasOneInverseCreateInputProcessor'\nimport { OneHasOneOwningCreateInputProcessor } from './relations/OneHasOneOwningCreateInputProcessor'\nimport { OneHasManyCreateInputProcessor } from './relations/OneHasManyCreateInputProcessor'\nimport { ManyHasOneCreateInputProcessor } from './relations/ManyHasOneCreateInputProcessor'\nimport { ManyHasManyCreateInputProcessor } from './relations/ManyHasManyCreateInputProcessor'\n\n\nexport type SqlCreateInputProcessorResult = MutationResultList | ((ctx: { primary: Input.PrimaryValue }) => Promise<MutationResultList>)\nexport class SqlCreateInputProcessor implements CreateInputProcessor<SqlCreateInputProcessorResult> {\n\n\tprivate oneHasOneInverseCreateInputProcessor: OneHasOneInverseCreateInputProcessor\n\tprivate oneHasOneOwningCreateInputProcessor: OneHasOneOwningCreateInputProcessor\n\tprivate oneHasManyCreateInputProcessor: OneHasManyCreateInputProcessor\n\tprivate manyHasOneCreateInputProcessor: ManyHasOneCreateInputProcessor\n\tprivate manyHasManyCreateInputProcessor: ManyHasManyCreateInputProcessor\n\n\tconstructor(\n\t\tprivate readonly insertBuilder: InsertBuilder,\n\t\tprivate readonly mapper: Mapper,\n\t\tprivate readonly providers: Providers,\n\t\tprivate readonly options: { uuidVersion?: 4 | 7 } = {},\n\t) {\n\t\tthis.oneHasOneInverseCreateInputProcessor = new OneHasOneInverseCreateInputProcessor(this.mapper)\n\t\tthis.oneHasOneOwningCreateInputProcessor = new OneHasOneOwningCreateInputProcessor(this.mapper, this.insertBuilder)\n\t\tthis.oneHasManyCreateInputProcessor = new OneHasManyCreateInputProcessor(this.mapper)\n\t\tthis.manyHasOneCreateInputProcessor = new ManyHasOneCreateInputProcessor(this.mapper, this.insertBuilder)\n\t\tthis.manyHasManyCreateInputProcessor = new ManyHasManyCreateInputProcessor(this.mapper)\n\t}\n\n\tpublic async column(context: Model.ColumnContext & { input: Input.ColumnValue | undefined }): Promise<SqlCreateInputProcessorResult> {\n\t\tthis.insertBuilder.addFieldValue(\n\t\t\tcontext.column.name,\n\t\t\tresolveColumnValue(context, this.providers, this.options),\n\t\t)\n\t\treturn []\n\t}\n\n\tmanyHasManyInverse: CreateInputProcessor<SqlCreateInputProcessorResult>['manyHasManyInverse'] = {\n\t\tconnect: hasManyProcessor(ctx => this.manyHasManyCreateInputProcessor.connect(ctx)),\n\t\tcreate: hasManyProcessor(ctx => this.manyHasManyCreateInputProcessor.create(ctx)),\n\t\tconnectOrCreate: hasManyProcessor(ctx => this.manyHasManyCreateInputProcessor.connectOrCreate(ctx)),\n\t}\n\n\tmanyHasManyOwning: CreateInputProcessor<SqlCreateInputProcessorResult>['manyHasManyOwning'] = {\n\t\tconnect: hasManyProcessor(ctx => this.manyHasManyCreateInputProcessor.connect(ctx)),\n\t\tcreate: hasManyProcessor(ctx => this.manyHasManyCreateInputProcessor.create(ctx)),\n\t\tconnectOrCreate: hasManyProcessor(ctx => this.manyHasManyCreateInputProcessor.connectOrCreate(ctx)),\n\t}\n\n\tmanyHasOne: CreateInputProcessor<SqlCreateInputProcessorResult>['manyHasOne'] = {\n\t\tnothing: async ctx => {\n\t\t\tthis.insertBuilder.addFieldValue(ctx.relation.name, null)\n\t\t\treturn []\n\t\t},\n\t\tconnect: hasOneProcessor(ctx => this.manyHasOneCreateInputProcessor.connect(ctx)),\n\t\tcreate: hasOneProcessor(ctx => this.manyHasOneCreateInputProcessor.create(ctx)),\n\t\tconnectOrCreate: hasOneProcessor(ctx => this.manyHasOneCreateInputProcessor.connectOrCreate(ctx)),\n\t}\n\n\toneHasMany: CreateInputProcessor<SqlCreateInputProcessorResult>['oneHasMany'] = {\n\t\tconnect: hasManyProcessor(ctx => this.oneHasManyCreateInputProcessor.connect(ctx)),\n\t\tcreate: hasManyProcessor(ctx => this.oneHasManyCreateInputProcessor.create(ctx)),\n\t\tconnectOrCreate: hasManyProcessor(ctx => this.oneHasManyCreateInputProcessor.connectOrCreate(ctx)),\n\t}\n\n\n\toneHasOneOwning: CreateInputProcessor<SqlCreateInputProcessorResult>['oneHasOneOwning'] = {\n\t\tnothing: async ctx => {\n\t\t\tthis.insertBuilder.addFieldValue(ctx.relation.name, null)\n\t\t\treturn []\n\t\t},\n\t\tconnect: hasOneProcessor(ctx => this.oneHasOneOwningCreateInputProcessor.connect(ctx)),\n\t\tcreate: hasOneProcessor(ctx => this.oneHasOneOwningCreateInputProcessor.create(ctx)),\n\t\tconnectOrCreate: hasOneProcessor(ctx => this.oneHasOneOwningCreateInputProcessor.connectOrCreate(ctx)),\n\t}\n\n\toneHasOneInverse: CreateInputProcessor<SqlCreateInputProcessorResult>['oneHasOneInverse'] = {\n\t\tconnect: hasOneProcessor(ctx => this.oneHasOneInverseCreateInputProcessor.connect(ctx)),\n\t\tcreate: hasOneProcessor(ctx => this.oneHasOneInverseCreateInputProcessor.create(ctx)),\n\t\tconnectOrCreate: hasOneProcessor(ctx => this.oneHasOneInverseCreateInputProcessor.connectOrCreate(ctx)),\n\t}\n}\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const schema = require("@contember/schema");
3
4
  const Database = require("@contember/database");
4
5
  const exception = require("../../exception.cjs");
5
6
  class ConditionBuilder {
@@ -23,15 +24,21 @@ class ConditionBuilder {
23
24
  and: (builder2, expressions) => builder2.and((builder22) => expressions.reduce((builder3, expr) => this.build(builder3, tableName, columnName, columnType, expr), builder22)),
24
25
  or: (builder2, expressions) => builder2.or((builder22) => expressions.reduce((builder3, expr) => this.build(builder3, tableName, columnName, columnType, expr), builder22)),
25
26
  not: (builder2, expression) => builder2.not((builder22) => this.build(builder22, tableName, columnName, columnType, expression)),
27
+ isNull: (builder2, value) => value ? builder2.isNull(columnIdentifier) : builder2.not((clause) => clause.isNull(columnIdentifier)),
26
28
  eq: (builder2, value) => builder2.compare(columnIdentifier, Database.Operator.eq, value),
27
29
  notEq: (builder2, value) => builder2.compare(columnIdentifier, Database.Operator.notEq, value),
28
- isNull: (builder2, value) => value ? builder2.isNull(columnIdentifier) : builder2.not((clause) => clause.isNull(columnIdentifier)),
29
- in: (builder2, values) => builder2.in(columnIdentifier, values, columnType),
30
+ in: (builder2, values) => builder2.in(columnIdentifier, values, columnType.columnType),
30
31
  notIn: (builder2, values) => builder2.not((builder22) => builder22.in(columnIdentifier, values)),
31
32
  lt: (builder2, value) => builder2.compare(columnIdentifier, Database.Operator.lt, value),
32
33
  lte: (builder2, value) => builder2.compare(columnIdentifier, Database.Operator.lte, value),
33
34
  gt: (builder2, value) => builder2.compare(columnIdentifier, Database.Operator.gt, value),
34
35
  gte: (builder2, value) => builder2.compare(columnIdentifier, Database.Operator.gte, value),
36
+ includes: (builder2, value) => {
37
+ const cast = columnType.type === schema.Model.ColumnType.Enum ? `${Database.Compiler.SCHEMA_PLACEHOLDER}."${columnType.columnType}"` : columnType.columnType;
38
+ return builder2.raw(`${Database.formatColumnIdentifier(columnIdentifier)} @> ARRAY[?]::${cast}[]`, value);
39
+ },
40
+ maxLength: (builder2, value) => builder2.raw(`array_length(${Database.formatColumnIdentifier(columnIdentifier)}, 1) <= ?`, value),
41
+ minLength: (builder2, value) => builder2.raw(`array_length(${Database.formatColumnIdentifier(columnIdentifier)}, 1) >= ?`, value),
35
42
  contains: (builder2, value) => builder2.compare(columnIdentifier, Database.Operator.contains, value),
36
43
  startsWith: (builder2, value) => builder2.compare(columnIdentifier, Database.Operator.startsWith, value),
37
44
  endsWith: (builder2, value) => builder2.compare(columnIdentifier, Database.Operator.endsWith, value),
@@ -1 +1 @@
1
- {"version":3,"file":"ConditionBuilder.cjs","sources":["../../../../../../packages/engine-content-api/src/mapper/select/ConditionBuilder.ts"],"sourcesContent":["import { Input } from '@contember/schema'\nimport { QueryBuilder, ConditionBuilder as SqlConditionBuilder, Operator } from '@contember/database'\nimport { UserError } from '../../exception'\n\nexport class ConditionBuilder {\n\tpublic build(\n\t\tbuilder: SqlConditionBuilder,\n\t\ttableName: string,\n\t\tcolumnName: string,\n\t\tcolumnType: string,\n\t\tcondition: Input.Condition<any> | null,\n\t): SqlConditionBuilder {\n\t\tif (condition === null) {\n\t\t\treturn builder\n\t\t}\n\t\tconst entries = Object.entries(condition)\n\t\t\t.filter(<T extends keyof Input.Condition>(it: [string, any]): it is [T, Input.Condition[T]] =>\n\t\t\t\tit[1] !== null,\n\t\t\t)\n\t\tif (entries.length === 0) {\n\t\t\treturn builder\n\t\t}\n\t\tif (entries.length > 1) {\n\t\t\tthrow new UserError(\n\t\t\t\t'Only single field is allowed. If you want to combine multiple conditions, use \"and\" or \"or\". Got: ' +\n\t\t\t\t\tJSON.stringify(condition),\n\t\t\t)\n\t\t}\n\t\tconst columnIdentifier: QueryBuilder.ColumnIdentifier = [tableName, columnName]\n\n\t\tconst handler: {\n\t\t\t[K in keyof Required<Input.Condition<any>>]: (\n\t\t\t\tbuilder: SqlConditionBuilder,\n\t\t\t\tparam: Exclude<Input.Condition<any>[K], undefined>,\n\t\t\t) => SqlConditionBuilder\n\t\t} = {\n\t\t\tand: (builder, expressions) => builder.and(builder2 => expressions.reduce((builder3, expr) => this.build(builder3, tableName, columnName, columnType, expr), builder2)),\n\t\t\tor: (builder, expressions) => builder.or(builder2 => expressions.reduce((builder3, expr) => this.build(builder3, tableName, columnName, columnType, expr), builder2)),\n\t\t\tnot: (builder, expression) => builder.not(builder2 => this.build(builder2, tableName, columnName, columnType, expression)),\n\t\t\teq: (builder, value) => builder.compare(columnIdentifier, Operator.eq, value),\n\t\t\tnotEq: (builder, value) => builder.compare(columnIdentifier, Operator.notEq, value),\n\t\t\tisNull: (builder, value) => value ? builder.isNull(columnIdentifier) : builder.not(clause => clause.isNull(columnIdentifier)),\n\t\t\tin: (builder, values) => builder.in(columnIdentifier, values, columnType),\n\t\t\tnotIn: (builder, values) => builder.not(builder2 => builder2.in(columnIdentifier, values)),\n\t\t\tlt: (builder, value) => builder.compare(columnIdentifier, Operator.lt, value),\n\t\t\tlte: (builder, value) => builder.compare(columnIdentifier, Operator.lte, value),\n\t\t\tgt: (builder, value) => builder.compare(columnIdentifier, Operator.gt, value),\n\t\t\tgte: (builder, value) => builder.compare(columnIdentifier, Operator.gte, value),\n\t\t\tcontains: (builder, value) => builder.compare(columnIdentifier, Operator.contains, value),\n\t\t\tstartsWith: (builder, value) => builder.compare(columnIdentifier, Operator.startsWith, value),\n\t\t\tendsWith: (builder, value) => builder.compare(columnIdentifier, Operator.endsWith, value),\n\t\t\tcontainsCI: (builder, value) => builder.compare(columnIdentifier, Operator.containsCI, value),\n\t\t\tstartsWithCI: (builder, value) => builder.compare(columnIdentifier, Operator.startsWithCI, value),\n\t\t\tendsWithCI: (builder, value) => builder.compare(columnIdentifier, Operator.endsWithCI, value),\n\t\t\tnever: builder => builder.raw('false'),\n\t\t\talways: builder => builder.raw('true'),\n\n\t\t\t// deprecated\n\t\t\tnull: (builder, value) => value ? builder.isNull(columnIdentifier) : builder.not(clause => clause.isNull(columnIdentifier)),\n\t\t}\n\n\t\treturn handler[entries[0][0]](builder, entries[0][1])\n\t}\n}\n"],"names":["UserError","builder","builder2","Operator"],"mappings":"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"}
1
+ {"version":3,"file":"ConditionBuilder.cjs","sources":["../../../../../../packages/engine-content-api/src/mapper/select/ConditionBuilder.ts"],"sourcesContent":["import { Input, Model } from '@contember/schema'\nimport { QueryBuilder, ConditionBuilder as SqlConditionBuilder, Operator, Literal, formatColumnIdentifier, Compiler } from '@contember/database'\nimport { UserError } from '../../exception'\n\nexport class ConditionBuilder {\n\tpublic build(\n\t\tbuilder: SqlConditionBuilder,\n\t\ttableName: string,\n\t\tcolumnName: string,\n\t\tcolumnType: Pick<Model.AnyColumn, 'type' | 'list' | 'columnType'>,\n\t\tcondition: Input.Condition<any> | null,\n\t): SqlConditionBuilder {\n\t\tif (condition === null) {\n\t\t\treturn builder\n\t\t}\n\t\tconst entries = Object.entries(condition)\n\t\t\t.filter(<T extends keyof Input.Condition>(it: [string, any]): it is [T, Input.Condition[T]] =>\n\t\t\t\tit[1] !== null,\n\t\t\t)\n\t\tif (entries.length === 0) {\n\t\t\treturn builder\n\t\t}\n\t\tif (entries.length > 1) {\n\t\t\tthrow new UserError(\n\t\t\t\t'Only single field is allowed. If you want to combine multiple conditions, use \"and\" or \"or\". Got: ' +\n\t\t\t\t\tJSON.stringify(condition),\n\t\t\t)\n\t\t}\n\t\tconst columnIdentifier: QueryBuilder.ColumnIdentifier = [tableName, columnName]\n\n\t\tconst handler: {\n\t\t\t[K in keyof Required<Input.Condition<any>>]: (\n\t\t\t\tbuilder: SqlConditionBuilder,\n\t\t\t\tparam: Exclude<Input.Condition<any>[K], undefined>,\n\t\t\t) => SqlConditionBuilder\n\t\t} = {\n\t\t\tand: (builder, expressions) => builder.and(builder2 => expressions.reduce((builder3, expr) => this.build(builder3, tableName, columnName, columnType, expr), builder2)),\n\t\t\tor: (builder, expressions) => builder.or(builder2 => expressions.reduce((builder3, expr) => this.build(builder3, tableName, columnName, columnType, expr), builder2)),\n\t\t\tnot: (builder, expression) => builder.not(builder2 => this.build(builder2, tableName, columnName, columnType, expression)),\n\n\t\t\tisNull: (builder, value) => value ? builder.isNull(columnIdentifier) : builder.not(clause => clause.isNull(columnIdentifier)),\n\n\t\t\teq: (builder, value) => builder.compare(columnIdentifier, Operator.eq, value),\n\t\t\tnotEq: (builder, value) => builder.compare(columnIdentifier, Operator.notEq, value),\n\t\t\tin: (builder, values) => builder.in(columnIdentifier, values, columnType.columnType),\n\t\t\tnotIn: (builder, values) => builder.not(builder2 => builder2.in(columnIdentifier, values)),\n\t\t\tlt: (builder, value) => builder.compare(columnIdentifier, Operator.lt, value),\n\t\t\tlte: (builder, value) => builder.compare(columnIdentifier, Operator.lte, value),\n\t\t\tgt: (builder, value) => builder.compare(columnIdentifier, Operator.gt, value),\n\t\t\tgte: (builder, value) => builder.compare(columnIdentifier, Operator.gte, value),\n\n\t\t\tincludes: (builder, value) => {\n\t\t\t\tconst cast = columnType.type === Model.ColumnType.Enum\n\t\t\t\t\t? `${Compiler.SCHEMA_PLACEHOLDER}.\"${columnType.columnType}\"`\n\t\t\t\t\t: columnType.columnType\n\n\t\t\t\treturn builder.raw(`${formatColumnIdentifier(columnIdentifier)} @> ARRAY[?]::${cast}[]`, value)\n\t\t\t},\n\t\t\tmaxLength: (builder, value) => builder.raw(`array_length(${formatColumnIdentifier(columnIdentifier)}, 1) <= ?`, value),\n\t\t\tminLength: (builder, value) => builder.raw(`array_length(${formatColumnIdentifier(columnIdentifier)}, 1) >= ?`, value),\n\n\t\t\tcontains: (builder, value) => builder.compare(columnIdentifier, Operator.contains, value),\n\t\t\tstartsWith: (builder, value) => builder.compare(columnIdentifier, Operator.startsWith, value),\n\t\t\tendsWith: (builder, value) => builder.compare(columnIdentifier, Operator.endsWith, value),\n\t\t\tcontainsCI: (builder, value) => builder.compare(columnIdentifier, Operator.containsCI, value),\n\t\t\tstartsWithCI: (builder, value) => builder.compare(columnIdentifier, Operator.startsWithCI, value),\n\t\t\tendsWithCI: (builder, value) => builder.compare(columnIdentifier, Operator.endsWithCI, value),\n\n\t\t\tnever: builder => builder.raw('false'),\n\t\t\talways: builder => builder.raw('true'),\n\n\t\t\t// deprecated\n\t\t\tnull: (builder, value) => value ? builder.isNull(columnIdentifier) : builder.not(clause => clause.isNull(columnIdentifier)),\n\t\t}\n\n\t\treturn handler[entries[0][0]](builder, entries[0][1])\n\t}\n}\n"],"names":["UserError","builder","builder2","Operator","Model","Compiler","formatColumnIdentifier"],"mappings":";;;;;AAIO,MAAM,iBAAiB;AAAA,EACtB,MACN,SACA,WACA,YACA,YACA,WACsB;AACtB,QAAI,cAAc,MAAM;AAChB,aAAA;AAAA,IAAA;AAER,UAAM,UAAU,OAAO,QAAQ,SAAS,EACtC;AAAA,MAAO,CAAkC,OACzC,GAAG,CAAC,MAAM;AAAA,IACX;AACG,QAAA,QAAQ,WAAW,GAAG;AAClB,aAAA;AAAA,IAAA;AAEJ,QAAA,QAAQ,SAAS,GAAG;AACvB,YAAM,IAAIA,UAAA;AAAA,QACT,uGACC,KAAK,UAAU,SAAS;AAAA,MAC1B;AAAA,IAAA;AAEK,UAAA,mBAAkD,CAAC,WAAW,UAAU;AAE9E,UAAM,UAKF;AAAA,MACH,KAAK,CAACC,UAAS,gBAAgBA,SAAQ,IAAI,CAAAC,cAAY,YAAY,OAAO,CAAC,UAAU,SAAS,KAAK,MAAM,UAAU,WAAW,YAAY,YAAY,IAAI,GAAGA,SAAQ,CAAC;AAAA,MACtK,IAAI,CAACD,UAAS,gBAAgBA,SAAQ,GAAG,CAAAC,cAAY,YAAY,OAAO,CAAC,UAAU,SAAS,KAAK,MAAM,UAAU,WAAW,YAAY,YAAY,IAAI,GAAGA,SAAQ,CAAC;AAAA,MACpK,KAAK,CAACD,UAAS,eAAeA,SAAQ,IAAI,CAAAC,cAAY,KAAK,MAAMA,WAAU,WAAW,YAAY,YAAY,UAAU,CAAC;AAAA,MAEzH,QAAQ,CAACD,UAAS,UAAU,QAAQA,SAAQ,OAAO,gBAAgB,IAAIA,SAAQ,IAAI,CAAA,WAAU,OAAO,OAAO,gBAAgB,CAAC;AAAA,MAE5H,IAAI,CAACA,UAAS,UAAUA,SAAQ,QAAQ,kBAAkBE,SAAAA,SAAS,IAAI,KAAK;AAAA,MAC5E,OAAO,CAACF,UAAS,UAAUA,SAAQ,QAAQ,kBAAkBE,SAAAA,SAAS,OAAO,KAAK;AAAA,MAClF,IAAI,CAACF,UAAS,WAAWA,SAAQ,GAAG,kBAAkB,QAAQ,WAAW,UAAU;AAAA,MACnF,OAAO,CAACA,UAAS,WAAWA,SAAQ,IAAI,CAAAC,cAAYA,UAAS,GAAG,kBAAkB,MAAM,CAAC;AAAA,MACzF,IAAI,CAACD,UAAS,UAAUA,SAAQ,QAAQ,kBAAkBE,SAAAA,SAAS,IAAI,KAAK;AAAA,MAC5E,KAAK,CAACF,UAAS,UAAUA,SAAQ,QAAQ,kBAAkBE,SAAAA,SAAS,KAAK,KAAK;AAAA,MAC9E,IAAI,CAACF,UAAS,UAAUA,SAAQ,QAAQ,kBAAkBE,SAAAA,SAAS,IAAI,KAAK;AAAA,MAC5E,KAAK,CAACF,UAAS,UAAUA,SAAQ,QAAQ,kBAAkBE,SAAAA,SAAS,KAAK,KAAK;AAAA,MAE9E,UAAU,CAACF,UAAS,UAAU;AAC7B,cAAM,OAAO,WAAW,SAASG,OAAAA,MAAM,WAAW,OAC/C,GAAGC,SAAA,SAAS,kBAAkB,KAAK,WAAW,UAAU,MACxD,WAAW;AAEPJ,eAAAA,SAAQ,IAAI,GAAGK,gCAAuB,gBAAgB,CAAC,iBAAiB,IAAI,MAAM,KAAK;AAAA,MAC/F;AAAA,MACA,WAAW,CAACL,UAAS,UAAUA,SAAQ,IAAI,gBAAgBK,SAAuB,uBAAA,gBAAgB,CAAC,aAAa,KAAK;AAAA,MACrH,WAAW,CAACL,UAAS,UAAUA,SAAQ,IAAI,gBAAgBK,SAAuB,uBAAA,gBAAgB,CAAC,aAAa,KAAK;AAAA,MAErH,UAAU,CAACL,UAAS,UAAUA,SAAQ,QAAQ,kBAAkBE,SAAAA,SAAS,UAAU,KAAK;AAAA,MACxF,YAAY,CAACF,UAAS,UAAUA,SAAQ,QAAQ,kBAAkBE,SAAAA,SAAS,YAAY,KAAK;AAAA,MAC5F,UAAU,CAACF,UAAS,UAAUA,SAAQ,QAAQ,kBAAkBE,SAAAA,SAAS,UAAU,KAAK;AAAA,MACxF,YAAY,CAACF,UAAS,UAAUA,SAAQ,QAAQ,kBAAkBE,SAAAA,SAAS,YAAY,KAAK;AAAA,MAC5F,cAAc,CAACF,UAAS,UAAUA,SAAQ,QAAQ,kBAAkBE,SAAAA,SAAS,cAAc,KAAK;AAAA,MAChG,YAAY,CAACF,UAAS,UAAUA,SAAQ,QAAQ,kBAAkBE,SAAAA,SAAS,YAAY,KAAK;AAAA,MAE5F,OAAO,CAAAF,aAAWA,SAAQ,IAAI,OAAO;AAAA,MACrC,QAAQ,CAAAA,aAAWA,SAAQ,IAAI,MAAM;AAAA;AAAA,MAGrC,MAAM,CAACA,UAAS,UAAU,QAAQA,SAAQ,OAAO,gBAAgB,IAAIA,SAAQ,IAAI,CAAA,WAAU,OAAO,OAAO,gBAAgB,CAAC;AAAA,IAC3H;AAEA,WAAO,QAAQ,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,QAAQ,CAAC,EAAE,CAAC,CAAC;AAAA,EAAA;AAEtD;;"}
@@ -1,4 +1,5 @@
1
- import { Operator } from "@contember/database";
1
+ import { Model } from "@contember/schema";
2
+ import { Operator, Compiler, formatColumnIdentifier } from "@contember/database";
2
3
  import { UserError } from "../../exception.js";
3
4
  class ConditionBuilder {
4
5
  build(builder, tableName, columnName, columnType, condition) {
@@ -21,15 +22,21 @@ class ConditionBuilder {
21
22
  and: (builder2, expressions) => builder2.and((builder22) => expressions.reduce((builder3, expr) => this.build(builder3, tableName, columnName, columnType, expr), builder22)),
22
23
  or: (builder2, expressions) => builder2.or((builder22) => expressions.reduce((builder3, expr) => this.build(builder3, tableName, columnName, columnType, expr), builder22)),
23
24
  not: (builder2, expression) => builder2.not((builder22) => this.build(builder22, tableName, columnName, columnType, expression)),
25
+ isNull: (builder2, value) => value ? builder2.isNull(columnIdentifier) : builder2.not((clause) => clause.isNull(columnIdentifier)),
24
26
  eq: (builder2, value) => builder2.compare(columnIdentifier, Operator.eq, value),
25
27
  notEq: (builder2, value) => builder2.compare(columnIdentifier, Operator.notEq, value),
26
- isNull: (builder2, value) => value ? builder2.isNull(columnIdentifier) : builder2.not((clause) => clause.isNull(columnIdentifier)),
27
- in: (builder2, values) => builder2.in(columnIdentifier, values, columnType),
28
+ in: (builder2, values) => builder2.in(columnIdentifier, values, columnType.columnType),
28
29
  notIn: (builder2, values) => builder2.not((builder22) => builder22.in(columnIdentifier, values)),
29
30
  lt: (builder2, value) => builder2.compare(columnIdentifier, Operator.lt, value),
30
31
  lte: (builder2, value) => builder2.compare(columnIdentifier, Operator.lte, value),
31
32
  gt: (builder2, value) => builder2.compare(columnIdentifier, Operator.gt, value),
32
33
  gte: (builder2, value) => builder2.compare(columnIdentifier, Operator.gte, value),
34
+ includes: (builder2, value) => {
35
+ const cast = columnType.type === Model.ColumnType.Enum ? `${Compiler.SCHEMA_PLACEHOLDER}."${columnType.columnType}"` : columnType.columnType;
36
+ return builder2.raw(`${formatColumnIdentifier(columnIdentifier)} @> ARRAY[?]::${cast}[]`, value);
37
+ },
38
+ maxLength: (builder2, value) => builder2.raw(`array_length(${formatColumnIdentifier(columnIdentifier)}, 1) <= ?`, value),
39
+ minLength: (builder2, value) => builder2.raw(`array_length(${formatColumnIdentifier(columnIdentifier)}, 1) >= ?`, value),
33
40
  contains: (builder2, value) => builder2.compare(columnIdentifier, Operator.contains, value),
34
41
  startsWith: (builder2, value) => builder2.compare(columnIdentifier, Operator.startsWith, value),
35
42
  endsWith: (builder2, value) => builder2.compare(columnIdentifier, Operator.endsWith, value),