@contember/engine-content-api 2.0.0-alpha.36 → 2.0.0-alpha.37
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/development/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.cjs +31 -6
- package/dist/development/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.cjs.map +1 -1
- package/dist/development/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.js +31 -6
- package/dist/development/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.js.map +1 -1
- package/dist/development/src/input-validation/ColumnValueResolver.cjs.map +1 -1
- package/dist/development/src/input-validation/ColumnValueResolver.js.map +1 -1
- package/dist/development/src/input-validation/preValidation/CreateInputPreValidationProcessor.cjs.map +1 -1
- package/dist/development/src/input-validation/preValidation/CreateInputPreValidationProcessor.js.map +1 -1
- package/dist/development/src/input-validation/preValidation/InputPreValidator.cjs.map +1 -1
- package/dist/development/src/input-validation/preValidation/InputPreValidator.js.map +1 -1
- package/dist/development/src/input-validation/preValidation/UpdateInputPreValidationProcessor.cjs.map +1 -1
- package/dist/development/src/input-validation/preValidation/UpdateInputPreValidationProcessor.js.map +1 -1
- package/dist/development/src/inputProcessing/CreateInputVisitor.cjs +6 -7
- package/dist/development/src/inputProcessing/CreateInputVisitor.cjs.map +1 -1
- package/dist/development/src/inputProcessing/CreateInputVisitor.js +6 -7
- package/dist/development/src/inputProcessing/CreateInputVisitor.js.map +1 -1
- package/dist/development/src/inputProcessing/UpdateInputVisitor.cjs +14 -15
- package/dist/development/src/inputProcessing/UpdateInputVisitor.cjs.map +1 -1
- package/dist/development/src/inputProcessing/UpdateInputVisitor.js +14 -15
- package/dist/development/src/inputProcessing/UpdateInputVisitor.js.map +1 -1
- package/dist/development/src/mapper/ColumnValue.cjs +8 -18
- package/dist/development/src/mapper/ColumnValue.cjs.map +1 -1
- package/dist/development/src/mapper/ColumnValue.js +8 -18
- package/dist/development/src/mapper/ColumnValue.js.map +1 -1
- package/dist/development/src/mapper/EventManager.cjs +1 -1
- package/dist/development/src/mapper/EventManager.cjs.map +1 -1
- package/dist/development/src/mapper/EventManager.js +1 -1
- package/dist/development/src/mapper/EventManager.js.map +1 -1
- package/dist/development/src/mapper/Mapper.cjs +8 -28
- package/dist/development/src/mapper/Mapper.cjs.map +1 -1
- package/dist/development/src/mapper/Mapper.js +8 -28
- package/dist/development/src/mapper/Mapper.js.map +1 -1
- package/dist/development/src/mapper/Result.cjs.map +1 -1
- package/dist/development/src/mapper/Result.js.map +1 -1
- package/dist/development/src/mapper/delete/DeleteExecutor.cjs +4 -8
- package/dist/development/src/mapper/delete/DeleteExecutor.cjs.map +1 -1
- package/dist/development/src/mapper/delete/DeleteExecutor.js +5 -9
- package/dist/development/src/mapper/delete/DeleteExecutor.js.map +1 -1
- package/dist/development/src/mapper/insert/InsertBuilder.cjs +12 -8
- package/dist/development/src/mapper/insert/InsertBuilder.cjs.map +1 -1
- package/dist/development/src/mapper/insert/InsertBuilder.js +13 -9
- package/dist/development/src/mapper/insert/InsertBuilder.js.map +1 -1
- package/dist/development/src/mapper/insert/Inserter.cjs.map +1 -1
- package/dist/development/src/mapper/insert/Inserter.js.map +1 -1
- package/dist/development/src/mapper/insert/SqlCreateInputProcessor.cjs +1 -3
- package/dist/development/src/mapper/insert/SqlCreateInputProcessor.cjs.map +1 -1
- package/dist/development/src/mapper/insert/SqlCreateInputProcessor.js +1 -3
- package/dist/development/src/mapper/insert/SqlCreateInputProcessor.js.map +1 -1
- package/dist/development/src/mapper/insert/relations/ManyHasManyCreateInputProcessor.cjs +3 -5
- package/dist/development/src/mapper/insert/relations/ManyHasManyCreateInputProcessor.cjs.map +1 -1
- package/dist/development/src/mapper/insert/relations/ManyHasManyCreateInputProcessor.js +4 -6
- package/dist/development/src/mapper/insert/relations/ManyHasManyCreateInputProcessor.js.map +1 -1
- package/dist/development/src/mapper/insert/relations/ManyHasOneCreateInputProcessor.cjs +3 -5
- package/dist/development/src/mapper/insert/relations/ManyHasOneCreateInputProcessor.cjs.map +1 -1
- package/dist/development/src/mapper/insert/relations/ManyHasOneCreateInputProcessor.js +4 -6
- package/dist/development/src/mapper/insert/relations/ManyHasOneCreateInputProcessor.js.map +1 -1
- package/dist/development/src/mapper/insert/relations/OneHasManyCreateInputProcessor.cjs +4 -3
- package/dist/development/src/mapper/insert/relations/OneHasManyCreateInputProcessor.cjs.map +1 -1
- package/dist/development/src/mapper/insert/relations/OneHasManyCreateInputProcessor.js +4 -3
- package/dist/development/src/mapper/insert/relations/OneHasManyCreateInputProcessor.js.map +1 -1
- package/dist/development/src/mapper/insert/relations/OneHasOneInverseCreateInputProcessor.cjs +3 -5
- package/dist/development/src/mapper/insert/relations/OneHasOneInverseCreateInputProcessor.cjs.map +1 -1
- package/dist/development/src/mapper/insert/relations/OneHasOneInverseCreateInputProcessor.js +4 -6
- package/dist/development/src/mapper/insert/relations/OneHasOneInverseCreateInputProcessor.js.map +1 -1
- package/dist/development/src/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.cjs +4 -6
- package/dist/development/src/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.cjs.map +1 -1
- package/dist/development/src/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.js +5 -7
- package/dist/development/src/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.js.map +1 -1
- package/dist/development/src/mapper/update/SqlUpdateInputProcessor.cjs.map +1 -1
- package/dist/development/src/mapper/update/SqlUpdateInputProcessor.js.map +1 -1
- package/dist/development/src/mapper/update/UpdateBuilder.cjs +12 -5
- package/dist/development/src/mapper/update/UpdateBuilder.cjs.map +1 -1
- package/dist/development/src/mapper/update/UpdateBuilder.js +13 -6
- package/dist/development/src/mapper/update/UpdateBuilder.js.map +1 -1
- package/dist/development/src/mapper/update/Updater.cjs.map +1 -1
- package/dist/development/src/mapper/update/Updater.js.map +1 -1
- package/dist/development/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.cjs +11 -16
- package/dist/development/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.cjs.map +1 -1
- package/dist/development/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.js +12 -17
- package/dist/development/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.js.map +1 -1
- package/dist/development/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.cjs +6 -7
- package/dist/development/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.cjs.map +1 -1
- package/dist/development/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.js +7 -8
- package/dist/development/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.js.map +1 -1
- package/dist/development/src/mapper/update/relations/OneHasManyUpdateInputProcessor.cjs +5 -4
- package/dist/development/src/mapper/update/relations/OneHasManyUpdateInputProcessor.cjs.map +1 -1
- package/dist/development/src/mapper/update/relations/OneHasManyUpdateInputProcessor.js +5 -4
- package/dist/development/src/mapper/update/relations/OneHasManyUpdateInputProcessor.js.map +1 -1
- package/dist/development/src/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.cjs +11 -12
- package/dist/development/src/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.cjs.map +1 -1
- package/dist/development/src/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.js +12 -13
- package/dist/development/src/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.js.map +1 -1
- package/dist/development/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.cjs +8 -12
- package/dist/development/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.cjs.map +1 -1
- package/dist/development/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.js +9 -13
- package/dist/development/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.js.map +1 -1
- package/dist/production/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.cjs +31 -6
- package/dist/production/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.cjs.map +1 -1
- package/dist/production/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.js +31 -6
- package/dist/production/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.js.map +1 -1
- package/dist/production/src/input-validation/ColumnValueResolver.cjs.map +1 -1
- package/dist/production/src/input-validation/ColumnValueResolver.js.map +1 -1
- package/dist/production/src/input-validation/preValidation/CreateInputPreValidationProcessor.cjs.map +1 -1
- package/dist/production/src/input-validation/preValidation/CreateInputPreValidationProcessor.js.map +1 -1
- package/dist/production/src/input-validation/preValidation/InputPreValidator.cjs.map +1 -1
- package/dist/production/src/input-validation/preValidation/InputPreValidator.js.map +1 -1
- package/dist/production/src/input-validation/preValidation/UpdateInputPreValidationProcessor.cjs.map +1 -1
- package/dist/production/src/input-validation/preValidation/UpdateInputPreValidationProcessor.js.map +1 -1
- package/dist/production/src/inputProcessing/CreateInputVisitor.cjs +6 -7
- package/dist/production/src/inputProcessing/CreateInputVisitor.cjs.map +1 -1
- package/dist/production/src/inputProcessing/CreateInputVisitor.js +6 -7
- package/dist/production/src/inputProcessing/CreateInputVisitor.js.map +1 -1
- package/dist/production/src/inputProcessing/UpdateInputVisitor.cjs +14 -15
- package/dist/production/src/inputProcessing/UpdateInputVisitor.cjs.map +1 -1
- package/dist/production/src/inputProcessing/UpdateInputVisitor.js +14 -15
- package/dist/production/src/inputProcessing/UpdateInputVisitor.js.map +1 -1
- package/dist/production/src/mapper/ColumnValue.cjs +8 -18
- package/dist/production/src/mapper/ColumnValue.cjs.map +1 -1
- package/dist/production/src/mapper/ColumnValue.js +8 -18
- package/dist/production/src/mapper/ColumnValue.js.map +1 -1
- package/dist/production/src/mapper/EventManager.cjs +1 -1
- package/dist/production/src/mapper/EventManager.cjs.map +1 -1
- package/dist/production/src/mapper/EventManager.js +1 -1
- package/dist/production/src/mapper/EventManager.js.map +1 -1
- package/dist/production/src/mapper/Mapper.cjs +8 -28
- package/dist/production/src/mapper/Mapper.cjs.map +1 -1
- package/dist/production/src/mapper/Mapper.js +8 -28
- package/dist/production/src/mapper/Mapper.js.map +1 -1
- package/dist/production/src/mapper/Result.cjs.map +1 -1
- package/dist/production/src/mapper/Result.js.map +1 -1
- package/dist/production/src/mapper/delete/DeleteExecutor.cjs +4 -8
- package/dist/production/src/mapper/delete/DeleteExecutor.cjs.map +1 -1
- package/dist/production/src/mapper/delete/DeleteExecutor.js +5 -9
- package/dist/production/src/mapper/delete/DeleteExecutor.js.map +1 -1
- package/dist/production/src/mapper/insert/InsertBuilder.cjs +12 -8
- package/dist/production/src/mapper/insert/InsertBuilder.cjs.map +1 -1
- package/dist/production/src/mapper/insert/InsertBuilder.js +13 -9
- package/dist/production/src/mapper/insert/InsertBuilder.js.map +1 -1
- package/dist/production/src/mapper/insert/Inserter.cjs.map +1 -1
- package/dist/production/src/mapper/insert/Inserter.js.map +1 -1
- package/dist/production/src/mapper/insert/SqlCreateInputProcessor.cjs +1 -3
- package/dist/production/src/mapper/insert/SqlCreateInputProcessor.cjs.map +1 -1
- package/dist/production/src/mapper/insert/SqlCreateInputProcessor.js +1 -3
- package/dist/production/src/mapper/insert/SqlCreateInputProcessor.js.map +1 -1
- package/dist/production/src/mapper/insert/relations/ManyHasManyCreateInputProcessor.cjs +3 -5
- package/dist/production/src/mapper/insert/relations/ManyHasManyCreateInputProcessor.cjs.map +1 -1
- package/dist/production/src/mapper/insert/relations/ManyHasManyCreateInputProcessor.js +4 -6
- package/dist/production/src/mapper/insert/relations/ManyHasManyCreateInputProcessor.js.map +1 -1
- package/dist/production/src/mapper/insert/relations/ManyHasOneCreateInputProcessor.cjs +3 -5
- package/dist/production/src/mapper/insert/relations/ManyHasOneCreateInputProcessor.cjs.map +1 -1
- package/dist/production/src/mapper/insert/relations/ManyHasOneCreateInputProcessor.js +4 -6
- package/dist/production/src/mapper/insert/relations/ManyHasOneCreateInputProcessor.js.map +1 -1
- package/dist/production/src/mapper/insert/relations/OneHasManyCreateInputProcessor.cjs +4 -3
- package/dist/production/src/mapper/insert/relations/OneHasManyCreateInputProcessor.cjs.map +1 -1
- package/dist/production/src/mapper/insert/relations/OneHasManyCreateInputProcessor.js +4 -3
- package/dist/production/src/mapper/insert/relations/OneHasManyCreateInputProcessor.js.map +1 -1
- package/dist/production/src/mapper/insert/relations/OneHasOneInverseCreateInputProcessor.cjs +3 -5
- package/dist/production/src/mapper/insert/relations/OneHasOneInverseCreateInputProcessor.cjs.map +1 -1
- package/dist/production/src/mapper/insert/relations/OneHasOneInverseCreateInputProcessor.js +4 -6
- package/dist/production/src/mapper/insert/relations/OneHasOneInverseCreateInputProcessor.js.map +1 -1
- package/dist/production/src/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.cjs +4 -6
- package/dist/production/src/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.cjs.map +1 -1
- package/dist/production/src/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.js +5 -7
- package/dist/production/src/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.js.map +1 -1
- package/dist/production/src/mapper/update/SqlUpdateInputProcessor.cjs.map +1 -1
- package/dist/production/src/mapper/update/SqlUpdateInputProcessor.js.map +1 -1
- package/dist/production/src/mapper/update/UpdateBuilder.cjs +12 -5
- package/dist/production/src/mapper/update/UpdateBuilder.cjs.map +1 -1
- package/dist/production/src/mapper/update/UpdateBuilder.js +13 -6
- package/dist/production/src/mapper/update/UpdateBuilder.js.map +1 -1
- package/dist/production/src/mapper/update/Updater.cjs.map +1 -1
- package/dist/production/src/mapper/update/Updater.js.map +1 -1
- package/dist/production/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.cjs +11 -16
- package/dist/production/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.cjs.map +1 -1
- package/dist/production/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.js +12 -17
- package/dist/production/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.js.map +1 -1
- package/dist/production/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.cjs +6 -7
- package/dist/production/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.cjs.map +1 -1
- package/dist/production/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.js +7 -8
- package/dist/production/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.js.map +1 -1
- package/dist/production/src/mapper/update/relations/OneHasManyUpdateInputProcessor.cjs +5 -4
- package/dist/production/src/mapper/update/relations/OneHasManyUpdateInputProcessor.cjs.map +1 -1
- package/dist/production/src/mapper/update/relations/OneHasManyUpdateInputProcessor.js +5 -4
- package/dist/production/src/mapper/update/relations/OneHasManyUpdateInputProcessor.js.map +1 -1
- package/dist/production/src/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.cjs +11 -12
- package/dist/production/src/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.cjs.map +1 -1
- package/dist/production/src/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.js +12 -13
- package/dist/production/src/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.js.map +1 -1
- package/dist/production/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.cjs +8 -12
- package/dist/production/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.cjs.map +1 -1
- package/dist/production/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.js +9 -13
- package/dist/production/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/insert/jsonInsert.test.d.ts +2 -0
- package/dist/tests/cases/integration/graphQlRequests/insert/jsonInsert.test.d.ts.map +1 -0
- package/dist/tests/tsconfig.tsbuildinfo +1 -1
- package/dist/types/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.d.ts.map +1 -1
- package/dist/types/input-validation/ColumnValueResolver.d.ts +1 -1
- package/dist/types/input-validation/ColumnValueResolver.d.ts.map +1 -1
- package/dist/types/input-validation/ValidationDataSelector.d.ts +1 -1
- package/dist/types/input-validation/preValidation/CreateInputPreValidationProcessor.d.ts +3 -3
- package/dist/types/input-validation/preValidation/CreateInputPreValidationProcessor.d.ts.map +1 -1
- package/dist/types/input-validation/preValidation/InputPreValidator.d.ts +3 -3
- package/dist/types/input-validation/preValidation/InputPreValidator.d.ts.map +1 -1
- package/dist/types/input-validation/preValidation/UpdateInputPreValidationProcessor.d.ts +4 -4
- package/dist/types/input-validation/preValidation/UpdateInputPreValidationProcessor.d.ts.map +1 -1
- package/dist/types/inputProcessing/CreateInputProcessor.d.ts +8 -6
- package/dist/types/inputProcessing/CreateInputProcessor.d.ts.map +1 -1
- package/dist/types/inputProcessing/CreateInputVisitor.d.ts +3 -2
- package/dist/types/inputProcessing/CreateInputVisitor.d.ts.map +1 -1
- package/dist/types/inputProcessing/UpdateInputProcessor.d.ts +14 -12
- package/dist/types/inputProcessing/UpdateInputProcessor.d.ts.map +1 -1
- package/dist/types/inputProcessing/UpdateInputVisitor.d.ts +3 -2
- package/dist/types/inputProcessing/UpdateInputVisitor.d.ts.map +1 -1
- package/dist/types/mapper/ColumnValue.d.ts +4 -8
- package/dist/types/mapper/ColumnValue.d.ts.map +1 -1
- package/dist/types/mapper/EventManager.d.ts +9 -9
- package/dist/types/mapper/EventManager.d.ts.map +1 -1
- package/dist/types/mapper/Mapper.d.ts +6 -7
- package/dist/types/mapper/Mapper.d.ts.map +1 -1
- package/dist/types/mapper/Result.d.ts +5 -4
- package/dist/types/mapper/Result.d.ts.map +1 -1
- package/dist/types/mapper/delete/DeleteExecutor.d.ts.map +1 -1
- package/dist/types/mapper/insert/InsertBuilder.d.ts +3 -4
- package/dist/types/mapper/insert/InsertBuilder.d.ts.map +1 -1
- package/dist/types/mapper/insert/Inserter.d.ts +3 -2
- package/dist/types/mapper/insert/Inserter.d.ts.map +1 -1
- package/dist/types/mapper/insert/SqlCreateInputProcessor.d.ts.map +1 -1
- package/dist/types/mapper/insert/relations/ManyHasManyCreateInputProcessor.d.ts +5 -3
- package/dist/types/mapper/insert/relations/ManyHasManyCreateInputProcessor.d.ts.map +1 -1
- package/dist/types/mapper/insert/relations/ManyHasOneCreateInputProcessor.d.ts +5 -3
- package/dist/types/mapper/insert/relations/ManyHasOneCreateInputProcessor.d.ts.map +1 -1
- package/dist/types/mapper/insert/relations/OneHasManyCreateInputProcessor.d.ts +5 -3
- package/dist/types/mapper/insert/relations/OneHasManyCreateInputProcessor.d.ts.map +1 -1
- package/dist/types/mapper/insert/relations/OneHasOneInverseCreateInputProcessor.d.ts +5 -3
- package/dist/types/mapper/insert/relations/OneHasOneInverseCreateInputProcessor.d.ts.map +1 -1
- package/dist/types/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.d.ts +5 -3
- package/dist/types/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.d.ts.map +1 -1
- package/dist/types/mapper/types.d.ts +84 -1
- package/dist/types/mapper/types.d.ts.map +1 -1
- package/dist/types/mapper/update/SqlUpdateInputProcessor.d.ts +2 -1
- package/dist/types/mapper/update/SqlUpdateInputProcessor.d.ts.map +1 -1
- package/dist/types/mapper/update/UpdateBuilder.d.ts +3 -3
- package/dist/types/mapper/update/UpdateBuilder.d.ts.map +1 -1
- package/dist/types/mapper/update/Updater.d.ts +2 -1
- package/dist/types/mapper/update/Updater.d.ts.map +1 -1
- package/dist/types/mapper/update/relations/ManyHasManyUpdateInputProcessor.d.ts +5 -3
- package/dist/types/mapper/update/relations/ManyHasManyUpdateInputProcessor.d.ts.map +1 -1
- package/dist/types/mapper/update/relations/ManyHasOneUpdateInputProcessor.d.ts +6 -4
- package/dist/types/mapper/update/relations/ManyHasOneUpdateInputProcessor.d.ts.map +1 -1
- package/dist/types/mapper/update/relations/OneHasManyUpdateInputProcessor.d.ts +5 -3
- package/dist/types/mapper/update/relations/OneHasManyUpdateInputProcessor.d.ts.map +1 -1
- package/dist/types/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.d.ts +6 -4
- package/dist/types/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.d.ts.map +1 -1
- package/dist/types/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.d.ts +6 -4
- package/dist/types/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +10 -10
- package/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.ts +35 -2
- package/src/input-validation/ColumnValueResolver.ts +1 -1
- package/src/input-validation/preValidation/CreateInputPreValidationProcessor.ts +2 -2
- package/src/input-validation/preValidation/InputPreValidator.ts +7 -7
- package/src/input-validation/preValidation/UpdateInputPreValidationProcessor.ts +3 -3
- package/src/inputProcessing/CreateInputProcessor.ts +8 -6
- package/src/inputProcessing/CreateInputVisitor.ts +18 -19
- package/src/inputProcessing/UpdateInputProcessor.ts +13 -11
- package/src/inputProcessing/UpdateInputVisitor.ts +25 -24
- package/src/mapper/ColumnValue.ts +11 -25
- package/src/mapper/EventManager.ts +6 -6
- package/src/mapper/Mapper.ts +19 -37
- package/src/mapper/Result.ts +3 -2
- package/src/mapper/delete/DeleteExecutor.ts +4 -8
- package/src/mapper/insert/InsertBuilder.ts +20 -17
- package/src/mapper/insert/Inserter.ts +4 -3
- package/src/mapper/insert/SqlCreateInputProcessor.ts +1 -3
- package/src/mapper/insert/relations/ManyHasManyCreateInputProcessor.ts +8 -8
- package/src/mapper/insert/relations/ManyHasOneCreateInputProcessor.ts +8 -8
- package/src/mapper/insert/relations/OneHasManyCreateInputProcessor.ts +8 -6
- package/src/mapper/insert/relations/OneHasOneInverseCreateInputProcessor.ts +8 -9
- package/src/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.ts +9 -9
- package/src/mapper/types.ts +115 -1
- package/src/mapper/update/SqlUpdateInputProcessor.ts +2 -1
- package/src/mapper/update/UpdateBuilder.ts +20 -12
- package/src/mapper/update/Updater.ts +3 -2
- package/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.ts +15 -19
- package/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.ts +11 -11
- package/src/mapper/update/relations/OneHasManyUpdateInputProcessor.ts +9 -7
- package/src/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.ts +18 -18
- package/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.ts +14 -17
- package/tests/cases/integration/graphQlRequests/insert/jsonInsert.test.ts +37 -0
- package/tests/cases/integration/graphQlRequests/query/misc/reducedHasMany.test.ts +69 -0
- package/tests/cases/integration/graphQlRequests/update/manyHasOne/update.test.ts +0 -5
- package/tests/cases/integration/graphQlRequests/update/manyHasOne/upsert.test.ts +0 -5
- package/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/upsert.test.ts +9 -0
- package/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/update.test.ts +0 -5
- package/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/upsert.test.ts +0 -5
- package/tests/cases/integration/graphQlSchema/schema-acl-allowed.gql +5 -0
- package/tests/cases/integration/graphQlSchema/schema-acl-restricted-create.gql +5 -0
- package/tests/cases/integration/graphQlSchema/schema-acl-restricted-delete.gql +5 -0
- package/tests/cases/integration/graphQlSchema/schema-acl-restricted-update.gql +5 -0
- package/tests/cases/integration/graphQlSchema/schema-basic.gql +11 -0
- package/tests/cases/integration/graphQlSchema/schema-bug-66.gql +6 -0
- package/tests/cases/integration/graphQlSchema/schema-custom-primary.gql +11 -0
- package/tests/cases/integration/graphQlSchema/schema-has-many-reduction.gql +6 -0
- package/tests/cases/integration/graphQlSchema/schema-new-builder.gql +12 -0
- package/tests/cases/unit/inputPreValidator.test.ts +1 -1
- package/tests/src/testGraphql.ts +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Input, Model, Value } from '@contember/schema'
|
|
2
|
-
import { ResolvedColumnValue } from './ColumnValue'
|
|
3
2
|
import { Mapper } from './Mapper'
|
|
3
|
+
import { ColumnValue } from './ColumnValue'
|
|
4
4
|
|
|
5
5
|
export class BeforeInsertEvent {
|
|
6
6
|
public type = 'BeforeInsertEvent' as const
|
|
@@ -9,7 +9,7 @@ export class BeforeInsertEvent {
|
|
|
9
9
|
|
|
10
10
|
constructor(
|
|
11
11
|
public readonly entity: Model.Entity,
|
|
12
|
-
public readonly data:
|
|
12
|
+
public readonly data: ColumnValue[],
|
|
13
13
|
) {
|
|
14
14
|
}
|
|
15
15
|
}
|
|
@@ -19,7 +19,7 @@ export class AfterInsertEvent {
|
|
|
19
19
|
|
|
20
20
|
constructor(
|
|
21
21
|
public readonly entity: Model.Entity,
|
|
22
|
-
public readonly data:
|
|
22
|
+
public readonly data: ColumnValue[],
|
|
23
23
|
public readonly id: Input.PrimaryValue,
|
|
24
24
|
) {
|
|
25
25
|
}
|
|
@@ -33,7 +33,7 @@ export class BeforeUpdateEvent {
|
|
|
33
33
|
|
|
34
34
|
constructor(
|
|
35
35
|
public readonly entity: Model.Entity,
|
|
36
|
-
public readonly data:
|
|
36
|
+
public readonly data: ColumnValue[],
|
|
37
37
|
public readonly id: Input.PrimaryValue,
|
|
38
38
|
) {
|
|
39
39
|
}
|
|
@@ -46,13 +46,13 @@ export class AfterUpdateEvent {
|
|
|
46
46
|
|
|
47
47
|
constructor(
|
|
48
48
|
public readonly entity: Model.Entity,
|
|
49
|
-
public readonly data: (
|
|
49
|
+
public readonly data: (ColumnValue & { old: Value.FieldValue })[],
|
|
50
50
|
public readonly id: Input.PrimaryValue,
|
|
51
51
|
) {
|
|
52
52
|
}
|
|
53
53
|
get hasChanges() {
|
|
54
54
|
// todo: deep equals
|
|
55
|
-
return this._hasChanges = this.data.some(it => it.
|
|
55
|
+
return this._hasChanges = this.data.some(it => it.value !== it.old)
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
58
|
|
package/src/mapper/Mapper.ts
CHANGED
|
@@ -23,9 +23,9 @@ import { Mutex } from '../utils'
|
|
|
23
23
|
import { CheckedPrimary } from './CheckedPrimary'
|
|
24
24
|
import { ImplementationException } from '../exception'
|
|
25
25
|
import { EventManager } from './EventManager'
|
|
26
|
+
import { MapperInput } from './types'
|
|
26
27
|
|
|
27
28
|
export class Mapper<ConnectionType extends Connection.ConnectionLike = Connection.ConnectionLike> {
|
|
28
|
-
private primaryKeyCache: Record<string, Promise<string> | string> = {}
|
|
29
29
|
private systemVariablesSetupDone: Promise<void> | undefined
|
|
30
30
|
public readonly deletedEntities = new DeletedEntitiesStorage()
|
|
31
31
|
public readonly mutex = new Mutex()
|
|
@@ -175,7 +175,7 @@ export class Mapper<ConnectionType extends Connection.ConnectionLike = Connectio
|
|
|
175
175
|
|
|
176
176
|
public async insert(
|
|
177
177
|
entity: Model.Entity,
|
|
178
|
-
data:
|
|
178
|
+
data: MapperInput.CreateDataInput,
|
|
179
179
|
builderCb: (builder: InsertBuilder) => void = () => {},
|
|
180
180
|
): Promise<MutationResultList> {
|
|
181
181
|
if (entity.view) {
|
|
@@ -189,8 +189,8 @@ export class Mapper<ConnectionType extends Connection.ConnectionLike = Connectio
|
|
|
189
189
|
|
|
190
190
|
public async update(
|
|
191
191
|
entity: Model.Entity,
|
|
192
|
-
by: Input.UniqueWhere,
|
|
193
|
-
data:
|
|
192
|
+
by: Input.UniqueWhere | CheckedPrimary,
|
|
193
|
+
data: MapperInput.UpdateDataInput,
|
|
194
194
|
filter?: Input.OptionalWhere,
|
|
195
195
|
): Promise<MutationResultList> {
|
|
196
196
|
if (entity.view) {
|
|
@@ -198,10 +198,9 @@ export class Mapper<ConnectionType extends Connection.ConnectionLike = Connectio
|
|
|
198
198
|
}
|
|
199
199
|
await this.setupSystemVariables()
|
|
200
200
|
return tryMutation(this.schema, this.schemaDatabaseMetadata, async () => {
|
|
201
|
-
const primaryValue = await this.getPrimaryValue(entity, by)
|
|
202
|
-
if (
|
|
203
|
-
|
|
204
|
-
}
|
|
201
|
+
const [primaryValue, err] = await this.getPrimaryValue(entity, by)
|
|
202
|
+
if (err) return [err]
|
|
203
|
+
|
|
205
204
|
return await this.updater.update(this, entity, primaryValue, data, filter)
|
|
206
205
|
})
|
|
207
206
|
}
|
|
@@ -216,18 +215,17 @@ export class Mapper<ConnectionType extends Connection.ConnectionLike = Connectio
|
|
|
216
215
|
}
|
|
217
216
|
await this.setupSystemVariables()
|
|
218
217
|
return tryMutation(this.schema, this.schemaDatabaseMetadata, async () => {
|
|
219
|
-
const primaryValue = await this.getPrimaryValue(entity, by)
|
|
220
|
-
if (
|
|
221
|
-
|
|
222
|
-
}
|
|
218
|
+
const [primaryValue, err] = await this.getPrimaryValue(entity, by)
|
|
219
|
+
if (err) return [err]
|
|
220
|
+
|
|
223
221
|
return await this.updater.updateCb(this, entity, primaryValue, builderCb)
|
|
224
222
|
})
|
|
225
223
|
}
|
|
226
224
|
public async upsert(
|
|
227
225
|
entity: Model.Entity,
|
|
228
|
-
by: Input.UniqueWhere,
|
|
229
|
-
update:
|
|
230
|
-
create:
|
|
226
|
+
by: Input.UniqueWhere | CheckedPrimary,
|
|
227
|
+
update: MapperInput.UpdateDataInput,
|
|
228
|
+
create: MapperInput.CreateDataInput,
|
|
231
229
|
filter?: Input.OptionalWhere,
|
|
232
230
|
): Promise<MutationResultList> {
|
|
233
231
|
if (entity.view) {
|
|
@@ -235,7 +233,7 @@ export class Mapper<ConnectionType extends Connection.ConnectionLike = Connectio
|
|
|
235
233
|
}
|
|
236
234
|
await this.setupSystemVariables()
|
|
237
235
|
return tryMutation(this.schema, this.schemaDatabaseMetadata, async () => {
|
|
238
|
-
const primaryValue = await this.getPrimaryValue(entity, by)
|
|
236
|
+
const [primaryValue] = await this.getPrimaryValue(entity, by)
|
|
239
237
|
if (primaryValue === undefined) {
|
|
240
238
|
return await this.insertInternal(entity, create)
|
|
241
239
|
}
|
|
@@ -243,10 +241,8 @@ export class Mapper<ConnectionType extends Connection.ConnectionLike = Connectio
|
|
|
243
241
|
})
|
|
244
242
|
}
|
|
245
243
|
|
|
246
|
-
private insertInternal(entity: Model.Entity, data:
|
|
244
|
+
private insertInternal(entity: Model.Entity, data: MapperInput.CreateDataInput, builderCb: (builder: InsertBuilder) => void = () => {}) {
|
|
247
245
|
return this.inserter.insert(this, entity, data, id => {
|
|
248
|
-
const where = { [entity.primary]: id }
|
|
249
|
-
this.primaryKeyCache[this.hashWhere(entity.name, where)] = id
|
|
250
246
|
}, builderCb)
|
|
251
247
|
}
|
|
252
248
|
|
|
@@ -317,26 +313,12 @@ export class Mapper<ConnectionType extends Connection.ConnectionLike = Connectio
|
|
|
317
313
|
public async getPrimaryValue(
|
|
318
314
|
entity: Model.Entity,
|
|
319
315
|
where: Input.UniqueWhere | CheckedPrimary,
|
|
320
|
-
): Promise<Input.PrimaryValue | undefined> {
|
|
316
|
+
): Promise<[Input.PrimaryValue, undefined] | [undefined, MutationEntryNotFoundError]> {
|
|
321
317
|
if (where instanceof CheckedPrimary) {
|
|
322
|
-
return where.primaryValue
|
|
323
|
-
}
|
|
324
|
-
const hash = this.hashWhere(entity.name, where)
|
|
325
|
-
if (this.primaryKeyCache[hash]) {
|
|
326
|
-
return this.primaryKeyCache[hash]
|
|
318
|
+
return [where.primaryValue, undefined]
|
|
327
319
|
}
|
|
328
|
-
const
|
|
329
|
-
|
|
330
|
-
const primaryValue = await primaryPromise
|
|
331
|
-
const uniqueFields = Object.keys(where)
|
|
332
|
-
if (primaryValue && (uniqueFields.length !== 1 || uniqueFields[0] !== entity.primary)) {
|
|
333
|
-
this.primaryKeyCache[this.hashWhere(entity.name, { [entity.primary]: primaryValue })] = primaryValue
|
|
334
|
-
}
|
|
335
|
-
return primaryValue
|
|
336
|
-
}
|
|
337
|
-
|
|
338
|
-
private hashWhere(entityName: string, where: Input.UniqueWhere): string {
|
|
339
|
-
return JSON.stringify([entityName, where])
|
|
320
|
+
const result = await this.selectField(entity, where, entity.primary)
|
|
321
|
+
return result ? [result, undefined] : [undefined, new MutationEntryNotFoundError([], where)]
|
|
340
322
|
}
|
|
341
323
|
|
|
342
324
|
private async setupSystemVariables() {
|
package/src/mapper/Result.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Input, Model, Value } from '@contember/schema'
|
|
2
|
+
import { MapperInput } from './types'
|
|
2
3
|
|
|
3
4
|
export enum MutationResultType {
|
|
4
5
|
ok = 'ok',
|
|
@@ -59,7 +60,7 @@ export class MutationUpdateOk implements MutationResultInterface {
|
|
|
59
60
|
public readonly paths: Path[],
|
|
60
61
|
public readonly entity: Model.Entity,
|
|
61
62
|
public readonly primary: Value.PrimaryValue,
|
|
62
|
-
public readonly input:
|
|
63
|
+
public readonly input: MapperInput.UpdateDataInput,
|
|
63
64
|
public readonly values: RowValues,
|
|
64
65
|
public readonly oldValues?: RowValues,
|
|
65
66
|
) {}
|
|
@@ -75,7 +76,7 @@ export class MutationCreateOk implements MutationResultInterface {
|
|
|
75
76
|
public readonly paths: Path[],
|
|
76
77
|
public readonly entity: Model.Entity,
|
|
77
78
|
public readonly primary: Value.PrimaryValue,
|
|
78
|
-
public readonly input:
|
|
79
|
+
public readonly input: MapperInput.CreateDataInput,
|
|
79
80
|
public readonly values: RowValues,
|
|
80
81
|
) {}
|
|
81
82
|
}
|
|
@@ -50,10 +50,8 @@ export class DeleteExecutor {
|
|
|
50
50
|
filter?: Input.OptionalWhere,
|
|
51
51
|
): Promise<MutationResultList> {
|
|
52
52
|
return mapper.mutex.execute(async () => {
|
|
53
|
-
const primaryValue = await mapper.getPrimaryValue(entity, by)
|
|
54
|
-
if (
|
|
55
|
-
return [new MutationEntryNotFoundError([], by as Input.UniqueWhere)]
|
|
56
|
-
}
|
|
53
|
+
const [primaryValue, err] = await mapper.getPrimaryValue(entity, by)
|
|
54
|
+
if (err) return [err]
|
|
57
55
|
|
|
58
56
|
if (mapper.deletedEntities.isDeleted(entity.name, primaryValue)) {
|
|
59
57
|
return [new MutationNothingToDo([], NothingToDoReason.alreadyDeleted)]
|
|
@@ -79,8 +77,7 @@ export class DeleteExecutor {
|
|
|
79
77
|
columnName: Object.keys(entry.values)[0],
|
|
80
78
|
fieldName: Object.keys(entry.input)[0],
|
|
81
79
|
columnType: 'text',
|
|
82
|
-
|
|
83
|
-
value: Promise.resolve(null),
|
|
80
|
+
value: null,
|
|
84
81
|
}], entry.primary)
|
|
85
82
|
entryToEventMap.set(entry, beforeUpdateEvent)
|
|
86
83
|
await mapper.eventManager.fire(beforeUpdateEvent)
|
|
@@ -99,8 +96,7 @@ export class DeleteExecutor {
|
|
|
99
96
|
columnName: Object.keys(entry.values)[0],
|
|
100
97
|
fieldName: Object.keys(entry.input)[0],
|
|
101
98
|
columnType: 'text',
|
|
102
|
-
|
|
103
|
-
value: Promise.resolve(null),
|
|
99
|
+
value: null,
|
|
104
100
|
old: Object.values(entry.oldValues ?? {})[0],
|
|
105
101
|
}]
|
|
106
102
|
const afterEvent = new AfterUpdateEvent(entry.entity, data, entry.primary)
|
|
@@ -2,19 +2,19 @@ import { Acl, Input, Model, Value } from '@contember/schema'
|
|
|
2
2
|
import { InsertBuilder as DbInsertBuilder, QueryBuilder, Value as DbValue } from '@contember/database'
|
|
3
3
|
import { PathFactory, WhereBuilder } from '../select'
|
|
4
4
|
import { getColumnName, getColumnType } from '@contember/schema-utils'
|
|
5
|
-
import { ColumnValue,
|
|
5
|
+
import { ColumnValue, normalizeDbValue } from '../ColumnValue'
|
|
6
6
|
import { PredicateFactory } from '../../acl'
|
|
7
7
|
import { AfterInsertEvent, BeforeInsertEvent } from '../EventManager'
|
|
8
8
|
import { Mapper } from '../Mapper'
|
|
9
9
|
|
|
10
10
|
export interface InsertResult {
|
|
11
|
-
values:
|
|
11
|
+
values: ColumnValue[]
|
|
12
12
|
executed: boolean
|
|
13
13
|
primaryValue: Value.PrimaryValue | null
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
export class InsertBuilder {
|
|
17
|
-
private rowData: Map<string, ColumnValue
|
|
17
|
+
private rowData: Map<string, ColumnValue> = new Map()
|
|
18
18
|
private where: { and: Input.OptionalWhere[] } = { and: [] }
|
|
19
19
|
|
|
20
20
|
constructor(
|
|
@@ -27,13 +27,14 @@ export class InsertBuilder {
|
|
|
27
27
|
|
|
28
28
|
public addFieldValue(
|
|
29
29
|
fieldName: string,
|
|
30
|
-
value: Value.
|
|
31
|
-
):
|
|
30
|
+
value: Value.FieldValue | undefined,
|
|
31
|
+
): void {
|
|
32
|
+
if (value === undefined) {
|
|
33
|
+
return
|
|
34
|
+
}
|
|
32
35
|
const columnName = getColumnName(this.schema, this.entity, fieldName)
|
|
33
36
|
const columnType = getColumnType(this.schema, this.entity, fieldName)
|
|
34
|
-
|
|
35
|
-
this.rowData.set(columnName, { columnName, value: resolvedValue, columnType, fieldName })
|
|
36
|
-
return resolvedValue
|
|
37
|
+
this.rowData.set(columnName, { columnName, value, columnType, fieldName })
|
|
37
38
|
}
|
|
38
39
|
|
|
39
40
|
public addPredicates(fields: string[]): void {
|
|
@@ -45,13 +46,9 @@ export class InsertBuilder {
|
|
|
45
46
|
this.where.and.push(where)
|
|
46
47
|
}
|
|
47
48
|
|
|
48
|
-
public async getResolvedData(): Promise<ResolvedColumnValue[]> {
|
|
49
|
-
return resolveRowData([...this.rowData.values()])
|
|
50
|
-
}
|
|
51
|
-
|
|
52
49
|
public async execute(mapper: Mapper): Promise<InsertResult> {
|
|
53
50
|
try {
|
|
54
|
-
const resolvedData =
|
|
51
|
+
const resolvedData = [...this.rowData.values()]
|
|
55
52
|
|
|
56
53
|
const insertData = resolvedData.reduce<QueryBuilder.ColumnExpressionMap>(
|
|
57
54
|
(result, item) => ({ ...result, [item.columnName]: expr => expr.select(['root_', item.columnName]) }),
|
|
@@ -61,7 +58,13 @@ export class InsertBuilder {
|
|
|
61
58
|
.with('root_', qb => {
|
|
62
59
|
return resolvedData.reduce(
|
|
63
60
|
(qb, value) =>
|
|
64
|
-
qb.select(
|
|
61
|
+
qb.select(
|
|
62
|
+
expr => expr.selectValue(
|
|
63
|
+
normalizeDbValue(value.value, value.columnType),
|
|
64
|
+
value.columnType,
|
|
65
|
+
),
|
|
66
|
+
value.columnName,
|
|
67
|
+
),
|
|
65
68
|
qb,
|
|
66
69
|
)
|
|
67
70
|
})
|
|
@@ -73,17 +76,17 @@ export class InsertBuilder {
|
|
|
73
76
|
})
|
|
74
77
|
.returning(this.entity.primaryColumn)
|
|
75
78
|
|
|
76
|
-
const beforeInsertEvent = new BeforeInsertEvent(this.entity, resolvedData
|
|
79
|
+
const beforeInsertEvent = new BeforeInsertEvent(this.entity, resolvedData)
|
|
77
80
|
await mapper.eventManager.fire(beforeInsertEvent)
|
|
78
81
|
|
|
79
82
|
const returning = (await qb.execute(mapper.db)).map(it => it[this.entity.primaryColumn])
|
|
80
83
|
const result = returning.length === 1 ? returning[0] : null
|
|
81
84
|
|
|
82
|
-
const afterInsertEvent = new AfterInsertEvent(this.entity, resolvedData
|
|
85
|
+
const afterInsertEvent = new AfterInsertEvent(this.entity, resolvedData, result)
|
|
83
86
|
beforeInsertEvent.afterEvent = afterInsertEvent
|
|
84
87
|
await mapper.eventManager.fire(afterInsertEvent)
|
|
85
88
|
|
|
86
|
-
return { values: resolvedData
|
|
89
|
+
return { values: resolvedData, executed: true, primaryValue: result }
|
|
87
90
|
} catch (e) {
|
|
88
91
|
throw e
|
|
89
92
|
}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
import { MutationCreateOk, MutationNoResultError,
|
|
1
|
+
import { MutationCreateOk, MutationNoResultError, MutationResultList } from '../Result'
|
|
2
2
|
import { CreateInputVisitor } from '../../inputProcessing'
|
|
3
3
|
import { SqlCreateInputProcessor, SqlCreateInputProcessorResult } from './SqlCreateInputProcessor'
|
|
4
4
|
import { Mapper } from '../Mapper'
|
|
5
|
-
import {
|
|
5
|
+
import { Model } from '@contember/schema'
|
|
6
6
|
import { acceptFieldVisitor, Providers } from '@contember/schema-utils'
|
|
7
7
|
import { InsertBuilderFactory } from './InsertBuilderFactory'
|
|
8
8
|
import { InsertBuilder } from './InsertBuilder'
|
|
9
9
|
import { rowDataToFieldValues } from '../ColumnValue'
|
|
10
10
|
import { DatabaseMetadata } from '@contember/database'
|
|
11
|
+
import { MapperInput } from '../types'
|
|
11
12
|
|
|
12
13
|
export class Inserter {
|
|
13
14
|
constructor(
|
|
@@ -20,7 +21,7 @@ export class Inserter {
|
|
|
20
21
|
public async insert(
|
|
21
22
|
mapper: Mapper,
|
|
22
23
|
entity: Model.Entity,
|
|
23
|
-
data:
|
|
24
|
+
data: MapperInput.CreateDataInput,
|
|
24
25
|
insertIdCallback: (id: string) => void,
|
|
25
26
|
builderCb: (builder: InsertBuilder) => void,
|
|
26
27
|
): Promise<MutationResultList> {
|
|
@@ -36,9 +36,7 @@ export class SqlCreateInputProcessor implements CreateInputProcessor<SqlCreateIn
|
|
|
36
36
|
public async column(context: Model.ColumnContext & { input: Input.ColumnValue | undefined }): Promise<SqlCreateInputProcessorResult> {
|
|
37
37
|
this.insertBuilder.addFieldValue(
|
|
38
38
|
context.column.name,
|
|
39
|
-
(
|
|
40
|
-
return resolveColumnValue(context, this.providers)
|
|
41
|
-
})(),
|
|
39
|
+
resolveColumnValue(context, this.providers),
|
|
42
40
|
)
|
|
43
41
|
return []
|
|
44
42
|
}
|
|
@@ -3,6 +3,8 @@ import { getInsertPrimary, MutationEntryNotFoundError } from '../../Result'
|
|
|
3
3
|
import { Mapper } from '../../Mapper'
|
|
4
4
|
import { CreateInputProcessor } from '../../../inputProcessing'
|
|
5
5
|
import { SqlCreateInputProcessorResult } from '../SqlCreateInputProcessor'
|
|
6
|
+
import { CheckedPrimary } from '../../CheckedPrimary'
|
|
7
|
+
import { MapperInput } from '../../types'
|
|
6
8
|
|
|
7
9
|
type Context = Model.ManyHasManyOwningContext | Model.ManyHasManyInverseContext
|
|
8
10
|
|
|
@@ -14,19 +16,17 @@ export class ManyHasManyCreateInputProcessor implements CreateInputProcessor.Has
|
|
|
14
16
|
}
|
|
15
17
|
|
|
16
18
|
public async connect(
|
|
17
|
-
{ entity, targetEntity, relation, targetRelation, input }: Context & { input: Input.UniqueWhere },
|
|
19
|
+
{ entity, targetEntity, relation, targetRelation, input }: Context & { input: Input.UniqueWhere | CheckedPrimary },
|
|
18
20
|
): Promise<SqlCreateInputProcessorResult> {
|
|
19
21
|
return async ({ primary }) => {
|
|
20
|
-
const otherPrimary = await this.mapper.getPrimaryValue(targetEntity, input)
|
|
21
|
-
if (
|
|
22
|
-
return [new MutationEntryNotFoundError([], input)]
|
|
23
|
-
}
|
|
22
|
+
const [otherPrimary, err] = await this.mapper.getPrimaryValue(targetEntity, input)
|
|
23
|
+
if (err) return [err]
|
|
24
24
|
return await this.mapper.connectJunction(entity, relation, primary, otherPrimary)
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
public async create(
|
|
29
|
-
{ entity, targetEntity, relation, input }: Context & { input:
|
|
29
|
+
{ entity, targetEntity, relation, input }: Context & { input: MapperInput.CreateDataInput },
|
|
30
30
|
) {
|
|
31
31
|
return async ({ primary }: { primary: Input.PrimaryValue }) => {
|
|
32
32
|
const insertResult = await this.mapper.insert(targetEntity, input)
|
|
@@ -42,10 +42,10 @@ export class ManyHasManyCreateInputProcessor implements CreateInputProcessor.Has
|
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
public async connectOrCreate(
|
|
45
|
-
context: Context & { input:
|
|
45
|
+
context: Context & { input: MapperInput.ConnectOrCreateInput },
|
|
46
46
|
) {
|
|
47
47
|
return async ({ primary }: { primary: Input.PrimaryValue }) => {
|
|
48
|
-
let otherPrimary = await this.mapper.getPrimaryValue(context.targetEntity, context.input.connect)
|
|
48
|
+
let [otherPrimary] = await this.mapper.getPrimaryValue(context.targetEntity, context.input.connect)
|
|
49
49
|
if (!otherPrimary) {
|
|
50
50
|
const insertResult = await this.mapper.insert(context.targetEntity, context.input.create)
|
|
51
51
|
otherPrimary = getInsertPrimary(insertResult)
|
|
@@ -4,6 +4,8 @@ import { Mapper } from '../../Mapper'
|
|
|
4
4
|
import { CreateInputProcessor } from '../../../inputProcessing'
|
|
5
5
|
import { SqlCreateInputProcessorResult } from '../SqlCreateInputProcessor'
|
|
6
6
|
import { InsertBuilder } from '../InsertBuilder'
|
|
7
|
+
import { CheckedPrimary } from '../../CheckedPrimary'
|
|
8
|
+
import { MapperInput } from '../../types'
|
|
7
9
|
|
|
8
10
|
type Context = Model.ManyHasOneContext
|
|
9
11
|
|
|
@@ -15,18 +17,16 @@ export class ManyHasOneCreateInputProcessor implements CreateInputProcessor.HasM
|
|
|
15
17
|
) {
|
|
16
18
|
}
|
|
17
19
|
public async connect(
|
|
18
|
-
{ targetEntity, relation, input }: Context & { input: Input.UniqueWhere },
|
|
20
|
+
{ targetEntity, relation, input }: Context & { input: Input.UniqueWhere | CheckedPrimary },
|
|
19
21
|
) {
|
|
20
|
-
const value = await this.mapper.getPrimaryValue(targetEntity, input)
|
|
21
|
-
if (
|
|
22
|
-
return [new MutationEntryNotFoundError([], input)]
|
|
23
|
-
}
|
|
22
|
+
const [value, err] = await this.mapper.getPrimaryValue(targetEntity, input)
|
|
23
|
+
if (err) return [err]
|
|
24
24
|
this.insertBuilder.addFieldValue(relation.name, value)
|
|
25
25
|
return []
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
public async create(
|
|
29
|
-
{ relation, targetEntity, input }: Context & { input:
|
|
29
|
+
{ relation, targetEntity, input }: Context & { input: MapperInput.CreateDataInput },
|
|
30
30
|
) {
|
|
31
31
|
const insertResult = await this.mapper.insert(targetEntity, input)
|
|
32
32
|
const value = getInsertPrimary(insertResult)
|
|
@@ -38,9 +38,9 @@ export class ManyHasOneCreateInputProcessor implements CreateInputProcessor.HasM
|
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
public async connectOrCreate(
|
|
41
|
-
{ input: { connect, create }, relation, targetEntity }: Context & { input:
|
|
41
|
+
{ input: { connect, create }, relation, targetEntity }: Context & { input: MapperInput.ConnectOrCreateInput },
|
|
42
42
|
) {
|
|
43
|
-
const value = await this.mapper.getPrimaryValue(targetEntity, connect)
|
|
43
|
+
const [value] = await this.mapper.getPrimaryValue(targetEntity, connect)
|
|
44
44
|
if (value) {
|
|
45
45
|
this.insertBuilder.addFieldValue(relation.name, value)
|
|
46
46
|
} else {
|
|
@@ -2,6 +2,8 @@ import { Input, Model } from '@contember/schema'
|
|
|
2
2
|
import { Mapper } from '../../Mapper'
|
|
3
3
|
import { CreateInputProcessor } from '../../../inputProcessing'
|
|
4
4
|
import { SqlCreateInputProcessorResult } from '../SqlCreateInputProcessor'
|
|
5
|
+
import { CheckedPrimary } from '../../CheckedPrimary'
|
|
6
|
+
import { MapperInput } from '../../types'
|
|
5
7
|
|
|
6
8
|
type Context = Model.OneHasManyContext
|
|
7
9
|
|
|
@@ -12,33 +14,33 @@ export class OneHasManyCreateInputProcessor implements CreateInputProcessor.HasM
|
|
|
12
14
|
) {
|
|
13
15
|
}
|
|
14
16
|
public async connect(
|
|
15
|
-
{ entity, targetEntity, targetRelation, input }: Context & { input: Input.UniqueWhere },
|
|
17
|
+
{ entity, targetEntity, targetRelation, input }: Context & { input: Input.UniqueWhere | CheckedPrimary },
|
|
16
18
|
) {
|
|
17
19
|
return async ({ primary }: { primary: Input.PrimaryValue }) => {
|
|
18
20
|
return await this.mapper.update(targetEntity, input, {
|
|
19
|
-
[targetRelation.name]: { connect:
|
|
21
|
+
[targetRelation.name]: { connect: new CheckedPrimary(primary) },
|
|
20
22
|
})
|
|
21
23
|
}
|
|
22
24
|
}
|
|
23
25
|
|
|
24
26
|
public async create(
|
|
25
|
-
{ entity, targetEntity, targetRelation, input }: Context & { input:
|
|
27
|
+
{ entity, targetEntity, targetRelation, input }: Context & { input: MapperInput.CreateDataInput },
|
|
26
28
|
) {
|
|
27
29
|
return async ({ primary }: { primary: Input.PrimaryValue }) => {
|
|
28
30
|
return await this.mapper.insert(targetEntity, {
|
|
29
31
|
...input,
|
|
30
|
-
[targetRelation.name]: { connect:
|
|
32
|
+
[targetRelation.name]: { connect: new CheckedPrimary(primary) },
|
|
31
33
|
})
|
|
32
34
|
}
|
|
33
35
|
}
|
|
34
36
|
|
|
35
37
|
public async connectOrCreate(
|
|
36
|
-
{ entity, targetRelation, targetEntity, input: { connect, create } }: Context & { input:
|
|
38
|
+
{ entity, targetRelation, targetEntity, input: { connect, create } }: Context & { input: MapperInput.ConnectOrCreateInput },
|
|
37
39
|
) {
|
|
38
40
|
return async ({ primary }: { primary: Input.PrimaryValue }) => {
|
|
39
41
|
const connectData = {
|
|
40
42
|
[targetRelation.name]: {
|
|
41
|
-
connect:
|
|
43
|
+
connect: new CheckedPrimary(primary),
|
|
42
44
|
},
|
|
43
45
|
}
|
|
44
46
|
return await this.mapper.upsert(targetEntity, connect, connectData, {
|
|
@@ -4,6 +4,7 @@ import { CheckedPrimary } from '../../CheckedPrimary'
|
|
|
4
4
|
import { Input, Model } from '@contember/schema'
|
|
5
5
|
import { CreateInputProcessor } from '../../../inputProcessing'
|
|
6
6
|
import { SqlCreateInputProcessorResult } from '../SqlCreateInputProcessor'
|
|
7
|
+
import { MapperInput } from '../../types'
|
|
7
8
|
|
|
8
9
|
type Context = Model.OneHasOneInverseContext
|
|
9
10
|
|
|
@@ -14,13 +15,11 @@ export class OneHasOneInverseCreateInputProcessor implements CreateInputProcesso
|
|
|
14
15
|
) {
|
|
15
16
|
}
|
|
16
17
|
|
|
17
|
-
public async connect(context: Context & { input: Input.UniqueWhere }) {
|
|
18
|
+
public async connect(context: Context & { input: Input.UniqueWhere | CheckedPrimary }) {
|
|
18
19
|
return async ({ primary }: { primary: Input.PrimaryValue }) => {
|
|
19
20
|
const { targetEntity, input } = context
|
|
20
|
-
const owner = await this.mapper.getPrimaryValue(targetEntity, input)
|
|
21
|
-
if (
|
|
22
|
-
return [new MutationEntryNotFoundError([], input)]
|
|
23
|
-
}
|
|
21
|
+
const [owner, err] = await this.mapper.getPrimaryValue(targetEntity, input)
|
|
22
|
+
if (err) return [err]
|
|
24
23
|
|
|
25
24
|
return await this.connectInternal({ ...context, input: new CheckedPrimary(owner) }, primary)
|
|
26
25
|
}
|
|
@@ -28,7 +27,7 @@ export class OneHasOneInverseCreateInputProcessor implements CreateInputProcesso
|
|
|
28
27
|
|
|
29
28
|
|
|
30
29
|
public async create(
|
|
31
|
-
{ input, targetRelation, targetEntity }: Context & { input:
|
|
30
|
+
{ input, targetRelation, targetEntity }: Context & { input: MapperInput.CreateDataInput },
|
|
32
31
|
) {
|
|
33
32
|
return async ({ primary }: { primary: Input.PrimaryValue }) => {
|
|
34
33
|
return await this.mapper.insert(targetEntity, input, builder => {
|
|
@@ -39,10 +38,10 @@ export class OneHasOneInverseCreateInputProcessor implements CreateInputProcesso
|
|
|
39
38
|
}
|
|
40
39
|
|
|
41
40
|
public async connectOrCreate(
|
|
42
|
-
{ input, ...context }: Context & { input:
|
|
41
|
+
{ input, ...context }: Context & { input: MapperInput.ConnectOrCreateInput },
|
|
43
42
|
) {
|
|
44
43
|
return async ({ primary }: { primary: Input.PrimaryValue }) => {
|
|
45
|
-
const owner = await this.mapper.getPrimaryValue(context.targetEntity, input.connect)
|
|
44
|
+
const [owner] = await this.mapper.getPrimaryValue(context.targetEntity, input.connect)
|
|
46
45
|
if (owner) {
|
|
47
46
|
return await this.connectInternal({ ...context, input: new CheckedPrimary(owner) }, primary)
|
|
48
47
|
}
|
|
@@ -80,7 +79,7 @@ export class OneHasOneInverseCreateInputProcessor implements CreateInputProcesso
|
|
|
80
79
|
}
|
|
81
80
|
|
|
82
81
|
private async createInternal(
|
|
83
|
-
context: Context & { input:
|
|
82
|
+
context: Context & { input: MapperInput.CreateDataInput },
|
|
84
83
|
primary: Input.PrimaryValue,
|
|
85
84
|
) {
|
|
86
85
|
return await this.mapper.insert(context.targetEntity, context.input, builder => {
|
|
@@ -10,6 +10,8 @@ import { Mapper } from '../../Mapper'
|
|
|
10
10
|
import { Input, Model } from '@contember/schema'
|
|
11
11
|
import { CreateInputProcessor } from '../../../inputProcessing'
|
|
12
12
|
import { SqlCreateInputProcessorResult } from '../SqlCreateInputProcessor'
|
|
13
|
+
import { CheckedPrimary } from '../../CheckedPrimary'
|
|
14
|
+
import { MapperInput } from '../../types'
|
|
13
15
|
|
|
14
16
|
type Context = Model.OneHasOneOwningContext
|
|
15
17
|
|
|
@@ -20,12 +22,10 @@ export class OneHasOneOwningCreateInputProcessor implements CreateInputProcessor
|
|
|
20
22
|
) {
|
|
21
23
|
}
|
|
22
24
|
|
|
23
|
-
public async connect(context: Context & { input: Input.UniqueWhere }) {
|
|
25
|
+
public async connect(context: Context & { input: Input.UniqueWhere | CheckedPrimary }) {
|
|
24
26
|
const { input, relation, targetEntity } = context
|
|
25
|
-
const inverseSide = await this.mapper.getPrimaryValue(targetEntity, input)
|
|
26
|
-
if (
|
|
27
|
-
return [new MutationEntryNotFoundError([], input)]
|
|
28
|
-
}
|
|
27
|
+
const [inverseSide, err] = await this.mapper.getPrimaryValue(targetEntity, input)
|
|
28
|
+
if (err) return [err]
|
|
29
29
|
const disconnectResult = await this.disconnectCurrentOwner({ ...context, input: inverseSide })
|
|
30
30
|
if (disconnectResult.some(it => it.error)) {
|
|
31
31
|
return disconnectResult
|
|
@@ -34,7 +34,7 @@ export class OneHasOneOwningCreateInputProcessor implements CreateInputProcessor
|
|
|
34
34
|
return disconnectResult
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
-
public async create(context: Context & { input:
|
|
37
|
+
public async create(context: Context & { input: MapperInput.CreateDataInput }) {
|
|
38
38
|
const insertResult = await this.mapper.insert(context.targetEntity, context.input)
|
|
39
39
|
const primary = getInsertPrimary(insertResult)
|
|
40
40
|
if (!primary) {
|
|
@@ -44,8 +44,8 @@ export class OneHasOneOwningCreateInputProcessor implements CreateInputProcessor
|
|
|
44
44
|
return []
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
-
public async connectOrCreate({ input, ...context }: Context & { input:
|
|
48
|
-
const inverseSide = await this.mapper.getPrimaryValue(context.targetEntity, input.connect)
|
|
47
|
+
public async connectOrCreate({ input, ...context }: Context & { input: MapperInput.ConnectOrCreateInput }) {
|
|
48
|
+
const [inverseSide] = await this.mapper.getPrimaryValue(context.targetEntity, input.connect)
|
|
49
49
|
if (inverseSide) {
|
|
50
50
|
this.insertBuilder.addFieldValue(context.relation.name, inverseSide)
|
|
51
51
|
const disconnectResult = await this.disconnectCurrentOwner({ ...context, input: inverseSide })
|
|
@@ -67,7 +67,7 @@ export class OneHasOneOwningCreateInputProcessor implements CreateInputProcessor
|
|
|
67
67
|
private async disconnectCurrentOwner(
|
|
68
68
|
{ entity, relation, targetEntity, input }: Context & { input: Input.PrimaryValue },
|
|
69
69
|
): Promise<MutationResultList> {
|
|
70
|
-
const currentOwnerOfInverseSide = await this.mapper.getPrimaryValue(entity, {
|
|
70
|
+
const [currentOwnerOfInverseSide] = await this.mapper.getPrimaryValue(entity, {
|
|
71
71
|
[relation.name]: { [targetEntity.primary]: input },
|
|
72
72
|
})
|
|
73
73
|
if (!currentOwnerOfInverseSide) {
|