@contember/engine-content-api 2.0.0-alpha.36 → 2.0.0-alpha.38
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
package/src/mapper/types.ts
CHANGED
|
@@ -1,3 +1,117 @@
|
|
|
1
|
-
import { Model } from '@contember/schema'
|
|
1
|
+
import { Model, Input, Value } from '@contember/schema'
|
|
2
|
+
import { CheckedPrimary } from './CheckedPrimary'
|
|
2
3
|
|
|
3
4
|
export type JoiningColumns = { sourceColumn: Model.JoiningColumn; targetColumn: Model.JoiningColumn }
|
|
5
|
+
|
|
6
|
+
export namespace MapperInput {
|
|
7
|
+
|
|
8
|
+
export interface ConnectRelationInput {
|
|
9
|
+
connect: Input.UniqueWhere | CheckedPrimary
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export interface CreateRelationInput {
|
|
13
|
+
create: CreateDataInput
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export interface ConnectOrCreateInput {
|
|
17
|
+
connect: Input.UniqueWhere | CheckedPrimary
|
|
18
|
+
create: CreateDataInput
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export interface ConnectOrCreateRelationInput {
|
|
22
|
+
connectOrCreate: ConnectOrCreateInput
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export interface DisconnectSpecifiedRelationInput {
|
|
26
|
+
disconnect: Input.UniqueWhere
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export interface DeleteSpecifiedRelationInput {
|
|
30
|
+
delete: Input.UniqueWhere
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export interface UpdateSpecifiedRelationInput {
|
|
34
|
+
update: { by: Input.UniqueWhere; data: UpdateDataInput }
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export interface UpsertSpecifiedRelationInput {
|
|
38
|
+
upsert: { by: Input.UniqueWhere; update: UpdateDataInput; create: CreateDataInput }
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export interface DisconnectRelationInput {
|
|
42
|
+
disconnect: true
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export interface UpdateRelationInput {
|
|
46
|
+
update: UpdateDataInput
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export interface DeleteRelationInput {
|
|
50
|
+
delete: true
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export interface UpsertRelationInput {
|
|
54
|
+
upsert: { update: UpdateDataInput; create: CreateDataInput }
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export interface CreateDataInput {
|
|
58
|
+
[column: string]: Value.FieldValue | CreateOneRelationInput | CreateManyRelationInput
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export type CreateOneRelationInput = { alias?: string } & (
|
|
62
|
+
| ConnectRelationInput
|
|
63
|
+
| CreateRelationInput
|
|
64
|
+
| ConnectOrCreateRelationInput
|
|
65
|
+
)
|
|
66
|
+
|
|
67
|
+
export type CreateManyRelationInput = Array<CreateOneRelationInput>
|
|
68
|
+
|
|
69
|
+
export interface UpdateDataInput {
|
|
70
|
+
[column: string]: Value.FieldValue | UpdateOneRelationInput | UpdateManyRelationInput
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
export interface UpdateInput {
|
|
74
|
+
by: Input.UniqueWhere
|
|
75
|
+
filter?: Input.OptionalWhere
|
|
76
|
+
data: UpdateDataInput
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export interface UpsertInput {
|
|
80
|
+
by: Input.UniqueWhere
|
|
81
|
+
filter?: Input.OptionalWhere
|
|
82
|
+
update: UpdateDataInput
|
|
83
|
+
create: CreateDataInput
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
export interface CreateInput {
|
|
87
|
+
data: CreateDataInput
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
export interface DeleteInput {
|
|
91
|
+
by: Input.UniqueWhere
|
|
92
|
+
filter?: Input.OptionalWhere
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
export type UpdateOneRelationInput =
|
|
97
|
+
| CreateRelationInput
|
|
98
|
+
| ConnectRelationInput
|
|
99
|
+
| ConnectOrCreateRelationInput
|
|
100
|
+
| DeleteRelationInput
|
|
101
|
+
| DisconnectRelationInput
|
|
102
|
+
| UpdateRelationInput
|
|
103
|
+
| UpsertRelationInput
|
|
104
|
+
|
|
105
|
+
export type UpdateManyRelationInputItem = { alias?: string } & (
|
|
106
|
+
| CreateRelationInput
|
|
107
|
+
| ConnectRelationInput
|
|
108
|
+
| ConnectOrCreateRelationInput
|
|
109
|
+
| DeleteSpecifiedRelationInput
|
|
110
|
+
| DisconnectSpecifiedRelationInput
|
|
111
|
+
| UpdateSpecifiedRelationInput
|
|
112
|
+
| UpsertSpecifiedRelationInput
|
|
113
|
+
)
|
|
114
|
+
|
|
115
|
+
export type UpdateManyRelationInput = Array<UpdateManyRelationInputItem>
|
|
116
|
+
|
|
117
|
+
}
|
|
@@ -9,6 +9,7 @@ import { ManyHasManyUpdateInputProcessor } from './relations/ManyHasManyUpdateIn
|
|
|
9
9
|
import { UpdateInputProcessor } from '../../inputProcessing'
|
|
10
10
|
import { MutationResultList } from '../Result'
|
|
11
11
|
import { ManyHasOneUpdateInputProcessor } from './relations/ManyHasOneUpdateInputProcessor'
|
|
12
|
+
import { MapperInput } from '../types'
|
|
12
13
|
|
|
13
14
|
export type SqlUpdateInputProcessorResult = MutationResultList | ((ctx: { primary: Input.PrimaryValue}) => Promise<MutationResultList>)
|
|
14
15
|
|
|
@@ -21,7 +22,7 @@ export class SqlUpdateInputProcessor implements UpdateInputProcessor<SqlUpdateIn
|
|
|
21
22
|
|
|
22
23
|
constructor(
|
|
23
24
|
private readonly primaryValue: Input.PrimaryValue,
|
|
24
|
-
private readonly data:
|
|
25
|
+
private readonly data: MapperInput.UpdateDataInput,
|
|
25
26
|
private readonly updateBuilder: UpdateBuilder,
|
|
26
27
|
private readonly mapper: Mapper,
|
|
27
28
|
) {
|
|
@@ -3,13 +3,13 @@ import { Acl, Input, Model, Value } from '@contember/schema'
|
|
|
3
3
|
import { acceptEveryFieldVisitor, getColumnName, getColumnType } from '@contember/schema-utils'
|
|
4
4
|
import { Operator, QueryBuilder, UpdateBuilder as DbUpdateBuilder, Value as DbValue } from '@contember/database'
|
|
5
5
|
import { PathFactory, WhereBuilder } from '../select'
|
|
6
|
-
import { ColumnValue,
|
|
6
|
+
import { ColumnValue, normalizeDbValue } from '../ColumnValue'
|
|
7
7
|
import { PredicateFactory } from '../../acl'
|
|
8
8
|
import { AfterUpdateEvent, BeforeUpdateEvent } from '../EventManager'
|
|
9
9
|
import { Mapper } from '../Mapper'
|
|
10
10
|
|
|
11
11
|
export interface UpdateResult {
|
|
12
|
-
values:
|
|
12
|
+
values: ColumnValue[]
|
|
13
13
|
executed: boolean
|
|
14
14
|
affectedRows: number | null
|
|
15
15
|
}
|
|
@@ -31,13 +31,15 @@ export class UpdateBuilder {
|
|
|
31
31
|
|
|
32
32
|
public addFieldValue(
|
|
33
33
|
fieldName: string,
|
|
34
|
-
value: Value.
|
|
35
|
-
):
|
|
34
|
+
value: Value.FieldValue | undefined,
|
|
35
|
+
): void {
|
|
36
|
+
if (value === undefined) {
|
|
37
|
+
return
|
|
38
|
+
}
|
|
36
39
|
const columnName = getColumnName(this.schema, this.entity, fieldName)
|
|
37
40
|
const columnType = getColumnType(this.schema, this.entity, fieldName)
|
|
38
|
-
|
|
39
|
-
this.rowData.set(columnName, { columnName, value
|
|
40
|
-
return resolvedValue
|
|
41
|
+
|
|
42
|
+
this.rowData.set(columnName, { columnName, value, columnType, fieldName })
|
|
41
43
|
}
|
|
42
44
|
|
|
43
45
|
public addNewWhere(where: Input.OptionalWhere): void {
|
|
@@ -56,7 +58,7 @@ export class UpdateBuilder {
|
|
|
56
58
|
|
|
57
59
|
public async execute(mapper: Mapper): Promise<UpdateResult> {
|
|
58
60
|
try {
|
|
59
|
-
const resolvedData =
|
|
61
|
+
const resolvedData = [...this.rowData.values()]
|
|
60
62
|
if (Object.keys(resolvedData).length === 0) {
|
|
61
63
|
return { values: [], affectedRows: null, executed: false }
|
|
62
64
|
}
|
|
@@ -67,7 +69,13 @@ export class UpdateBuilder {
|
|
|
67
69
|
qb = resolvedData.reduce(
|
|
68
70
|
(qb, value) =>
|
|
69
71
|
qb
|
|
70
|
-
.select(
|
|
72
|
+
.select(
|
|
73
|
+
expr => expr.selectValue(
|
|
74
|
+
normalizeDbValue(value.value, value.columnType),
|
|
75
|
+
value.columnType,
|
|
76
|
+
),
|
|
77
|
+
value.columnName,
|
|
78
|
+
)
|
|
71
79
|
.select(['root_', value.columnName], value.columnName + oldColSuffix),
|
|
72
80
|
qb,
|
|
73
81
|
)
|
|
@@ -118,13 +126,13 @@ export class UpdateBuilder {
|
|
|
118
126
|
})
|
|
119
127
|
|
|
120
128
|
|
|
121
|
-
const beforeEvent = new BeforeUpdateEvent(this.entity, resolvedData
|
|
129
|
+
const beforeEvent = new BeforeUpdateEvent(this.entity, resolvedData, this.primary)
|
|
122
130
|
await mapper.eventManager.fire(beforeEvent)
|
|
123
131
|
|
|
124
132
|
const result = await qb.execute(mapper.db)
|
|
125
133
|
|
|
126
134
|
if (result.length === 1) {
|
|
127
|
-
const eventData = (resolvedData
|
|
135
|
+
const eventData = (resolvedData).map(it => ({
|
|
128
136
|
...it,
|
|
129
137
|
old: result[0][it.columnName + oldColSuffix],
|
|
130
138
|
}))
|
|
@@ -133,7 +141,7 @@ export class UpdateBuilder {
|
|
|
133
141
|
await mapper.eventManager.fire(afterUpdateEvent)
|
|
134
142
|
}
|
|
135
143
|
|
|
136
|
-
return { values: resolvedData
|
|
144
|
+
return { values: resolvedData, affectedRows: result.length, executed: true }
|
|
137
145
|
} catch (e) {
|
|
138
146
|
throw e
|
|
139
147
|
}
|
|
@@ -5,10 +5,11 @@ import { PredicateFactory } from '../../acl'
|
|
|
5
5
|
import { UpdateBuilderFactory } from './UpdateBuilderFactory'
|
|
6
6
|
import { Mapper } from '../Mapper'
|
|
7
7
|
import { acceptFieldVisitor } from '@contember/schema-utils'
|
|
8
|
-
import { MutationNoResultError, MutationNothingToDo, MutationResultList, MutationUpdateOk, NothingToDoReason
|
|
8
|
+
import { MutationNoResultError, MutationNothingToDo, MutationResultList, MutationUpdateOk, NothingToDoReason } from '../Result'
|
|
9
9
|
import { UpdateBuilder } from './UpdateBuilder'
|
|
10
10
|
import { rowDataToFieldValues } from '../ColumnValue'
|
|
11
11
|
import { DatabaseMetadata } from '@contember/database'
|
|
12
|
+
import { MapperInput } from '../types'
|
|
12
13
|
|
|
13
14
|
export class Updater {
|
|
14
15
|
constructor(
|
|
@@ -22,7 +23,7 @@ export class Updater {
|
|
|
22
23
|
mapper: Mapper,
|
|
23
24
|
entity: Model.Entity,
|
|
24
25
|
primaryValue: Input.PrimaryValue,
|
|
25
|
-
data:
|
|
26
|
+
data: MapperInput.UpdateDataInput,
|
|
26
27
|
filter?: Input.OptionalWhere,
|
|
27
28
|
): Promise<MutationResultList> {
|
|
28
29
|
const updateBuilder = this.updateBuilderFactory.create(entity, primaryValue)
|
|
@@ -3,6 +3,8 @@ import { Input, Model } from '@contember/schema'
|
|
|
3
3
|
import { getInsertPrimary, MutationEntryNotFoundError } from '../../Result'
|
|
4
4
|
import { Mapper } from '../../Mapper'
|
|
5
5
|
import { SqlUpdateInputProcessorResult } from '../../update'
|
|
6
|
+
import { CheckedPrimary } from '../../CheckedPrimary'
|
|
7
|
+
import { MapperInput } from '../../types'
|
|
6
8
|
|
|
7
9
|
type Context = Model.ManyHasManyOwningContext | Model.ManyHasManyInverseContext
|
|
8
10
|
|
|
@@ -13,19 +15,17 @@ export class ManyHasManyUpdateInputProcessor implements UpdateInputProcessor.Has
|
|
|
13
15
|
}
|
|
14
16
|
|
|
15
17
|
public async connect(
|
|
16
|
-
{ entity, targetEntity, relation, targetRelation, input }: Context & { input: Input.UniqueWhere },
|
|
18
|
+
{ entity, targetEntity, relation, targetRelation, input }: Context & { input: Input.UniqueWhere | CheckedPrimary },
|
|
17
19
|
) {
|
|
18
20
|
return async ({ primary }: { primary: Input.PrimaryValue }) => {
|
|
19
|
-
const otherPrimary = await this.mapper.getPrimaryValue(targetEntity, input)
|
|
20
|
-
if (
|
|
21
|
-
return [new MutationEntryNotFoundError([], input)]
|
|
22
|
-
}
|
|
21
|
+
const [otherPrimary, err] = await this.mapper.getPrimaryValue(targetEntity, input)
|
|
22
|
+
if (err) return [err]
|
|
23
23
|
return await this.mapper.connectJunction(entity, relation, primary, otherPrimary)
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
public async create(
|
|
28
|
-
{ entity, targetEntity, relation, input }: Context & { input:
|
|
28
|
+
{ entity, targetEntity, relation, input }: Context & { input: MapperInput.CreateDataInput },
|
|
29
29
|
) {
|
|
30
30
|
return async ({ primary }: { primary: Input.PrimaryValue }) => {
|
|
31
31
|
const insertResult = await this.mapper.insert(targetEntity, input)
|
|
@@ -41,10 +41,10 @@ export class ManyHasManyUpdateInputProcessor implements UpdateInputProcessor.Has
|
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
public async connectOrCreate(
|
|
44
|
-
context: Context & { input:
|
|
44
|
+
context: Context & { input: MapperInput.ConnectOrCreateInput },
|
|
45
45
|
) {
|
|
46
46
|
return async ({ primary }: { primary: Input.PrimaryValue }) => {
|
|
47
|
-
let otherPrimary = await this.mapper.getPrimaryValue(context.targetEntity, context.input.connect)
|
|
47
|
+
let [otherPrimary] = await this.mapper.getPrimaryValue(context.targetEntity, context.input.connect)
|
|
48
48
|
if (!otherPrimary) {
|
|
49
49
|
const insertResult = await this.mapper.insert(context.targetEntity, context.input.create)
|
|
50
50
|
otherPrimary = getInsertPrimary(insertResult)
|
|
@@ -60,12 +60,10 @@ export class ManyHasManyUpdateInputProcessor implements UpdateInputProcessor.Has
|
|
|
60
60
|
{ entity, targetEntity, relation, input: { where, data } }: Context & { input: UpdateInputProcessor.UpdateManyInput },
|
|
61
61
|
) {
|
|
62
62
|
return async ({ primary }: { primary: Input.PrimaryValue }) => {
|
|
63
|
-
const otherPrimary = await this.mapper.getPrimaryValue(targetEntity, where)
|
|
64
|
-
if (
|
|
65
|
-
return [new MutationEntryNotFoundError([], where)]
|
|
66
|
-
}
|
|
63
|
+
const [otherPrimary, err] = await this.mapper.getPrimaryValue(targetEntity, where)
|
|
64
|
+
if (err) return [err]
|
|
67
65
|
return [
|
|
68
|
-
...(await this.mapper.update(targetEntity,
|
|
66
|
+
...(await this.mapper.update(targetEntity, new CheckedPrimary(otherPrimary), data)),
|
|
69
67
|
...(await this.mapper.connectJunction(entity, relation, primary, otherPrimary)),
|
|
70
68
|
]
|
|
71
69
|
}
|
|
@@ -75,9 +73,9 @@ export class ManyHasManyUpdateInputProcessor implements UpdateInputProcessor.Has
|
|
|
75
73
|
{ entity, relation, targetEntity, input: { create, update, where } }: Context & { input: UpdateInputProcessor.UpsertManyInput },
|
|
76
74
|
) {
|
|
77
75
|
return async ({ primary }: { primary: Input.PrimaryValue }) => {
|
|
78
|
-
const otherPrimary = await this.mapper.getPrimaryValue(targetEntity, where)
|
|
76
|
+
const [otherPrimary] = await this.mapper.getPrimaryValue(targetEntity, where)
|
|
79
77
|
if (otherPrimary) {
|
|
80
|
-
const updateResult = await this.mapper.update(targetEntity,
|
|
78
|
+
const updateResult = await this.mapper.update(targetEntity, new CheckedPrimary(otherPrimary), update)
|
|
81
79
|
const connectResult = await this.mapper.connectJunction(entity, relation, primary, otherPrimary)
|
|
82
80
|
return [...updateResult, ...connectResult]
|
|
83
81
|
} else {
|
|
@@ -97,10 +95,8 @@ export class ManyHasManyUpdateInputProcessor implements UpdateInputProcessor.Has
|
|
|
97
95
|
{ entity, targetEntity, relation, input }: Context & { input: Input.UniqueWhere },
|
|
98
96
|
) {
|
|
99
97
|
return async ({ primary }: { primary: Input.PrimaryValue }) => {
|
|
100
|
-
const otherPrimary = await this.mapper.getPrimaryValue(targetEntity, input)
|
|
101
|
-
if (
|
|
102
|
-
return [new MutationEntryNotFoundError([], input)]
|
|
103
|
-
}
|
|
98
|
+
const [otherPrimary, err] = await this.mapper.getPrimaryValue(targetEntity, input)
|
|
99
|
+
if (err) return [err]
|
|
104
100
|
|
|
105
101
|
return await this.mapper.disconnectJunction(entity, relation, primary, otherPrimary)
|
|
106
102
|
}
|
|
@@ -11,6 +11,8 @@ import {
|
|
|
11
11
|
import { Mapper } from '../../Mapper'
|
|
12
12
|
import { SqlUpdateInputProcessorResult } from '../SqlUpdateInputProcessor'
|
|
13
13
|
import { UpdateBuilder } from '../UpdateBuilder'
|
|
14
|
+
import { CheckedPrimary } from '../../CheckedPrimary'
|
|
15
|
+
import { MapperInput } from '../../types'
|
|
14
16
|
|
|
15
17
|
type Context = Model.ManyHasOneContext
|
|
16
18
|
|
|
@@ -24,18 +26,16 @@ export class ManyHasOneUpdateInputProcessor implements UpdateInputProcessor.HasO
|
|
|
24
26
|
}
|
|
25
27
|
|
|
26
28
|
public async connect(
|
|
27
|
-
{ targetEntity, relation, input }: Context & { input: Input.UniqueWhere },
|
|
29
|
+
{ targetEntity, relation, input }: Context & { input: Input.UniqueWhere | CheckedPrimary },
|
|
28
30
|
) {
|
|
29
|
-
const value = await this.mapper.getPrimaryValue(targetEntity, input)
|
|
30
|
-
if (
|
|
31
|
-
return [new MutationEntryNotFoundError([], input)]
|
|
32
|
-
}
|
|
31
|
+
const [value, err] = await this.mapper.getPrimaryValue(targetEntity, input)
|
|
32
|
+
if (err) return [err]
|
|
33
33
|
this.builder.addFieldValue(relation.name, value)
|
|
34
34
|
return []
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
public async create(
|
|
38
|
-
{ relation, targetEntity, input }: Context & { input:
|
|
38
|
+
{ relation, targetEntity, input }: Context & { input: MapperInput.CreateDataInput },
|
|
39
39
|
) {
|
|
40
40
|
const insertResult = await this.mapper.insert(targetEntity, input)
|
|
41
41
|
const value = getInsertPrimary(insertResult)
|
|
@@ -47,9 +47,9 @@ export class ManyHasOneUpdateInputProcessor implements UpdateInputProcessor.HasO
|
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
public async connectOrCreate(
|
|
50
|
-
{ input: { connect, create }, relation, targetEntity }: Context & { input:
|
|
50
|
+
{ input: { connect, create }, relation, targetEntity }: Context & { input: MapperInput.ConnectOrCreateInput },
|
|
51
51
|
) {
|
|
52
|
-
const value = await this.mapper.getPrimaryValue(targetEntity, connect)
|
|
52
|
+
const [value] = await this.mapper.getPrimaryValue(targetEntity, connect)
|
|
53
53
|
if (value) {
|
|
54
54
|
this.builder.addFieldValue(relation.name, value)
|
|
55
55
|
} else {
|
|
@@ -65,7 +65,7 @@ export class ManyHasOneUpdateInputProcessor implements UpdateInputProcessor.HasO
|
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
public async update(
|
|
68
|
-
{ entity, relation, targetEntity, targetRelation, input }: Context & { input:
|
|
68
|
+
{ entity, relation, targetEntity, targetRelation, input }: Context & { input: MapperInput.UpdateDataInput },
|
|
69
69
|
) {
|
|
70
70
|
return async ({ primary }: { primary: Input.PrimaryValue }) => {
|
|
71
71
|
const inversePrimary = await this.mapper.selectField(
|
|
@@ -76,7 +76,7 @@ export class ManyHasOneUpdateInputProcessor implements UpdateInputProcessor.HasO
|
|
|
76
76
|
if (!inversePrimary) {
|
|
77
77
|
return [new MutationNothingToDo([], NothingToDoReason.emptyRelation)]
|
|
78
78
|
}
|
|
79
|
-
return await this.mapper.update(targetEntity,
|
|
79
|
+
return await this.mapper.update(targetEntity, new CheckedPrimary(inversePrimary), input)
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
82
|
|
|
@@ -94,7 +94,7 @@ export class ManyHasOneUpdateInputProcessor implements UpdateInputProcessor.HasO
|
|
|
94
94
|
}
|
|
95
95
|
|
|
96
96
|
return async () =>
|
|
97
|
-
await this.mapper.update(targetEntity,
|
|
97
|
+
await this.mapper.update(targetEntity, new CheckedPrimary(inversePrimary), update)
|
|
98
98
|
}
|
|
99
99
|
|
|
100
100
|
public async disconnect(
|
|
@@ -3,6 +3,8 @@ import { Input, Model } from '@contember/schema'
|
|
|
3
3
|
import { Mapper } from '../../Mapper'
|
|
4
4
|
import { MutationResultType } from '../../Result'
|
|
5
5
|
import { SqlUpdateInputProcessorResult } from '../SqlUpdateInputProcessor'
|
|
6
|
+
import { CheckedPrimary } from '../../CheckedPrimary'
|
|
7
|
+
import { MapperInput } from '../../types'
|
|
6
8
|
|
|
7
9
|
type Context = Model.OneHasManyContext
|
|
8
10
|
|
|
@@ -13,33 +15,33 @@ export class OneHasManyUpdateInputProcessor implements UpdateInputProcessor.HasM
|
|
|
13
15
|
}
|
|
14
16
|
|
|
15
17
|
public async connect(
|
|
16
|
-
{ entity, targetEntity, targetRelation, input }: Context & { input: Input.UniqueWhere },
|
|
18
|
+
{ entity, targetEntity, targetRelation, input }: Context & { input: Input.UniqueWhere | CheckedPrimary },
|
|
17
19
|
) {
|
|
18
20
|
return async ({ primary }: { primary: Input.PrimaryValue }) => {
|
|
19
21
|
return await this.mapper.update(targetEntity, input, {
|
|
20
|
-
[targetRelation.name]: { connect:
|
|
22
|
+
[targetRelation.name]: { connect: new CheckedPrimary(primary) },
|
|
21
23
|
})
|
|
22
24
|
}
|
|
23
25
|
}
|
|
24
26
|
|
|
25
27
|
public async create(
|
|
26
|
-
{ entity, targetEntity, targetRelation, input }: Context & { input:
|
|
28
|
+
{ entity, targetEntity, targetRelation, input }: Context & { input: MapperInput.CreateDataInput },
|
|
27
29
|
) {
|
|
28
30
|
return async ({ primary }: { primary: Input.PrimaryValue }) => {
|
|
29
31
|
return await this.mapper.insert(targetEntity, {
|
|
30
32
|
...input,
|
|
31
|
-
[targetRelation.name]: { connect:
|
|
33
|
+
[targetRelation.name]: { connect: new CheckedPrimary(primary) },
|
|
32
34
|
})
|
|
33
35
|
}
|
|
34
36
|
}
|
|
35
37
|
|
|
36
38
|
public async connectOrCreate(
|
|
37
|
-
{ entity, targetRelation, targetEntity, input: { connect, create } }: Context & { input:
|
|
39
|
+
{ entity, targetRelation, targetEntity, input: { connect, create } }: Context & { input: MapperInput.ConnectOrCreateInput },
|
|
38
40
|
) {
|
|
39
41
|
return async ({ primary }: { primary: Input.PrimaryValue }) => {
|
|
40
42
|
const connectData = {
|
|
41
43
|
[targetRelation.name]: {
|
|
42
|
-
connect:
|
|
44
|
+
connect: new CheckedPrimary(primary),
|
|
43
45
|
},
|
|
44
46
|
}
|
|
45
47
|
return await this.mapper.upsert(targetEntity, connect, connectData, {
|
|
@@ -79,7 +81,7 @@ export class OneHasManyUpdateInputProcessor implements UpdateInputProcessor.HasM
|
|
|
79
81
|
if (result[0].result === MutationResultType.notFoundError) {
|
|
80
82
|
return await this.mapper.insert(targetEntity, {
|
|
81
83
|
...create,
|
|
82
|
-
[targetRelation.name]: { connect:
|
|
84
|
+
[targetRelation.name]: { connect: new CheckedPrimary(primary) },
|
|
83
85
|
})
|
|
84
86
|
}
|
|
85
87
|
return result
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ConstraintType,
|
|
3
3
|
MutationConstraintViolationError,
|
|
4
|
-
MutationEntryNotFoundError,
|
|
5
4
|
MutationNothingToDo,
|
|
6
5
|
MutationResultList,
|
|
7
6
|
MutationResultType,
|
|
@@ -11,6 +10,8 @@ import { UpdateInputProcessor } from '../../../inputProcessing'
|
|
|
11
10
|
import { Input, Model } from '@contember/schema'
|
|
12
11
|
import { Mapper } from '../../Mapper'
|
|
13
12
|
import { SqlUpdateInputProcessorResult } from '../SqlUpdateInputProcessor'
|
|
13
|
+
import { CheckedPrimary } from '../../CheckedPrimary'
|
|
14
|
+
import { MapperInput } from '../../types'
|
|
14
15
|
|
|
15
16
|
type Context = Model.OneHasOneInverseContext
|
|
16
17
|
|
|
@@ -21,21 +22,19 @@ export class OneHasOneInverseUpdateInputProcessor implements UpdateInputProcesso
|
|
|
21
22
|
) {
|
|
22
23
|
}
|
|
23
24
|
|
|
24
|
-
public async connect({ input, ...ctx }: Model.OneHasOneInverseContext & { input: Input.UniqueWhere }) {
|
|
25
|
+
public async connect({ input, ...ctx }: Model.OneHasOneInverseContext & { input: Input.UniqueWhere | CheckedPrimary }) {
|
|
25
26
|
return async () => {
|
|
26
|
-
const newOwner = await this.mapper.getPrimaryValue(ctx.targetEntity, input)
|
|
27
|
-
if (
|
|
28
|
-
return [new MutationEntryNotFoundError([], input)]
|
|
29
|
-
}
|
|
27
|
+
const [newOwner, err] = await this.mapper.getPrimaryValue(ctx.targetEntity, input)
|
|
28
|
+
if (err) return [err]
|
|
30
29
|
return await this.connectInternal(ctx, newOwner)
|
|
31
30
|
}
|
|
32
31
|
}
|
|
33
32
|
|
|
34
33
|
public async connectOrCreate(
|
|
35
|
-
{ input, ...ctx }: Model.OneHasOneInverseContext & { input:
|
|
34
|
+
{ input, ...ctx }: Model.OneHasOneInverseContext & { input: MapperInput.ConnectOrCreateInput },
|
|
36
35
|
) {
|
|
37
36
|
return async () => {
|
|
38
|
-
const newOwner = await this.mapper.getPrimaryValue(ctx.targetEntity, input.connect)
|
|
37
|
+
const [newOwner] = await this.mapper.getPrimaryValue(ctx.targetEntity, input.connect)
|
|
39
38
|
if (newOwner) {
|
|
40
39
|
return await this.connectInternal(ctx, newOwner)
|
|
41
40
|
}
|
|
@@ -44,13 +43,13 @@ export class OneHasOneInverseUpdateInputProcessor implements UpdateInputProcesso
|
|
|
44
43
|
}
|
|
45
44
|
|
|
46
45
|
|
|
47
|
-
public async create(ctx: Model.OneHasOneInverseContext & { input:
|
|
46
|
+
public async create(ctx: Model.OneHasOneInverseContext & { input: MapperInput.CreateDataInput }) {
|
|
48
47
|
return async () => {
|
|
49
48
|
return await this.createInternal(ctx)
|
|
50
49
|
}
|
|
51
50
|
}
|
|
52
51
|
|
|
53
|
-
public async update({ entity, targetEntity, targetRelation, input }: Model.OneHasOneInverseContext & { input:
|
|
52
|
+
public async update({ entity, targetEntity, targetRelation, input }: Model.OneHasOneInverseContext & { input: MapperInput.UpdateDataInput }) {
|
|
54
53
|
return async () => {
|
|
55
54
|
return await this.mapper.update(
|
|
56
55
|
targetEntity,
|
|
@@ -59,6 +58,7 @@ export class OneHasOneInverseUpdateInputProcessor implements UpdateInputProcesso
|
|
|
59
58
|
)
|
|
60
59
|
}
|
|
61
60
|
}
|
|
61
|
+
|
|
62
62
|
public async upsert(context: Model.OneHasOneInverseContext & { input: UpdateInputProcessor.UpsertInput }) {
|
|
63
63
|
return async () => {
|
|
64
64
|
const { targetEntity, targetRelation, entity, input: { update, create } } = context
|
|
@@ -82,7 +82,7 @@ export class OneHasOneInverseUpdateInputProcessor implements UpdateInputProcesso
|
|
|
82
82
|
if (!relation.nullable && !targetRelation.orphanRemoval) {
|
|
83
83
|
return [new MutationConstraintViolationError([], ConstraintType.notNull)]
|
|
84
84
|
}
|
|
85
|
-
const currentOwner = await this.mapper.getPrimaryValue(targetEntity, {
|
|
85
|
+
const [currentOwner] = await this.mapper.getPrimaryValue(targetEntity, {
|
|
86
86
|
[targetRelation.name]: { [entity.primary]: this.primaryValue },
|
|
87
87
|
})
|
|
88
88
|
if (!currentOwner) {
|
|
@@ -94,7 +94,7 @@ export class OneHasOneInverseUpdateInputProcessor implements UpdateInputProcesso
|
|
|
94
94
|
|
|
95
95
|
const result = await this.mapper.updateInternal(
|
|
96
96
|
targetEntity,
|
|
97
|
-
|
|
97
|
+
new CheckedPrimary(currentOwner),
|
|
98
98
|
builder => {
|
|
99
99
|
builder.addPredicates([targetRelation.name])
|
|
100
100
|
builder.addFieldValue(targetRelation.name, null)
|
|
@@ -121,7 +121,7 @@ export class OneHasOneInverseUpdateInputProcessor implements UpdateInputProcesso
|
|
|
121
121
|
{ entity, targetEntity, targetRelation }: Model.OneHasOneInverseContext,
|
|
122
122
|
newOwner: Input.PrimaryValue,
|
|
123
123
|
) {
|
|
124
|
-
const currentOwner = await this.mapper.getPrimaryValue(targetEntity, {
|
|
124
|
+
const [currentOwner] = await this.mapper.getPrimaryValue(targetEntity, {
|
|
125
125
|
[targetRelation.name]: { [entity.primary]: this.primaryValue },
|
|
126
126
|
})
|
|
127
127
|
if (newOwner === currentOwner) {
|
|
@@ -133,7 +133,7 @@ export class OneHasOneInverseUpdateInputProcessor implements UpdateInputProcesso
|
|
|
133
133
|
// todo cascade delete support?
|
|
134
134
|
return [new MutationConstraintViolationError([], ConstraintType.notNull)]
|
|
135
135
|
}
|
|
136
|
-
const disconnectFromCurrentOwner = await this.mapper.updateInternal(targetEntity,
|
|
136
|
+
const disconnectFromCurrentOwner = await this.mapper.updateInternal(targetEntity, new CheckedPrimary(currentOwner), builder => {
|
|
137
137
|
builder.addPredicates([targetRelation.name])
|
|
138
138
|
builder.addFieldValue(targetRelation.name, null)
|
|
139
139
|
})
|
|
@@ -143,7 +143,7 @@ export class OneHasOneInverseUpdateInputProcessor implements UpdateInputProcesso
|
|
|
143
143
|
? await this.mapper.selectField(targetEntity, { [targetEntity.primary]: newOwner }, targetRelation.name)
|
|
144
144
|
: null
|
|
145
145
|
|
|
146
|
-
const connectToNewOwner = await this.mapper.updateInternal(targetEntity,
|
|
146
|
+
const connectToNewOwner = await this.mapper.updateInternal(targetEntity, new CheckedPrimary(newOwner), builder => {
|
|
147
147
|
builder.addPredicates([targetRelation.name])
|
|
148
148
|
builder.addFieldValue(targetRelation.name, this.primaryValue)
|
|
149
149
|
})
|
|
@@ -156,8 +156,8 @@ export class OneHasOneInverseUpdateInputProcessor implements UpdateInputProcesso
|
|
|
156
156
|
return result
|
|
157
157
|
}
|
|
158
158
|
|
|
159
|
-
private async createInternal({ entity, targetEntity, targetRelation, input }: Model.OneHasOneInverseContext & { input:
|
|
160
|
-
const currentOwner = await this.mapper.getPrimaryValue(targetEntity, {
|
|
159
|
+
private async createInternal({ entity, targetEntity, targetRelation, input }: Model.OneHasOneInverseContext & { input: MapperInput.CreateDataInput }) {
|
|
160
|
+
const [currentOwner] = await this.mapper.getPrimaryValue(targetEntity, {
|
|
161
161
|
[targetRelation.name]: { [entity.primary]: this.primaryValue },
|
|
162
162
|
})
|
|
163
163
|
if (currentOwner && !targetRelation.nullable) {
|
|
@@ -166,7 +166,7 @@ export class OneHasOneInverseUpdateInputProcessor implements UpdateInputProcesso
|
|
|
166
166
|
}
|
|
167
167
|
const result: MutationResultList = []
|
|
168
168
|
if (currentOwner) {
|
|
169
|
-
const disconnectFromCurrentOwner = await this.mapper.updateInternal(targetEntity,
|
|
169
|
+
const disconnectFromCurrentOwner = await this.mapper.updateInternal(targetEntity, new CheckedPrimary(currentOwner), builder => {
|
|
170
170
|
builder.addPredicates([targetRelation.name])
|
|
171
171
|
builder.addFieldValue(targetRelation.name, null)
|
|
172
172
|
})
|