@contember/engine-content-api 2.0.0-alpha.20 → 2.0.0-alpha.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/development/index.cjs +1 -1
- package/dist/development/index.js +1 -1
- package/dist/development/src/input-validation/preValidation/InputPreValidator.cjs +1 -1
- package/dist/development/src/input-validation/preValidation/InputPreValidator.cjs.map +1 -1
- package/dist/development/src/input-validation/preValidation/InputPreValidator.js +1 -1
- package/dist/development/src/input-validation/preValidation/InputPreValidator.js.map +1 -1
- package/dist/development/src/inputProcessing/CreateInputVisitor.cjs +10 -10
- package/dist/development/src/inputProcessing/CreateInputVisitor.cjs.map +1 -1
- package/dist/development/src/inputProcessing/CreateInputVisitor.js +10 -10
- package/dist/development/src/inputProcessing/CreateInputVisitor.js.map +1 -1
- package/dist/development/src/inputProcessing/UpdateInputVisitor.cjs +13 -13
- package/dist/development/src/inputProcessing/UpdateInputVisitor.cjs.map +1 -1
- package/dist/development/src/inputProcessing/UpdateInputVisitor.js +13 -13
- package/dist/development/src/inputProcessing/UpdateInputVisitor.js.map +1 -1
- package/dist/development/src/mapper/MutationProcessorHelper.cjs +10 -2
- package/dist/development/src/mapper/MutationProcessorHelper.cjs.map +1 -1
- package/dist/development/src/mapper/MutationProcessorHelper.js +10 -2
- package/dist/development/src/mapper/MutationProcessorHelper.js.map +1 -1
- package/dist/development/src/mapper/Result.cjs +10 -27
- package/dist/development/src/mapper/Result.cjs.map +1 -1
- package/dist/development/src/mapper/Result.js +10 -27
- package/dist/development/src/mapper/Result.js.map +1 -1
- package/dist/development/src/mapper/insert/InsertBuilder.cjs +1 -13
- package/dist/development/src/mapper/insert/InsertBuilder.cjs.map +1 -1
- package/dist/development/src/mapper/insert/InsertBuilder.js +1 -13
- package/dist/development/src/mapper/insert/InsertBuilder.js.map +1 -1
- package/dist/development/src/mapper/insert/Inserter.cjs +43 -21
- package/dist/development/src/mapper/insert/Inserter.cjs.map +1 -1
- package/dist/development/src/mapper/insert/Inserter.js +45 -23
- package/dist/development/src/mapper/insert/Inserter.js.map +1 -1
- package/dist/development/src/mapper/insert/SqlCreateInputProcessor.cjs +22 -76
- package/dist/development/src/mapper/insert/SqlCreateInputProcessor.cjs.map +1 -1
- package/dist/development/src/mapper/insert/SqlCreateInputProcessor.js +22 -76
- package/dist/development/src/mapper/insert/SqlCreateInputProcessor.js.map +1 -1
- package/dist/development/src/mapper/insert/relations/ManyHasManyCreateInputProcessor.cjs +45 -0
- package/dist/development/src/mapper/insert/relations/ManyHasManyCreateInputProcessor.cjs.map +1 -0
- package/dist/development/src/mapper/insert/relations/ManyHasManyCreateInputProcessor.js +45 -0
- package/dist/development/src/mapper/insert/relations/ManyHasManyCreateInputProcessor.js.map +1 -0
- package/dist/development/src/mapper/insert/relations/ManyHasOneCreateInputProcessor.cjs +42 -0
- package/dist/development/src/mapper/insert/relations/ManyHasOneCreateInputProcessor.cjs.map +1 -0
- package/dist/development/src/mapper/insert/relations/ManyHasOneCreateInputProcessor.js +42 -0
- package/dist/development/src/mapper/insert/relations/ManyHasOneCreateInputProcessor.js.map +1 -0
- package/dist/development/src/mapper/insert/relations/OneHasManyCreateInputProcessor.cjs +37 -0
- package/dist/development/src/mapper/insert/relations/OneHasManyCreateInputProcessor.cjs.map +1 -0
- package/dist/development/src/mapper/insert/relations/OneHasManyCreateInputProcessor.js +37 -0
- package/dist/development/src/mapper/insert/relations/OneHasManyCreateInputProcessor.js.map +1 -0
- package/dist/development/src/mapper/{relations → insert/relations}/OneHasOneInverseCreateInputProcessor.cjs +25 -32
- package/dist/development/src/mapper/insert/relations/OneHasOneInverseCreateInputProcessor.cjs.map +1 -0
- package/dist/development/src/mapper/{relations → insert/relations}/OneHasOneInverseCreateInputProcessor.js +25 -32
- package/dist/development/src/mapper/insert/relations/OneHasOneInverseCreateInputProcessor.js.map +1 -0
- package/dist/development/src/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.cjs +67 -0
- package/dist/development/src/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.cjs.map +1 -0
- package/dist/development/src/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.js +67 -0
- package/dist/development/src/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.js.map +1 -0
- package/dist/development/src/mapper/update/SqlUpdateInputProcessor.cjs +36 -36
- package/dist/development/src/mapper/update/SqlUpdateInputProcessor.cjs.map +1 -1
- package/dist/development/src/mapper/update/SqlUpdateInputProcessor.js +36 -36
- package/dist/development/src/mapper/update/SqlUpdateInputProcessor.js.map +1 -1
- package/dist/development/src/mapper/update/UpdateBuilder.cjs +2 -14
- package/dist/development/src/mapper/update/UpdateBuilder.cjs.map +1 -1
- package/dist/development/src/mapper/update/UpdateBuilder.js +2 -14
- package/dist/development/src/mapper/update/UpdateBuilder.js.map +1 -1
- package/dist/development/src/mapper/update/Updater.cjs +45 -17
- package/dist/development/src/mapper/update/Updater.cjs.map +1 -1
- package/dist/development/src/mapper/update/Updater.js +47 -19
- package/dist/development/src/mapper/update/Updater.js.map +1 -1
- package/dist/development/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.cjs +89 -0
- package/dist/development/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.cjs.map +1 -0
- package/dist/development/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.js +89 -0
- package/dist/development/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.js.map +1 -0
- package/dist/development/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.cjs +89 -0
- package/dist/development/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.cjs.map +1 -0
- package/dist/development/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.js +89 -0
- package/dist/development/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.js.map +1 -0
- package/dist/development/src/mapper/update/relations/OneHasManyUpdateInputProcessor.cjs +86 -0
- package/dist/development/src/mapper/update/relations/OneHasManyUpdateInputProcessor.cjs.map +1 -0
- package/dist/development/src/mapper/update/relations/OneHasManyUpdateInputProcessor.js +86 -0
- package/dist/development/src/mapper/update/relations/OneHasManyUpdateInputProcessor.js.map +1 -0
- package/dist/development/src/mapper/{relations → update/relations}/OneHasOneInverseUpdateInputProcessor.cjs +83 -66
- package/dist/development/src/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.cjs.map +1 -0
- package/dist/development/src/mapper/{relations → update/relations}/OneHasOneInverseUpdateInputProcessor.js +83 -66
- package/dist/development/src/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.js.map +1 -0
- package/dist/development/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.cjs +187 -0
- package/dist/development/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.cjs.map +1 -0
- package/dist/development/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.js +187 -0
- package/dist/development/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.js.map +1 -0
- package/dist/development/src/resolvers/MutationResolver.cjs +1 -1
- package/dist/development/src/resolvers/MutationResolver.js +1 -1
- package/dist/production/index.cjs +1 -1
- package/dist/production/index.js +1 -1
- package/dist/production/src/input-validation/preValidation/InputPreValidator.cjs +1 -1
- package/dist/production/src/input-validation/preValidation/InputPreValidator.cjs.map +1 -1
- package/dist/production/src/input-validation/preValidation/InputPreValidator.js +1 -1
- package/dist/production/src/input-validation/preValidation/InputPreValidator.js.map +1 -1
- package/dist/production/src/inputProcessing/CreateInputVisitor.cjs +10 -10
- package/dist/production/src/inputProcessing/CreateInputVisitor.cjs.map +1 -1
- package/dist/production/src/inputProcessing/CreateInputVisitor.js +10 -10
- package/dist/production/src/inputProcessing/CreateInputVisitor.js.map +1 -1
- package/dist/production/src/inputProcessing/UpdateInputVisitor.cjs +13 -13
- package/dist/production/src/inputProcessing/UpdateInputVisitor.cjs.map +1 -1
- package/dist/production/src/inputProcessing/UpdateInputVisitor.js +13 -13
- package/dist/production/src/inputProcessing/UpdateInputVisitor.js.map +1 -1
- package/dist/production/src/mapper/MutationProcessorHelper.cjs +10 -2
- package/dist/production/src/mapper/MutationProcessorHelper.cjs.map +1 -1
- package/dist/production/src/mapper/MutationProcessorHelper.js +10 -2
- package/dist/production/src/mapper/MutationProcessorHelper.js.map +1 -1
- package/dist/production/src/mapper/Result.cjs +10 -27
- package/dist/production/src/mapper/Result.cjs.map +1 -1
- package/dist/production/src/mapper/Result.js +10 -27
- package/dist/production/src/mapper/Result.js.map +1 -1
- package/dist/production/src/mapper/insert/InsertBuilder.cjs +1 -13
- package/dist/production/src/mapper/insert/InsertBuilder.cjs.map +1 -1
- package/dist/production/src/mapper/insert/InsertBuilder.js +1 -13
- package/dist/production/src/mapper/insert/InsertBuilder.js.map +1 -1
- package/dist/production/src/mapper/insert/Inserter.cjs +43 -21
- package/dist/production/src/mapper/insert/Inserter.cjs.map +1 -1
- package/dist/production/src/mapper/insert/Inserter.js +45 -23
- package/dist/production/src/mapper/insert/Inserter.js.map +1 -1
- package/dist/production/src/mapper/insert/SqlCreateInputProcessor.cjs +22 -76
- package/dist/production/src/mapper/insert/SqlCreateInputProcessor.cjs.map +1 -1
- package/dist/production/src/mapper/insert/SqlCreateInputProcessor.js +22 -76
- package/dist/production/src/mapper/insert/SqlCreateInputProcessor.js.map +1 -1
- package/dist/production/src/mapper/insert/relations/ManyHasManyCreateInputProcessor.cjs +45 -0
- package/dist/production/src/mapper/insert/relations/ManyHasManyCreateInputProcessor.cjs.map +1 -0
- package/dist/production/src/mapper/insert/relations/ManyHasManyCreateInputProcessor.js +45 -0
- package/dist/production/src/mapper/insert/relations/ManyHasManyCreateInputProcessor.js.map +1 -0
- package/dist/production/src/mapper/insert/relations/ManyHasOneCreateInputProcessor.cjs +42 -0
- package/dist/production/src/mapper/insert/relations/ManyHasOneCreateInputProcessor.cjs.map +1 -0
- package/dist/production/src/mapper/insert/relations/ManyHasOneCreateInputProcessor.js +42 -0
- package/dist/production/src/mapper/insert/relations/ManyHasOneCreateInputProcessor.js.map +1 -0
- package/dist/production/src/mapper/insert/relations/OneHasManyCreateInputProcessor.cjs +37 -0
- package/dist/production/src/mapper/insert/relations/OneHasManyCreateInputProcessor.cjs.map +1 -0
- package/dist/production/src/mapper/insert/relations/OneHasManyCreateInputProcessor.js +37 -0
- package/dist/production/src/mapper/insert/relations/OneHasManyCreateInputProcessor.js.map +1 -0
- package/dist/production/src/mapper/{relations → insert/relations}/OneHasOneInverseCreateInputProcessor.cjs +25 -32
- package/dist/production/src/mapper/insert/relations/OneHasOneInverseCreateInputProcessor.cjs.map +1 -0
- package/dist/production/src/mapper/{relations → insert/relations}/OneHasOneInverseCreateInputProcessor.js +25 -32
- package/dist/production/src/mapper/insert/relations/OneHasOneInverseCreateInputProcessor.js.map +1 -0
- package/dist/production/src/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.cjs +67 -0
- package/dist/production/src/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.cjs.map +1 -0
- package/dist/production/src/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.js +67 -0
- package/dist/production/src/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.js.map +1 -0
- package/dist/production/src/mapper/update/SqlUpdateInputProcessor.cjs +36 -36
- package/dist/production/src/mapper/update/SqlUpdateInputProcessor.cjs.map +1 -1
- package/dist/production/src/mapper/update/SqlUpdateInputProcessor.js +36 -36
- package/dist/production/src/mapper/update/SqlUpdateInputProcessor.js.map +1 -1
- package/dist/production/src/mapper/update/UpdateBuilder.cjs +2 -14
- package/dist/production/src/mapper/update/UpdateBuilder.cjs.map +1 -1
- package/dist/production/src/mapper/update/UpdateBuilder.js +2 -14
- package/dist/production/src/mapper/update/UpdateBuilder.js.map +1 -1
- package/dist/production/src/mapper/update/Updater.cjs +45 -17
- package/dist/production/src/mapper/update/Updater.cjs.map +1 -1
- package/dist/production/src/mapper/update/Updater.js +47 -19
- package/dist/production/src/mapper/update/Updater.js.map +1 -1
- package/dist/production/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.cjs +89 -0
- package/dist/production/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.cjs.map +1 -0
- package/dist/production/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.js +89 -0
- package/dist/production/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.js.map +1 -0
- package/dist/production/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.cjs +89 -0
- package/dist/production/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.cjs.map +1 -0
- package/dist/production/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.js +89 -0
- package/dist/production/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.js.map +1 -0
- package/dist/production/src/mapper/update/relations/OneHasManyUpdateInputProcessor.cjs +86 -0
- package/dist/production/src/mapper/update/relations/OneHasManyUpdateInputProcessor.cjs.map +1 -0
- package/dist/production/src/mapper/update/relations/OneHasManyUpdateInputProcessor.js +86 -0
- package/dist/production/src/mapper/update/relations/OneHasManyUpdateInputProcessor.js.map +1 -0
- package/dist/production/src/mapper/{relations → update/relations}/OneHasOneInverseUpdateInputProcessor.cjs +83 -66
- package/dist/production/src/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.cjs.map +1 -0
- package/dist/production/src/mapper/{relations → update/relations}/OneHasOneInverseUpdateInputProcessor.js +83 -66
- package/dist/production/src/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.js.map +1 -0
- package/dist/production/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.cjs +187 -0
- package/dist/production/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.cjs.map +1 -0
- package/dist/production/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.js +187 -0
- package/dist/production/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.js.map +1 -0
- package/dist/production/src/resolvers/MutationResolver.cjs +1 -1
- package/dist/production/src/resolvers/MutationResolver.js +1 -1
- package/dist/tests/tsconfig.tsbuildinfo +1 -1
- package/dist/types/input-validation/preValidation/InputPreValidator.d.ts.map +1 -1
- package/dist/types/inputProcessing/CreateInputVisitor.d.ts +8 -8
- package/dist/types/inputProcessing/CreateInputVisitor.d.ts.map +1 -1
- package/dist/types/inputProcessing/UpdateInputVisitor.d.ts +8 -8
- package/dist/types/inputProcessing/UpdateInputVisitor.d.ts.map +1 -1
- package/dist/types/mapper/MutationProcessorHelper.d.ts +2 -2
- package/dist/types/mapper/MutationProcessorHelper.d.ts.map +1 -1
- package/dist/types/mapper/Result.d.ts +11 -5
- package/dist/types/mapper/Result.d.ts.map +1 -1
- package/dist/types/mapper/insert/InsertBuilder.d.ts +3 -7
- package/dist/types/mapper/insert/InsertBuilder.d.ts.map +1 -1
- package/dist/types/mapper/insert/Inserter.d.ts +0 -1
- package/dist/types/mapper/insert/Inserter.d.ts.map +1 -1
- package/dist/types/mapper/insert/SqlCreateInputProcessor.d.ts +11 -8
- package/dist/types/mapper/insert/SqlCreateInputProcessor.d.ts.map +1 -1
- package/dist/types/mapper/insert/relations/ManyHasManyCreateInputProcessor.d.ts +24 -0
- package/dist/types/mapper/insert/relations/ManyHasManyCreateInputProcessor.d.ts.map +1 -0
- package/dist/types/mapper/insert/relations/ManyHasOneCreateInputProcessor.d.ts +23 -0
- package/dist/types/mapper/insert/relations/ManyHasOneCreateInputProcessor.d.ts.map +1 -0
- package/dist/types/mapper/insert/relations/OneHasManyCreateInputProcessor.d.ts +26 -0
- package/dist/types/mapper/insert/relations/OneHasManyCreateInputProcessor.d.ts.map +1 -0
- package/dist/types/mapper/insert/relations/OneHasOneInverseCreateInputProcessor.d.ts +29 -0
- package/dist/types/mapper/insert/relations/OneHasOneInverseCreateInputProcessor.d.ts.map +1 -0
- package/dist/types/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.d.ts +24 -0
- package/dist/types/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.d.ts.map +1 -0
- package/dist/types/mapper/update/SqlUpdateInputProcessor.d.ts +10 -7
- package/dist/types/mapper/update/SqlUpdateInputProcessor.d.ts.map +1 -1
- package/dist/types/mapper/update/UpdateBuilder.d.ts +2 -6
- package/dist/types/mapper/update/UpdateBuilder.d.ts.map +1 -1
- package/dist/types/mapper/update/Updater.d.ts +0 -1
- package/dist/types/mapper/update/Updater.d.ts.map +1 -1
- package/dist/types/mapper/update/relations/ManyHasManyUpdateInputProcessor.d.ts +46 -0
- package/dist/types/mapper/update/relations/ManyHasManyUpdateInputProcessor.d.ts.map +1 -0
- package/dist/types/mapper/update/relations/ManyHasOneUpdateInputProcessor.d.ts +40 -0
- package/dist/types/mapper/update/relations/ManyHasOneUpdateInputProcessor.d.ts.map +1 -0
- package/dist/types/mapper/update/relations/OneHasManyUpdateInputProcessor.d.ts +46 -0
- package/dist/types/mapper/update/relations/OneHasManyUpdateInputProcessor.d.ts.map +1 -0
- package/dist/types/mapper/{relations → update/relations}/OneHasOneInverseUpdateInputProcessor.d.ts +17 -13
- package/dist/types/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.d.ts.map +1 -0
- package/dist/types/mapper/{relations → update/relations}/OneHasOneOwningUpdateInputProcessor.d.ts +19 -16
- package/dist/types/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.d.ts.map +1 -0
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +10 -10
- package/src/input-validation/preValidation/InputPreValidator.ts +3 -5
- package/src/inputProcessing/CreateInputVisitor.ts +14 -14
- package/src/inputProcessing/UpdateInputVisitor.ts +17 -17
- package/src/mapper/MutationProcessorHelper.ts +16 -8
- package/src/mapper/Result.ts +11 -47
- package/src/mapper/insert/InsertBuilder.ts +8 -22
- package/src/mapper/insert/Inserter.ts +53 -40
- package/src/mapper/insert/SqlCreateInputProcessor.ts +35 -88
- package/src/mapper/insert/relations/ManyHasManyCreateInputProcessor.ts +59 -0
- package/src/mapper/insert/relations/ManyHasOneCreateInputProcessor.ts +57 -0
- package/src/mapper/insert/relations/OneHasManyCreateInputProcessor.ts +50 -0
- package/src/mapper/insert/relations/OneHasOneInverseCreateInputProcessor.ts +91 -0
- package/src/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.ts +87 -0
- package/src/mapper/update/SqlUpdateInputProcessor.ts +48 -46
- package/src/mapper/update/UpdateBuilder.ts +9 -23
- package/src/mapper/update/Updater.ts +53 -34
- package/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.ts +116 -0
- package/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.ts +125 -0
- package/src/mapper/update/relations/OneHasManyUpdateInputProcessor.ts +111 -0
- package/src/mapper/{relations → update/relations}/OneHasOneInverseUpdateInputProcessor.ts +93 -73
- package/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.ts +243 -0
- package/tests/cases/integration/graphQlRequests/insert/oneHasMany/create.test.ts +8 -8
- package/tests/cases/integration/graphQlRequests/update/oneHasMany/connectOrCreate.test.ts +4 -4
- package/dist/development/src/mapper/DataManipulationBuilder.cjs +0 -5
- package/dist/development/src/mapper/DataManipulationBuilder.cjs.map +0 -1
- package/dist/development/src/mapper/DataManipulationBuilder.js +0 -5
- package/dist/development/src/mapper/DataManipulationBuilder.js.map +0 -1
- package/dist/development/src/mapper/relations/ManyHasManyInputProcessor.cjs +0 -75
- package/dist/development/src/mapper/relations/ManyHasManyInputProcessor.cjs.map +0 -1
- package/dist/development/src/mapper/relations/ManyHasManyInputProcessor.js +0 -75
- package/dist/development/src/mapper/relations/ManyHasManyInputProcessor.js.map +0 -1
- package/dist/development/src/mapper/relations/ManyHasOneInputProcessor.cjs +0 -114
- package/dist/development/src/mapper/relations/ManyHasOneInputProcessor.cjs.map +0 -1
- package/dist/development/src/mapper/relations/ManyHasOneInputProcessor.js +0 -114
- package/dist/development/src/mapper/relations/ManyHasOneInputProcessor.js.map +0 -1
- package/dist/development/src/mapper/relations/OneHasManyInputProcessor.cjs +0 -72
- package/dist/development/src/mapper/relations/OneHasManyInputProcessor.cjs.map +0 -1
- package/dist/development/src/mapper/relations/OneHasManyInputProcessor.js +0 -72
- package/dist/development/src/mapper/relations/OneHasManyInputProcessor.js.map +0 -1
- package/dist/development/src/mapper/relations/OneHasOneInverseCreateInputProcessor.cjs.map +0 -1
- package/dist/development/src/mapper/relations/OneHasOneInverseCreateInputProcessor.js.map +0 -1
- package/dist/development/src/mapper/relations/OneHasOneInverseUpdateInputProcessor.cjs.map +0 -1
- package/dist/development/src/mapper/relations/OneHasOneInverseUpdateInputProcessor.js.map +0 -1
- package/dist/development/src/mapper/relations/OneHasOneOwningCreateInputProcessor.cjs +0 -71
- package/dist/development/src/mapper/relations/OneHasOneOwningCreateInputProcessor.cjs.map +0 -1
- package/dist/development/src/mapper/relations/OneHasOneOwningCreateInputProcessor.js +0 -71
- package/dist/development/src/mapper/relations/OneHasOneOwningCreateInputProcessor.js.map +0 -1
- package/dist/development/src/mapper/relations/OneHasOneOwningUpdateInputProcessor.cjs +0 -200
- package/dist/development/src/mapper/relations/OneHasOneOwningUpdateInputProcessor.cjs.map +0 -1
- package/dist/development/src/mapper/relations/OneHasOneOwningUpdateInputProcessor.js +0 -200
- package/dist/development/src/mapper/relations/OneHasOneOwningUpdateInputProcessor.js.map +0 -1
- package/dist/production/src/mapper/DataManipulationBuilder.cjs +0 -5
- package/dist/production/src/mapper/DataManipulationBuilder.cjs.map +0 -1
- package/dist/production/src/mapper/DataManipulationBuilder.js +0 -5
- package/dist/production/src/mapper/DataManipulationBuilder.js.map +0 -1
- package/dist/production/src/mapper/relations/ManyHasManyInputProcessor.cjs +0 -75
- package/dist/production/src/mapper/relations/ManyHasManyInputProcessor.cjs.map +0 -1
- package/dist/production/src/mapper/relations/ManyHasManyInputProcessor.js +0 -75
- package/dist/production/src/mapper/relations/ManyHasManyInputProcessor.js.map +0 -1
- package/dist/production/src/mapper/relations/ManyHasOneInputProcessor.cjs +0 -114
- package/dist/production/src/mapper/relations/ManyHasOneInputProcessor.cjs.map +0 -1
- package/dist/production/src/mapper/relations/ManyHasOneInputProcessor.js +0 -114
- package/dist/production/src/mapper/relations/ManyHasOneInputProcessor.js.map +0 -1
- package/dist/production/src/mapper/relations/OneHasManyInputProcessor.cjs +0 -72
- package/dist/production/src/mapper/relations/OneHasManyInputProcessor.cjs.map +0 -1
- package/dist/production/src/mapper/relations/OneHasManyInputProcessor.js +0 -72
- package/dist/production/src/mapper/relations/OneHasManyInputProcessor.js.map +0 -1
- package/dist/production/src/mapper/relations/OneHasOneInverseCreateInputProcessor.cjs.map +0 -1
- package/dist/production/src/mapper/relations/OneHasOneInverseCreateInputProcessor.js.map +0 -1
- package/dist/production/src/mapper/relations/OneHasOneInverseUpdateInputProcessor.cjs.map +0 -1
- package/dist/production/src/mapper/relations/OneHasOneInverseUpdateInputProcessor.js.map +0 -1
- package/dist/production/src/mapper/relations/OneHasOneOwningCreateInputProcessor.cjs +0 -71
- package/dist/production/src/mapper/relations/OneHasOneOwningCreateInputProcessor.cjs.map +0 -1
- package/dist/production/src/mapper/relations/OneHasOneOwningCreateInputProcessor.js +0 -71
- package/dist/production/src/mapper/relations/OneHasOneOwningCreateInputProcessor.js.map +0 -1
- package/dist/production/src/mapper/relations/OneHasOneOwningUpdateInputProcessor.cjs +0 -200
- package/dist/production/src/mapper/relations/OneHasOneOwningUpdateInputProcessor.cjs.map +0 -1
- package/dist/production/src/mapper/relations/OneHasOneOwningUpdateInputProcessor.js +0 -200
- package/dist/production/src/mapper/relations/OneHasOneOwningUpdateInputProcessor.js.map +0 -1
- package/dist/types/mapper/DataManipulationBuilder.d.ts +0 -7
- package/dist/types/mapper/DataManipulationBuilder.d.ts.map +0 -1
- package/dist/types/mapper/relations/ManyHasManyInputProcessor.d.ts +0 -32
- package/dist/types/mapper/relations/ManyHasManyInputProcessor.d.ts.map +0 -1
- package/dist/types/mapper/relations/ManyHasOneInputProcessor.d.ts +0 -32
- package/dist/types/mapper/relations/ManyHasOneInputProcessor.d.ts.map +0 -1
- package/dist/types/mapper/relations/OneHasManyInputProcessor.d.ts +0 -29
- package/dist/types/mapper/relations/OneHasManyInputProcessor.d.ts.map +0 -1
- package/dist/types/mapper/relations/OneHasOneInverseCreateInputProcessor.d.ts +0 -21
- package/dist/types/mapper/relations/OneHasOneInverseCreateInputProcessor.d.ts.map +0 -1
- package/dist/types/mapper/relations/OneHasOneInverseUpdateInputProcessor.d.ts.map +0 -1
- package/dist/types/mapper/relations/OneHasOneOwningCreateInputProcessor.d.ts +0 -21
- package/dist/types/mapper/relations/OneHasOneOwningCreateInputProcessor.d.ts.map +0 -1
- package/dist/types/mapper/relations/OneHasOneOwningUpdateInputProcessor.d.ts.map +0 -1
- package/src/mapper/DataManipulationBuilder.ts +0 -12
- package/src/mapper/relations/ManyHasManyInputProcessor.ts +0 -108
- package/src/mapper/relations/ManyHasOneInputProcessor.ts +0 -158
- package/src/mapper/relations/OneHasManyInputProcessor.ts +0 -101
- package/src/mapper/relations/OneHasOneInverseCreateInputProcessor.ts +0 -99
- package/src/mapper/relations/OneHasOneOwningCreateInputProcessor.ts +0 -92
- package/src/mapper/relations/OneHasOneOwningUpdateInputProcessor.ts +0 -253
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"OneHasOneInverseCreateInputProcessor.cjs","sources":["../../../../../../packages/engine-content-api/src/mapper/relations/OneHasOneInverseCreateInputProcessor.ts"],"sourcesContent":["import { InsertBuilder } from '../insert'\nimport { Mapper } from '../Mapper'\nimport {\n\tConstraintType,\n\tMutationConstraintViolationError,\n\tMutationEntryNotFoundError,\n\tMutationResultList,\n} from '../Result'\nimport { CheckedPrimary } from '../CheckedPrimary'\nimport { Input, Model } from '@contember/schema'\n\nexport class OneHasOneInverseCreateInputProcessor {\n\tconstructor(\n\t\tprivate readonly insertBuilder: InsertBuilder,\n\t\tprivate readonly mapper: Mapper,\n\t) {\n\t}\n\n\tpublic async connect(context: Model.OneHasOneInverseContext & { input: Input.UniqueWhere }) {\n\t\tconst { targetEntity, input } = context\n\t\tconst primary = await this.insertBuilder.insert\n\t\tif (!primary) {\n\t\t\treturn []\n\t\t}\n\t\tconst owner = await this.mapper.getPrimaryValue(targetEntity, input)\n\t\tif (!owner) {\n\t\t\treturn [new MutationEntryNotFoundError([], input)]\n\t\t}\n\n\t\treturn await this.connectInternal({ ...context, input: new CheckedPrimary(owner) }, primary)\n\t}\n\n\n\tpublic async create(\n\t\tcontext: Model.OneHasOneInverseContext & { input: Input.CreateDataInput },\n\t) {\n\t\tconst primary = await this.insertBuilder.insert\n\t\tif (!primary) {\n\t\t\treturn []\n\t\t}\n\t\treturn await this.mapper.insert(context.targetEntity, context.input, builder => {\n\t\t\tbuilder.addPredicates([context.targetRelation.name])\n\t\t\tbuilder.addFieldValue(context.targetRelation.name, primary)\n\t\t})\n\t}\n\n\tpublic async connectOrCreate(\n\t\t{ input, ...context }: Model.OneHasOneInverseContext & { input: Input.ConnectOrCreateInput },\n\t) {\n\t\tconst primary = await this.insertBuilder.insert\n\t\tif (!primary) {\n\t\t\treturn []\n\t\t}\n\t\tconst owner = await this.mapper.getPrimaryValue(context.targetEntity, input.connect)\n\t\tif (owner) {\n\t\t\treturn await this.connectInternal({ ...context, input: new CheckedPrimary(owner) }, primary)\n\t\t}\n\n\t\treturn await this.createInternal({ input: input.create, ...context }, primary)\n\t}\n\n\tprivate async connectInternal(\n\t\t{ entity, targetEntity, targetRelation, relation, input }: Model.OneHasOneInverseContext & { input: CheckedPrimary },\n\t\tprimary: Input.PrimaryValue,\n\t) {\n\n\t\tconst currentInverseSideOfOwner = await this.mapper.selectField(targetEntity, input, targetRelation.name)\n\t\tconst orphanResult: MutationResultList = []\n\t\tif (currentInverseSideOfOwner) {\n\t\t\tif (targetRelation.orphanRemoval) {\n\t\t\t\tconst orphanUnique = { [entity.primary]: currentInverseSideOfOwner }\n\t\t\t\tconst orphanDelete = await this.mapper.delete(entity, orphanUnique)\n\t\t\t\torphanResult.push(...orphanDelete)\n\t\t\t} else if (!relation.nullable) {\n\t\t\t\treturn [new MutationConstraintViolationError([], ConstraintType.notNull)]\n\t\t\t}\n\t\t}\n\n\t\tconst connectResult = await this.mapper.updateInternal(targetEntity, input, update => {\n\t\t\tupdate.addPredicates([targetRelation.name])\n\t\t\tupdate.addFieldValue(targetRelation.name, primary)\n\t\t})\n\n\t\treturn [\n\t\t\t...connectResult,\n\t\t\t...orphanResult,\n\t\t]\n\t}\n\n\tprivate async createInternal(\n\t\tcontext: Model.OneHasOneInverseContext & { input: Input.CreateDataInput },\n\t\tprimary: Input.PrimaryValue,\n\t) {\n\t\treturn await this.mapper.insert(context.targetEntity, context.input, builder => {\n\t\t\tbuilder.addPredicates([context.targetRelation.name])\n\t\t\tbuilder.addFieldValue(context.targetRelation.name, primary)\n\t\t})\n\t}\n}\n"],"names":["MutationEntryNotFoundError","CheckedPrimary","MutationConstraintViolationError","ConstraintType"],"mappings":";;;;AAWO,MAAM,qCAAqC;AAAA,EACjD,YACkB,eACA,QAChB;AAFgB,SAAA,gBAAA;AACA,SAAA,SAAA;AAAA,EAElB;AAAA,EAEA,MAAa,QAAQ,SAAuE;AACrF,UAAA,EAAE,cAAc,MAAU,IAAA;AAC1B,UAAA,UAAU,MAAM,KAAK,cAAc;AACzC,QAAI,CAAC,SAAS;AACb,aAAO;IACR;AACA,UAAM,QAAQ,MAAM,KAAK,OAAO,gBAAgB,cAAc,KAAK;AACnE,QAAI,CAAC,OAAO;AACX,aAAO,CAAC,IAAIA,OAAA,2BAA2B,IAAI,KAAK,CAAC;AAAA,IAClD;AAEA,WAAO,MAAM,KAAK,gBAAgB,EAAE,GAAG,SAAS,OAAO,IAAIC,8BAAe,KAAK,EAAE,GAAG,OAAO;AAAA,EAC5F;AAAA,EAGA,MAAa,OACZ,SACC;AACK,UAAA,UAAU,MAAM,KAAK,cAAc;AACzC,QAAI,CAAC,SAAS;AACb,aAAO;IACR;AACO,WAAA,MAAM,KAAK,OAAO,OAAO,QAAQ,cAAc,QAAQ,OAAO,CAAW,YAAA;AAC/E,cAAQ,cAAc,CAAC,QAAQ,eAAe,IAAI,CAAC;AACnD,cAAQ,cAAc,QAAQ,eAAe,MAAM,OAAO;AAAA,IAAA,CAC1D;AAAA,EACF;AAAA,EAEA,MAAa,gBACZ,EAAE,OAAO,GAAG,WACX;AACK,UAAA,UAAU,MAAM,KAAK,cAAc;AACzC,QAAI,CAAC,SAAS;AACb,aAAO;IACR;AACM,UAAA,QAAQ,MAAM,KAAK,OAAO,gBAAgB,QAAQ,cAAc,MAAM,OAAO;AACnF,QAAI,OAAO;AACV,aAAO,MAAM,KAAK,gBAAgB,EAAE,GAAG,SAAS,OAAO,IAAIA,8BAAe,KAAK,EAAE,GAAG,OAAO;AAAA,IAC5F;AAEO,WAAA,MAAM,KAAK,eAAe,EAAE,OAAO,MAAM,QAAQ,GAAG,WAAW,OAAO;AAAA,EAC9E;AAAA,EAEA,MAAc,gBACb,EAAE,QAAQ,cAAc,gBAAgB,UAAU,MAAM,GACxD,SACC;AAEK,UAAA,4BAA4B,MAAM,KAAK,OAAO,YAAY,cAAc,OAAO,eAAe,IAAI;AACxG,UAAM,eAAmC,CAAA;AACzC,QAAI,2BAA2B;AAC9B,UAAI,eAAe,eAAe;AACjC,cAAM,eAAe,EAAE,CAAC,OAAO,OAAO,GAAG,0BAA0B;AACnE,cAAM,eAAe,MAAM,KAAK,OAAO,OAAO,QAAQ,YAAY;AACrD,qBAAA,KAAK,GAAG,YAAY;AAAA,MAAA,WACvB,CAAC,SAAS,UAAU;AAC9B,eAAO,CAAC,IAAIC,OAAAA,iCAAiC,CAAA,GAAIC,OAAAA,eAAe,OAAO,CAAC;AAAA,MACzE;AAAA,IACD;AAEA,UAAM,gBAAgB,MAAM,KAAK,OAAO,eAAe,cAAc,OAAO,CAAU,WAAA;AACrF,aAAO,cAAc,CAAC,eAAe,IAAI,CAAC;AACnC,aAAA,cAAc,eAAe,MAAM,OAAO;AAAA,IAAA,CACjD;AAEM,WAAA;AAAA,MACN,GAAG;AAAA,MACH,GAAG;AAAA,IAAA;AAAA,EAEL;AAAA,EAEA,MAAc,eACb,SACA,SACC;AACM,WAAA,MAAM,KAAK,OAAO,OAAO,QAAQ,cAAc,QAAQ,OAAO,CAAW,YAAA;AAC/E,cAAQ,cAAc,CAAC,QAAQ,eAAe,IAAI,CAAC;AACnD,cAAQ,cAAc,QAAQ,eAAe,MAAM,OAAO;AAAA,IAAA,CAC1D;AAAA,EACF;AACD;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"OneHasOneInverseCreateInputProcessor.js","sources":["../../../../../../packages/engine-content-api/src/mapper/relations/OneHasOneInverseCreateInputProcessor.ts"],"sourcesContent":["import { InsertBuilder } from '../insert'\nimport { Mapper } from '../Mapper'\nimport {\n\tConstraintType,\n\tMutationConstraintViolationError,\n\tMutationEntryNotFoundError,\n\tMutationResultList,\n} from '../Result'\nimport { CheckedPrimary } from '../CheckedPrimary'\nimport { Input, Model } from '@contember/schema'\n\nexport class OneHasOneInverseCreateInputProcessor {\n\tconstructor(\n\t\tprivate readonly insertBuilder: InsertBuilder,\n\t\tprivate readonly mapper: Mapper,\n\t) {\n\t}\n\n\tpublic async connect(context: Model.OneHasOneInverseContext & { input: Input.UniqueWhere }) {\n\t\tconst { targetEntity, input } = context\n\t\tconst primary = await this.insertBuilder.insert\n\t\tif (!primary) {\n\t\t\treturn []\n\t\t}\n\t\tconst owner = await this.mapper.getPrimaryValue(targetEntity, input)\n\t\tif (!owner) {\n\t\t\treturn [new MutationEntryNotFoundError([], input)]\n\t\t}\n\n\t\treturn await this.connectInternal({ ...context, input: new CheckedPrimary(owner) }, primary)\n\t}\n\n\n\tpublic async create(\n\t\tcontext: Model.OneHasOneInverseContext & { input: Input.CreateDataInput },\n\t) {\n\t\tconst primary = await this.insertBuilder.insert\n\t\tif (!primary) {\n\t\t\treturn []\n\t\t}\n\t\treturn await this.mapper.insert(context.targetEntity, context.input, builder => {\n\t\t\tbuilder.addPredicates([context.targetRelation.name])\n\t\t\tbuilder.addFieldValue(context.targetRelation.name, primary)\n\t\t})\n\t}\n\n\tpublic async connectOrCreate(\n\t\t{ input, ...context }: Model.OneHasOneInverseContext & { input: Input.ConnectOrCreateInput },\n\t) {\n\t\tconst primary = await this.insertBuilder.insert\n\t\tif (!primary) {\n\t\t\treturn []\n\t\t}\n\t\tconst owner = await this.mapper.getPrimaryValue(context.targetEntity, input.connect)\n\t\tif (owner) {\n\t\t\treturn await this.connectInternal({ ...context, input: new CheckedPrimary(owner) }, primary)\n\t\t}\n\n\t\treturn await this.createInternal({ input: input.create, ...context }, primary)\n\t}\n\n\tprivate async connectInternal(\n\t\t{ entity, targetEntity, targetRelation, relation, input }: Model.OneHasOneInverseContext & { input: CheckedPrimary },\n\t\tprimary: Input.PrimaryValue,\n\t) {\n\n\t\tconst currentInverseSideOfOwner = await this.mapper.selectField(targetEntity, input, targetRelation.name)\n\t\tconst orphanResult: MutationResultList = []\n\t\tif (currentInverseSideOfOwner) {\n\t\t\tif (targetRelation.orphanRemoval) {\n\t\t\t\tconst orphanUnique = { [entity.primary]: currentInverseSideOfOwner }\n\t\t\t\tconst orphanDelete = await this.mapper.delete(entity, orphanUnique)\n\t\t\t\torphanResult.push(...orphanDelete)\n\t\t\t} else if (!relation.nullable) {\n\t\t\t\treturn [new MutationConstraintViolationError([], ConstraintType.notNull)]\n\t\t\t}\n\t\t}\n\n\t\tconst connectResult = await this.mapper.updateInternal(targetEntity, input, update => {\n\t\t\tupdate.addPredicates([targetRelation.name])\n\t\t\tupdate.addFieldValue(targetRelation.name, primary)\n\t\t})\n\n\t\treturn [\n\t\t\t...connectResult,\n\t\t\t...orphanResult,\n\t\t]\n\t}\n\n\tprivate async createInternal(\n\t\tcontext: Model.OneHasOneInverseContext & { input: Input.CreateDataInput },\n\t\tprimary: Input.PrimaryValue,\n\t) {\n\t\treturn await this.mapper.insert(context.targetEntity, context.input, builder => {\n\t\t\tbuilder.addPredicates([context.targetRelation.name])\n\t\t\tbuilder.addFieldValue(context.targetRelation.name, primary)\n\t\t})\n\t}\n}\n"],"names":[],"mappings":";;AAWO,MAAM,qCAAqC;AAAA,EACjD,YACkB,eACA,QAChB;AAFgB,SAAA,gBAAA;AACA,SAAA,SAAA;AAAA,EAElB;AAAA,EAEA,MAAa,QAAQ,SAAuE;AACrF,UAAA,EAAE,cAAc,MAAU,IAAA;AAC1B,UAAA,UAAU,MAAM,KAAK,cAAc;AACzC,QAAI,CAAC,SAAS;AACb,aAAO;IACR;AACA,UAAM,QAAQ,MAAM,KAAK,OAAO,gBAAgB,cAAc,KAAK;AACnE,QAAI,CAAC,OAAO;AACX,aAAO,CAAC,IAAI,2BAA2B,IAAI,KAAK,CAAC;AAAA,IAClD;AAEA,WAAO,MAAM,KAAK,gBAAgB,EAAE,GAAG,SAAS,OAAO,IAAI,eAAe,KAAK,EAAE,GAAG,OAAO;AAAA,EAC5F;AAAA,EAGA,MAAa,OACZ,SACC;AACK,UAAA,UAAU,MAAM,KAAK,cAAc;AACzC,QAAI,CAAC,SAAS;AACb,aAAO;IACR;AACO,WAAA,MAAM,KAAK,OAAO,OAAO,QAAQ,cAAc,QAAQ,OAAO,CAAW,YAAA;AAC/E,cAAQ,cAAc,CAAC,QAAQ,eAAe,IAAI,CAAC;AACnD,cAAQ,cAAc,QAAQ,eAAe,MAAM,OAAO;AAAA,IAAA,CAC1D;AAAA,EACF;AAAA,EAEA,MAAa,gBACZ,EAAE,OAAO,GAAG,WACX;AACK,UAAA,UAAU,MAAM,KAAK,cAAc;AACzC,QAAI,CAAC,SAAS;AACb,aAAO;IACR;AACM,UAAA,QAAQ,MAAM,KAAK,OAAO,gBAAgB,QAAQ,cAAc,MAAM,OAAO;AACnF,QAAI,OAAO;AACV,aAAO,MAAM,KAAK,gBAAgB,EAAE,GAAG,SAAS,OAAO,IAAI,eAAe,KAAK,EAAE,GAAG,OAAO;AAAA,IAC5F;AAEO,WAAA,MAAM,KAAK,eAAe,EAAE,OAAO,MAAM,QAAQ,GAAG,WAAW,OAAO;AAAA,EAC9E;AAAA,EAEA,MAAc,gBACb,EAAE,QAAQ,cAAc,gBAAgB,UAAU,MAAM,GACxD,SACC;AAEK,UAAA,4BAA4B,MAAM,KAAK,OAAO,YAAY,cAAc,OAAO,eAAe,IAAI;AACxG,UAAM,eAAmC,CAAA;AACzC,QAAI,2BAA2B;AAC9B,UAAI,eAAe,eAAe;AACjC,cAAM,eAAe,EAAE,CAAC,OAAO,OAAO,GAAG,0BAA0B;AACnE,cAAM,eAAe,MAAM,KAAK,OAAO,OAAO,QAAQ,YAAY;AACrD,qBAAA,KAAK,GAAG,YAAY;AAAA,MAAA,WACvB,CAAC,SAAS,UAAU;AAC9B,eAAO,CAAC,IAAI,iCAAiC,CAAA,GAAI,eAAe,OAAO,CAAC;AAAA,MACzE;AAAA,IACD;AAEA,UAAM,gBAAgB,MAAM,KAAK,OAAO,eAAe,cAAc,OAAO,CAAU,WAAA;AACrF,aAAO,cAAc,CAAC,eAAe,IAAI,CAAC;AACnC,aAAA,cAAc,eAAe,MAAM,OAAO;AAAA,IAAA,CACjD;AAEM,WAAA;AAAA,MACN,GAAG;AAAA,MACH,GAAG;AAAA,IAAA;AAAA,EAEL;AAAA,EAEA,MAAc,eACb,SACA,SACC;AACM,WAAA,MAAM,KAAK,OAAO,OAAO,QAAQ,cAAc,QAAQ,OAAO,CAAW,YAAA;AAC/E,cAAQ,cAAc,CAAC,QAAQ,eAAe,IAAI,CAAC;AACnD,cAAQ,cAAc,QAAQ,eAAe,MAAM,OAAO;AAAA,IAAA,CAC1D;AAAA,EACF;AACD;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"OneHasOneInverseUpdateInputProcessor.cjs","sources":["../../../../../../packages/engine-content-api/src/mapper/relations/OneHasOneInverseUpdateInputProcessor.ts"],"sourcesContent":["import {\n\tConstraintType,\n\tMutationConstraintViolationError,\n\tMutationEntryNotFoundError,\n\tMutationNothingToDo,\n\tMutationResultList,\n\tMutationResultType,\n\tNothingToDoReason,\n} from '../Result'\nimport { UpdateInputProcessor } from '../../inputProcessing'\nimport { Input, Model } from '@contember/schema'\nimport { Mapper } from '../Mapper'\n\nexport class OneHasOneInverseUpdateInputProcessor {\n\tconstructor(\n\t\tprivate readonly primaryValue: Input.PrimaryValue,\n\t\tprivate readonly mapper: Mapper,\n\t) {\n\t}\n\n\tpublic async connect({ input, ...ctx }: Model.OneHasOneInverseContext & { input: Input.UniqueWhere }) {\n\t\tconst newOwner = await this.mapper.getPrimaryValue(ctx.targetEntity, input)\n\t\tif (!newOwner) {\n\t\t\treturn [new MutationEntryNotFoundError([], input)]\n\t\t}\n\t\treturn await this.connectInternal(ctx, newOwner)\n\t}\n\n\tpublic async connectOrCreate(\n\t\t{ input, ...ctx }: Model.OneHasOneInverseContext & { input: Input.ConnectOrCreateInput },\n\t) {\n\t\tconst newOwner = await this.mapper.getPrimaryValue(ctx.targetEntity, input.connect)\n\t\tif (newOwner) {\n\t\t\treturn await this.connectInternal(ctx, newOwner)\n\t\t}\n\t\treturn await this.create({ ...ctx, input: input.create })\n\t}\n\n\n\tprivate async connectInternal(\n\t\t{ entity, targetEntity, targetRelation }: Model.OneHasOneInverseContext,\n\t\tnewOwner: Input.PrimaryValue,\n\t) {\n\t\tconst currentOwner = await this.mapper.getPrimaryValue(targetEntity, {\n\t\t\t[targetRelation.name]: { [entity.primary]: this.primaryValue },\n\t\t})\n\t\tif (newOwner === currentOwner) {\n\t\t\treturn [new MutationNothingToDo([], NothingToDoReason.alreadyExists)]\n\t\t}\n\t\tconst result: MutationResultList = []\n\t\tif (currentOwner) {\n\t\t\tif (!targetRelation.nullable) {\n\t\t\t\t// todo cascade delete support?\n\t\t\t\treturn [new MutationConstraintViolationError([], ConstraintType.notNull)]\n\t\t\t}\n\t\t\tconst disconnectFromCurrentOwner = await this.mapper.updateInternal(targetEntity, { [targetEntity.primary]: currentOwner }, builder => {\n\t\t\t\tbuilder.addPredicates([targetRelation.name])\n\t\t\t\tbuilder.addFieldValue(targetRelation.name, null)\n\t\t\t})\n\t\t\tresult.push(...disconnectFromCurrentOwner)\n\t\t}\n\t\tconst orphanedInverseSide = targetRelation.orphanRemoval\n\t\t\t? await this.mapper.selectField(targetEntity, { [targetEntity.primary]: newOwner }, targetRelation.name)\n\t\t\t: null\n\n\t\tconst connectToNewOwner = await this.mapper.updateInternal(targetEntity, { [targetEntity.primary]: newOwner }, builder => {\n\t\t\tbuilder.addPredicates([targetRelation.name])\n\t\t\tbuilder.addFieldValue(targetRelation.name, this.primaryValue)\n\t\t})\n\t\tresult.push(...connectToNewOwner)\n\n\t\tif (orphanedInverseSide) {\n\t\t\tconst deleteOrphanedInverseSide = await this.mapper.delete(entity, { [entity.primary]: orphanedInverseSide })\n\t\t\tresult.push(...deleteOrphanedInverseSide)\n\t\t}\n\t\treturn result\n\t}\n\n\tpublic async create({ entity, targetEntity, targetRelation, input }: Model.OneHasOneInverseContext & { input: Input.CreateDataInput }) {\n\t\tconst currentOwner = await this.mapper.getPrimaryValue(targetEntity, {\n\t\t\t[targetRelation.name]: { [entity.primary]: this.primaryValue },\n\t\t})\n\t\tif (currentOwner && !targetRelation.nullable) {\n\t\t\t// todo cascade delete support?\n\t\t\treturn [new MutationConstraintViolationError([], ConstraintType.notNull)]\n\t\t}\n\t\tconst result: MutationResultList = []\n\t\tif (currentOwner) {\n\t\t\tconst disconnectFromCurrentOwner = await this.mapper.updateInternal(targetEntity, { [targetEntity.primary]: currentOwner }, builder => {\n\t\t\t\tbuilder.addPredicates([targetRelation.name])\n\t\t\t\tbuilder.addFieldValue(targetRelation.name, null)\n\t\t\t})\n\t\t\tresult.push(...disconnectFromCurrentOwner)\n\t\t}\n\n\t\tconst connectToNewlyCreatedOwner = await this.mapper.insert(targetEntity, input, builder => {\n\t\t\tbuilder.addFieldValue(targetRelation.name, this.primaryValue)\n\t\t\tbuilder.addPredicates([targetRelation.name])\n\t\t})\n\t\tresult.push(...connectToNewlyCreatedOwner)\n\n\t\treturn result\n\t}\n\n\tpublic async update({ entity, targetEntity, targetRelation, input }: Model.OneHasOneInverseContext & { input: Input.UpdateDataInput }) {\n\t\treturn await this.mapper.update(\n\t\t\ttargetEntity,\n\t\t\t{ [targetRelation.name]: { [entity.primary]: this.primaryValue } },\n\t\t\tinput,\n\t\t)\n\t}\n\n\tpublic async upsert(context: Model.OneHasOneInverseContext & { input: UpdateInputProcessor.UpsertInput }) {\n\t\tconst { targetEntity, targetRelation, entity, input: { update, create } } = context\n\t\tconst result = await this.mapper.update(\n\t\t\ttargetEntity,\n\t\t\t{ [targetRelation.name]: { [entity.primary]: this.primaryValue } },\n\t\t\tupdate,\n\t\t)\n\t\tif (result[0].result === MutationResultType.notFoundError) {\n\t\t\treturn await this.create({\n\t\t\t\t...context,\n\t\t\t\tinput: create,\n\t\t\t})\n\t\t}\n\t\treturn result\n\t}\n\n\tpublic async disconnect({ entity, targetEntity, relation, targetRelation }: Model.OneHasOneInverseContext & { input: undefined }) {\n\t\tif (!relation.nullable && !targetRelation.orphanRemoval) {\n\t\t\treturn [new MutationConstraintViolationError([], ConstraintType.notNull)]\n\t\t}\n\t\tconst currentOwner = await this.mapper.getPrimaryValue(targetEntity, {\n\t\t\t[targetRelation.name]: { [entity.primary]: this.primaryValue },\n\t\t})\n\t\tif (!currentOwner) {\n\t\t\treturn [new MutationNothingToDo([], NothingToDoReason.emptyRelation)]\n\t\t}\n\t\tif (currentOwner && !targetRelation.nullable) {\n\t\t\treturn [new MutationConstraintViolationError([], ConstraintType.notNull)]\n\t\t}\n\n\t\tconst result = await this.mapper.updateInternal(\n\t\t\ttargetEntity,\n\t\t\t{ [targetEntity.primary]: currentOwner },\n\t\t\tbuilder => {\n\t\t\t\tbuilder.addPredicates([targetRelation.name])\n\t\t\t\tbuilder.addFieldValue(targetRelation.name, null)\n\t\t\t},\n\t\t)\n\t\tif (targetRelation.orphanRemoval) {\n\t\t\tresult.push(...(await this.mapper.delete(entity, { [entity.primary]: this.primaryValue })))\n\t\t}\n\t\treturn result\n\t}\n\n\tpublic async delete({ entity, targetEntity, relation, targetRelation }: Model.OneHasOneInverseContext & { input: undefined }) {\n\t\tif (!relation.nullable && !targetRelation.orphanRemoval) {\n\t\t\treturn [new MutationConstraintViolationError([], ConstraintType.notNull)]\n\t\t}\n\t\t// orphan removal is handled in mapper.delete\n\t\treturn await this.mapper.delete(targetEntity, { [targetRelation.name]: { [entity.primary]: this.primaryValue } })\n\t}\n}\n"],"names":["MutationEntryNotFoundError","MutationNothingToDo","NothingToDoReason","MutationConstraintViolationError","ConstraintType","MutationResultType"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"OneHasOneInverseUpdateInputProcessor.js","sources":["../../../../../../packages/engine-content-api/src/mapper/relations/OneHasOneInverseUpdateInputProcessor.ts"],"sourcesContent":["import {\n\tConstraintType,\n\tMutationConstraintViolationError,\n\tMutationEntryNotFoundError,\n\tMutationNothingToDo,\n\tMutationResultList,\n\tMutationResultType,\n\tNothingToDoReason,\n} from '../Result'\nimport { UpdateInputProcessor } from '../../inputProcessing'\nimport { Input, Model } from '@contember/schema'\nimport { Mapper } from '../Mapper'\n\nexport class OneHasOneInverseUpdateInputProcessor {\n\tconstructor(\n\t\tprivate readonly primaryValue: Input.PrimaryValue,\n\t\tprivate readonly mapper: Mapper,\n\t) {\n\t}\n\n\tpublic async connect({ input, ...ctx }: Model.OneHasOneInverseContext & { input: Input.UniqueWhere }) {\n\t\tconst newOwner = await this.mapper.getPrimaryValue(ctx.targetEntity, input)\n\t\tif (!newOwner) {\n\t\t\treturn [new MutationEntryNotFoundError([], input)]\n\t\t}\n\t\treturn await this.connectInternal(ctx, newOwner)\n\t}\n\n\tpublic async connectOrCreate(\n\t\t{ input, ...ctx }: Model.OneHasOneInverseContext & { input: Input.ConnectOrCreateInput },\n\t) {\n\t\tconst newOwner = await this.mapper.getPrimaryValue(ctx.targetEntity, input.connect)\n\t\tif (newOwner) {\n\t\t\treturn await this.connectInternal(ctx, newOwner)\n\t\t}\n\t\treturn await this.create({ ...ctx, input: input.create })\n\t}\n\n\n\tprivate async connectInternal(\n\t\t{ entity, targetEntity, targetRelation }: Model.OneHasOneInverseContext,\n\t\tnewOwner: Input.PrimaryValue,\n\t) {\n\t\tconst currentOwner = await this.mapper.getPrimaryValue(targetEntity, {\n\t\t\t[targetRelation.name]: { [entity.primary]: this.primaryValue },\n\t\t})\n\t\tif (newOwner === currentOwner) {\n\t\t\treturn [new MutationNothingToDo([], NothingToDoReason.alreadyExists)]\n\t\t}\n\t\tconst result: MutationResultList = []\n\t\tif (currentOwner) {\n\t\t\tif (!targetRelation.nullable) {\n\t\t\t\t// todo cascade delete support?\n\t\t\t\treturn [new MutationConstraintViolationError([], ConstraintType.notNull)]\n\t\t\t}\n\t\t\tconst disconnectFromCurrentOwner = await this.mapper.updateInternal(targetEntity, { [targetEntity.primary]: currentOwner }, builder => {\n\t\t\t\tbuilder.addPredicates([targetRelation.name])\n\t\t\t\tbuilder.addFieldValue(targetRelation.name, null)\n\t\t\t})\n\t\t\tresult.push(...disconnectFromCurrentOwner)\n\t\t}\n\t\tconst orphanedInverseSide = targetRelation.orphanRemoval\n\t\t\t? await this.mapper.selectField(targetEntity, { [targetEntity.primary]: newOwner }, targetRelation.name)\n\t\t\t: null\n\n\t\tconst connectToNewOwner = await this.mapper.updateInternal(targetEntity, { [targetEntity.primary]: newOwner }, builder => {\n\t\t\tbuilder.addPredicates([targetRelation.name])\n\t\t\tbuilder.addFieldValue(targetRelation.name, this.primaryValue)\n\t\t})\n\t\tresult.push(...connectToNewOwner)\n\n\t\tif (orphanedInverseSide) {\n\t\t\tconst deleteOrphanedInverseSide = await this.mapper.delete(entity, { [entity.primary]: orphanedInverseSide })\n\t\t\tresult.push(...deleteOrphanedInverseSide)\n\t\t}\n\t\treturn result\n\t}\n\n\tpublic async create({ entity, targetEntity, targetRelation, input }: Model.OneHasOneInverseContext & { input: Input.CreateDataInput }) {\n\t\tconst currentOwner = await this.mapper.getPrimaryValue(targetEntity, {\n\t\t\t[targetRelation.name]: { [entity.primary]: this.primaryValue },\n\t\t})\n\t\tif (currentOwner && !targetRelation.nullable) {\n\t\t\t// todo cascade delete support?\n\t\t\treturn [new MutationConstraintViolationError([], ConstraintType.notNull)]\n\t\t}\n\t\tconst result: MutationResultList = []\n\t\tif (currentOwner) {\n\t\t\tconst disconnectFromCurrentOwner = await this.mapper.updateInternal(targetEntity, { [targetEntity.primary]: currentOwner }, builder => {\n\t\t\t\tbuilder.addPredicates([targetRelation.name])\n\t\t\t\tbuilder.addFieldValue(targetRelation.name, null)\n\t\t\t})\n\t\t\tresult.push(...disconnectFromCurrentOwner)\n\t\t}\n\n\t\tconst connectToNewlyCreatedOwner = await this.mapper.insert(targetEntity, input, builder => {\n\t\t\tbuilder.addFieldValue(targetRelation.name, this.primaryValue)\n\t\t\tbuilder.addPredicates([targetRelation.name])\n\t\t})\n\t\tresult.push(...connectToNewlyCreatedOwner)\n\n\t\treturn result\n\t}\n\n\tpublic async update({ entity, targetEntity, targetRelation, input }: Model.OneHasOneInverseContext & { input: Input.UpdateDataInput }) {\n\t\treturn await this.mapper.update(\n\t\t\ttargetEntity,\n\t\t\t{ [targetRelation.name]: { [entity.primary]: this.primaryValue } },\n\t\t\tinput,\n\t\t)\n\t}\n\n\tpublic async upsert(context: Model.OneHasOneInverseContext & { input: UpdateInputProcessor.UpsertInput }) {\n\t\tconst { targetEntity, targetRelation, entity, input: { update, create } } = context\n\t\tconst result = await this.mapper.update(\n\t\t\ttargetEntity,\n\t\t\t{ [targetRelation.name]: { [entity.primary]: this.primaryValue } },\n\t\t\tupdate,\n\t\t)\n\t\tif (result[0].result === MutationResultType.notFoundError) {\n\t\t\treturn await this.create({\n\t\t\t\t...context,\n\t\t\t\tinput: create,\n\t\t\t})\n\t\t}\n\t\treturn result\n\t}\n\n\tpublic async disconnect({ entity, targetEntity, relation, targetRelation }: Model.OneHasOneInverseContext & { input: undefined }) {\n\t\tif (!relation.nullable && !targetRelation.orphanRemoval) {\n\t\t\treturn [new MutationConstraintViolationError([], ConstraintType.notNull)]\n\t\t}\n\t\tconst currentOwner = await this.mapper.getPrimaryValue(targetEntity, {\n\t\t\t[targetRelation.name]: { [entity.primary]: this.primaryValue },\n\t\t})\n\t\tif (!currentOwner) {\n\t\t\treturn [new MutationNothingToDo([], NothingToDoReason.emptyRelation)]\n\t\t}\n\t\tif (currentOwner && !targetRelation.nullable) {\n\t\t\treturn [new MutationConstraintViolationError([], ConstraintType.notNull)]\n\t\t}\n\n\t\tconst result = await this.mapper.updateInternal(\n\t\t\ttargetEntity,\n\t\t\t{ [targetEntity.primary]: currentOwner },\n\t\t\tbuilder => {\n\t\t\t\tbuilder.addPredicates([targetRelation.name])\n\t\t\t\tbuilder.addFieldValue(targetRelation.name, null)\n\t\t\t},\n\t\t)\n\t\tif (targetRelation.orphanRemoval) {\n\t\t\tresult.push(...(await this.mapper.delete(entity, { [entity.primary]: this.primaryValue })))\n\t\t}\n\t\treturn result\n\t}\n\n\tpublic async delete({ entity, targetEntity, relation, targetRelation }: Model.OneHasOneInverseContext & { input: undefined }) {\n\t\tif (!relation.nullable && !targetRelation.orphanRemoval) {\n\t\t\treturn [new MutationConstraintViolationError([], ConstraintType.notNull)]\n\t\t}\n\t\t// orphan removal is handled in mapper.delete\n\t\treturn await this.mapper.delete(targetEntity, { [targetRelation.name]: { [entity.primary]: this.primaryValue } })\n\t}\n}\n"],"names":[],"mappings":";AAaO,MAAM,qCAAqC;AAAA,EACjD,YACkB,cACA,QAChB;AAFgB,SAAA,eAAA;AACA,SAAA,SAAA;AAAA,EAElB;AAAA,EAEA,MAAa,QAAQ,EAAE,OAAO,GAAG,OAAsE;AACtG,UAAM,WAAW,MAAM,KAAK,OAAO,gBAAgB,IAAI,cAAc,KAAK;AAC1E,QAAI,CAAC,UAAU;AACd,aAAO,CAAC,IAAI,2BAA2B,IAAI,KAAK,CAAC;AAAA,IAClD;AACA,WAAO,MAAM,KAAK,gBAAgB,KAAK,QAAQ;AAAA,EAChD;AAAA,EAEA,MAAa,gBACZ,EAAE,OAAO,GAAG,OACX;AACK,UAAA,WAAW,MAAM,KAAK,OAAO,gBAAgB,IAAI,cAAc,MAAM,OAAO;AAClF,QAAI,UAAU;AACb,aAAO,MAAM,KAAK,gBAAgB,KAAK,QAAQ;AAAA,IAChD;AACO,WAAA,MAAM,KAAK,OAAO,EAAE,GAAG,KAAK,OAAO,MAAM,OAAA,CAAQ;AAAA,EACzD;AAAA,EAGA,MAAc,gBACb,EAAE,QAAQ,cAAc,eAAA,GACxB,UACC;AACD,UAAM,eAAe,MAAM,KAAK,OAAO,gBAAgB,cAAc;AAAA,MACpE,CAAC,eAAe,IAAI,GAAG,EAAE,CAAC,OAAO,OAAO,GAAG,KAAK,aAAa;AAAA,IAAA,CAC7D;AACD,QAAI,aAAa,cAAc;AAC9B,aAAO,CAAC,IAAI,oBAAoB,CAAA,GAAI,kBAAkB,aAAa,CAAC;AAAA,IACrE;AACA,UAAM,SAA6B,CAAA;AACnC,QAAI,cAAc;AACb,UAAA,CAAC,eAAe,UAAU;AAE7B,eAAO,CAAC,IAAI,iCAAiC,CAAA,GAAI,eAAe,OAAO,CAAC;AAAA,MACzE;AACA,YAAM,6BAA6B,MAAM,KAAK,OAAO,eAAe,cAAc,EAAE,CAAC,aAAa,OAAO,GAAG,gBAAgB,CAAW,YAAA;AACtI,gBAAQ,cAAc,CAAC,eAAe,IAAI,CAAC;AACnC,gBAAA,cAAc,eAAe,MAAM,IAAI;AAAA,MAAA,CAC/C;AACM,aAAA,KAAK,GAAG,0BAA0B;AAAA,IAC1C;AACA,UAAM,sBAAsB,eAAe,gBACxC,MAAM,KAAK,OAAO,YAAY,cAAc,EAAE,CAAC,aAAa,OAAO,GAAG,YAAY,eAAe,IAAI,IACrG;AAEH,UAAM,oBAAoB,MAAM,KAAK,OAAO,eAAe,cAAc,EAAE,CAAC,aAAa,OAAO,GAAG,YAAY,CAAW,YAAA;AACzH,cAAQ,cAAc,CAAC,eAAe,IAAI,CAAC;AAC3C,cAAQ,cAAc,eAAe,MAAM,KAAK,YAAY;AAAA,IAAA,CAC5D;AACM,WAAA,KAAK,GAAG,iBAAiB;AAEhC,QAAI,qBAAqB;AACxB,YAAM,4BAA4B,MAAM,KAAK,OAAO,OAAO,QAAQ,EAAE,CAAC,OAAO,OAAO,GAAG,oBAAqB,CAAA;AACrG,aAAA,KAAK,GAAG,yBAAyB;AAAA,IACzC;AACO,WAAA;AAAA,EACR;AAAA,EAEA,MAAa,OAAO,EAAE,QAAQ,cAAc,gBAAgB,SAA2E;AACtI,UAAM,eAAe,MAAM,KAAK,OAAO,gBAAgB,cAAc;AAAA,MACpE,CAAC,eAAe,IAAI,GAAG,EAAE,CAAC,OAAO,OAAO,GAAG,KAAK,aAAa;AAAA,IAAA,CAC7D;AACG,QAAA,gBAAgB,CAAC,eAAe,UAAU;AAE7C,aAAO,CAAC,IAAI,iCAAiC,CAAA,GAAI,eAAe,OAAO,CAAC;AAAA,IACzE;AACA,UAAM,SAA6B,CAAA;AACnC,QAAI,cAAc;AACjB,YAAM,6BAA6B,MAAM,KAAK,OAAO,eAAe,cAAc,EAAE,CAAC,aAAa,OAAO,GAAG,gBAAgB,CAAW,YAAA;AACtI,gBAAQ,cAAc,CAAC,eAAe,IAAI,CAAC;AACnC,gBAAA,cAAc,eAAe,MAAM,IAAI;AAAA,MAAA,CAC/C;AACM,aAAA,KAAK,GAAG,0BAA0B;AAAA,IAC1C;AAEA,UAAM,6BAA6B,MAAM,KAAK,OAAO,OAAO,cAAc,OAAO,CAAW,YAAA;AAC3F,cAAQ,cAAc,eAAe,MAAM,KAAK,YAAY;AAC5D,cAAQ,cAAc,CAAC,eAAe,IAAI,CAAC;AAAA,IAAA,CAC3C;AACM,WAAA,KAAK,GAAG,0BAA0B;AAElC,WAAA;AAAA,EACR;AAAA,EAEA,MAAa,OAAO,EAAE,QAAQ,cAAc,gBAAgB,SAA2E;AAC/H,WAAA,MAAM,KAAK,OAAO;AAAA,MACxB;AAAA,MACA,EAAE,CAAC,eAAe,IAAI,GAAG,EAAE,CAAC,OAAO,OAAO,GAAG,KAAK,eAAe;AAAA,MACjE;AAAA,IAAA;AAAA,EAEF;AAAA,EAEA,MAAa,OAAO,SAAsF;AACnG,UAAA,EAAE,cAAc,gBAAgB,QAAQ,OAAO,EAAE,QAAQ,SAAa,IAAA;AACtE,UAAA,SAAS,MAAM,KAAK,OAAO;AAAA,MAChC;AAAA,MACA,EAAE,CAAC,eAAe,IAAI,GAAG,EAAE,CAAC,OAAO,OAAO,GAAG,KAAK,eAAe;AAAA,MACjE;AAAA,IAAA;AAED,QAAI,OAAO,CAAC,EAAE,WAAW,mBAAmB,eAAe;AACnD,aAAA,MAAM,KAAK,OAAO;AAAA,QACxB,GAAG;AAAA,QACH,OAAO;AAAA,MAAA,CACP;AAAA,IACF;AACO,WAAA;AAAA,EACR;AAAA,EAEA,MAAa,WAAW,EAAE,QAAQ,cAAc,UAAU,kBAAwE;AACjI,QAAI,CAAC,SAAS,YAAY,CAAC,eAAe,eAAe;AACxD,aAAO,CAAC,IAAI,iCAAiC,CAAA,GAAI,eAAe,OAAO,CAAC;AAAA,IACzE;AACA,UAAM,eAAe,MAAM,KAAK,OAAO,gBAAgB,cAAc;AAAA,MACpE,CAAC,eAAe,IAAI,GAAG,EAAE,CAAC,OAAO,OAAO,GAAG,KAAK,aAAa;AAAA,IAAA,CAC7D;AACD,QAAI,CAAC,cAAc;AAClB,aAAO,CAAC,IAAI,oBAAoB,CAAA,GAAI,kBAAkB,aAAa,CAAC;AAAA,IACrE;AACI,QAAA,gBAAgB,CAAC,eAAe,UAAU;AAC7C,aAAO,CAAC,IAAI,iCAAiC,CAAA,GAAI,eAAe,OAAO,CAAC;AAAA,IACzE;AAEM,UAAA,SAAS,MAAM,KAAK,OAAO;AAAA,MAChC;AAAA,MACA,EAAE,CAAC,aAAa,OAAO,GAAG,aAAa;AAAA,MACvC,CAAW,YAAA;AACV,gBAAQ,cAAc,CAAC,eAAe,IAAI,CAAC;AACnC,gBAAA,cAAc,eAAe,MAAM,IAAI;AAAA,MAChD;AAAA,IAAA;AAED,QAAI,eAAe,eAAe;AACjC,aAAO,KAAK,GAAI,MAAM,KAAK,OAAO,OAAO,QAAQ,EAAE,CAAC,OAAO,OAAO,GAAG,KAAK,aAAA,CAAc,CAAE;AAAA,IAC3F;AACO,WAAA;AAAA,EACR;AAAA,EAEA,MAAa,OAAO,EAAE,QAAQ,cAAc,UAAU,kBAAwE;AAC7H,QAAI,CAAC,SAAS,YAAY,CAAC,eAAe,eAAe;AACxD,aAAO,CAAC,IAAI,iCAAiC,CAAA,GAAI,eAAe,OAAO,CAAC;AAAA,IACzE;AAEA,WAAO,MAAM,KAAK,OAAO,OAAO,cAAc,EAAE,CAAC,eAAe,IAAI,GAAG,EAAE,CAAC,OAAO,OAAO,GAAG,KAAK,aAAA,EAAgB,CAAA;AAAA,EACjH;AACD;"}
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const Result = require("../Result.cjs");
|
|
4
|
-
const DataManipulationBuilder = require("../DataManipulationBuilder.cjs");
|
|
5
|
-
class OneHasOneOwningCreateInputProcessor {
|
|
6
|
-
constructor(insertBuilder, mapper) {
|
|
7
|
-
this.insertBuilder = insertBuilder;
|
|
8
|
-
this.mapper = mapper;
|
|
9
|
-
}
|
|
10
|
-
async connect(context) {
|
|
11
|
-
const { input, relation, targetEntity } = context;
|
|
12
|
-
const result = [];
|
|
13
|
-
await this.insertBuilder.addFieldValue(relation.name, async () => {
|
|
14
|
-
const inverseSide = await this.mapper.getPrimaryValue(targetEntity, input);
|
|
15
|
-
if (!inverseSide) {
|
|
16
|
-
result.push(new Result.MutationEntryNotFoundError([], input));
|
|
17
|
-
return DataManipulationBuilder.AbortDataManipulation;
|
|
18
|
-
}
|
|
19
|
-
return this.connectInternal({ ...context, input: inverseSide }, result);
|
|
20
|
-
});
|
|
21
|
-
return result;
|
|
22
|
-
}
|
|
23
|
-
async create(context) {
|
|
24
|
-
const result = [];
|
|
25
|
-
await this.insertBuilder.addFieldValue(context.relation.name, async () => {
|
|
26
|
-
return await this.createInternal(context, result);
|
|
27
|
-
});
|
|
28
|
-
return result;
|
|
29
|
-
}
|
|
30
|
-
async connectOrCreate({ input, ...context }) {
|
|
31
|
-
const result = [];
|
|
32
|
-
await this.insertBuilder.addFieldValue(context.relation.name, async () => {
|
|
33
|
-
const inverseSide = await this.mapper.getPrimaryValue(context.targetEntity, input.connect);
|
|
34
|
-
if (inverseSide) {
|
|
35
|
-
return await this.connectInternal({ ...context, input: inverseSide }, result);
|
|
36
|
-
}
|
|
37
|
-
return await this.createInternal({ ...context, input: input.create }, result);
|
|
38
|
-
});
|
|
39
|
-
return result;
|
|
40
|
-
}
|
|
41
|
-
async createInternal(context, result) {
|
|
42
|
-
const insertResult = await this.mapper.insert(context.targetEntity, context.input);
|
|
43
|
-
result.push(...insertResult);
|
|
44
|
-
const primary = Result.getInsertPrimary(insertResult);
|
|
45
|
-
if (!primary) {
|
|
46
|
-
return DataManipulationBuilder.AbortDataManipulation;
|
|
47
|
-
}
|
|
48
|
-
return primary;
|
|
49
|
-
}
|
|
50
|
-
async connectInternal({ entity, relation, targetEntity, input }, result) {
|
|
51
|
-
const currentOwnerOfInverseSide = await this.mapper.getPrimaryValue(entity, {
|
|
52
|
-
[relation.name]: { [targetEntity.primary]: input }
|
|
53
|
-
});
|
|
54
|
-
if (!currentOwnerOfInverseSide) {
|
|
55
|
-
return input;
|
|
56
|
-
}
|
|
57
|
-
if (!relation.nullable) {
|
|
58
|
-
result.push(new Result.MutationConstraintViolationError([], Result.ConstraintType.notNull));
|
|
59
|
-
return DataManipulationBuilder.AbortDataManipulation;
|
|
60
|
-
}
|
|
61
|
-
const currentOwnerUnique = { [entity.primary]: currentOwnerOfInverseSide };
|
|
62
|
-
const currentOwnerDisconnectResult = await this.mapper.updateInternal(entity, currentOwnerUnique, (builder) => {
|
|
63
|
-
builder.addPredicates([relation.name]);
|
|
64
|
-
builder.addFieldValue(relation.name, null);
|
|
65
|
-
});
|
|
66
|
-
result.push(...currentOwnerDisconnectResult);
|
|
67
|
-
return input;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
exports.OneHasOneOwningCreateInputProcessor = OneHasOneOwningCreateInputProcessor;
|
|
71
|
-
//# sourceMappingURL=OneHasOneOwningCreateInputProcessor.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"OneHasOneOwningCreateInputProcessor.cjs","sources":["../../../../../../packages/engine-content-api/src/mapper/relations/OneHasOneOwningCreateInputProcessor.ts"],"sourcesContent":["import {\n\tConstraintType,\n\tgetInsertPrimary,\n\tMutationConstraintViolationError,\n\tMutationEntryNotFoundError,\n\tMutationResultList,\n} from '../Result'\nimport { InsertBuilder } from '../insert'\nimport { Mapper } from '../Mapper'\nimport { Input, Model } from '@contember/schema'\nimport { AbortDataManipulation } from '../DataManipulationBuilder'\n\nexport class OneHasOneOwningCreateInputProcessor {\n\tconstructor(\n\t\tprivate readonly insertBuilder: InsertBuilder,\n\t\tprivate readonly mapper: Mapper,\n\t) {\n\t}\n\n\tpublic async connect(context: Model.OneHasOneOwningContext & { input: Input.UniqueWhere }) {\n\t\tconst { input, relation, targetEntity } = context\n\t\tconst result: MutationResultList = []\n\t\tawait this.insertBuilder.addFieldValue(relation.name, async () => {\n\t\t\tconst inverseSide = await this.mapper.getPrimaryValue(targetEntity, input)\n\t\t\tif (!inverseSide) {\n\t\t\t\tresult.push(new MutationEntryNotFoundError([], input))\n\t\t\t\treturn AbortDataManipulation\n\t\t\t}\n\t\t\treturn this.connectInternal({ ...context, input: inverseSide }, result)\n\t\t})\n\t\treturn result\n\t}\n\n\tpublic async create(context: Model.OneHasOneOwningContext & { input: Input.CreateDataInput }) {\n\t\tconst result: MutationResultList = []\n\t\tawait this.insertBuilder.addFieldValue(context.relation.name, async () => {\n\t\t\treturn await this.createInternal(context, result)\n\t\t})\n\t\treturn result\n\t}\n\n\tpublic async connectOrCreate({ input, ...context }: Model.OneHasOneOwningContext & { input: Input.ConnectOrCreateInput }) {\n\t\tconst result: MutationResultList = []\n\t\tawait this.insertBuilder.addFieldValue(context.relation.name, async () => {\n\t\t\tconst inverseSide = await this.mapper.getPrimaryValue(context.targetEntity, input.connect)\n\t\t\tif (inverseSide) {\n\t\t\t\treturn await this.connectInternal({ ...context, input: inverseSide }, result)\n\t\t\t}\n\t\t\treturn await this.createInternal({ ...context, input: input.create }, result)\n\t\t})\n\t\treturn result\n\t}\n\n\tprivate async createInternal(\n\t\tcontext: Model.OneHasOneOwningContext & { input: Input.CreateDataInput },\n\t\tresult: MutationResultList,\n\t) {\n\t\tconst insertResult = await this.mapper.insert(context.targetEntity, context.input)\n\t\tresult.push(...insertResult)\n\t\tconst primary = getInsertPrimary(insertResult)\n\t\tif (!primary) {\n\t\t\treturn AbortDataManipulation\n\t\t}\n\t\treturn primary\n\t}\n\n\tprivate async connectInternal(\n\t\t{ entity, relation, targetEntity, input }: Model.OneHasOneOwningContext & { input: Input.PrimaryValue },\n\t\tresult: MutationResultList,\n\t) {\n\t\tconst currentOwnerOfInverseSide = await this.mapper.getPrimaryValue(entity, {\n\t\t\t[relation.name]: { [targetEntity.primary]: input },\n\t\t})\n\t\tif (!currentOwnerOfInverseSide) {\n\t\t\treturn input\n\t\t}\n\n\t\tif (!relation.nullable) {\n\t\t\tresult.push(new MutationConstraintViolationError([], ConstraintType.notNull))\n\t\t\treturn AbortDataManipulation\n\t\t}\n\n\t\tconst currentOwnerUnique = { [entity.primary]: currentOwnerOfInverseSide }\n\t\tconst currentOwnerDisconnectResult = await this.mapper.updateInternal(entity, currentOwnerUnique, builder => {\n\t\t\tbuilder.addPredicates([relation.name])\n\t\t\tbuilder.addFieldValue(relation.name, null)\n\t\t})\n\t\tresult.push(...currentOwnerDisconnectResult)\n\n\t\treturn input\n\t}\n}\n"],"names":["MutationEntryNotFoundError","AbortDataManipulation","getInsertPrimary","MutationConstraintViolationError","ConstraintType"],"mappings":";;;;AAYO,MAAM,oCAAoC;AAAA,EAChD,YACkB,eACA,QAChB;AAFgB,SAAA,gBAAA;AACA,SAAA,SAAA;AAAA,EAElB;AAAA,EAEA,MAAa,QAAQ,SAAsE;AAC1F,UAAM,EAAE,OAAO,UAAU,aAAA,IAAiB;AAC1C,UAAM,SAA6B,CAAA;AACnC,UAAM,KAAK,cAAc,cAAc,SAAS,MAAM,YAAY;AACjE,YAAM,cAAc,MAAM,KAAK,OAAO,gBAAgB,cAAc,KAAK;AACzE,UAAI,CAAC,aAAa;AACjB,eAAO,KAAK,IAAIA,OAAAA,2BAA2B,CAAA,GAAI,KAAK,CAAC;AAC9C,eAAAC;MACR;AACO,aAAA,KAAK,gBAAgB,EAAE,GAAG,SAAS,OAAO,YAAA,GAAe,MAAM;AAAA,IAAA,CACtE;AACM,WAAA;AAAA,EACR;AAAA,EAEA,MAAa,OAAO,SAA0E;AAC7F,UAAM,SAA6B,CAAA;AACnC,UAAM,KAAK,cAAc,cAAc,QAAQ,SAAS,MAAM,YAAY;AACzE,aAAO,MAAM,KAAK,eAAe,SAAS,MAAM;AAAA,IAAA,CAChD;AACM,WAAA;AAAA,EACR;AAAA,EAEA,MAAa,gBAAgB,EAAE,OAAO,GAAG,WAAiF;AACzH,UAAM,SAA6B,CAAA;AACnC,UAAM,KAAK,cAAc,cAAc,QAAQ,SAAS,MAAM,YAAY;AACnE,YAAA,cAAc,MAAM,KAAK,OAAO,gBAAgB,QAAQ,cAAc,MAAM,OAAO;AACzF,UAAI,aAAa;AACT,eAAA,MAAM,KAAK,gBAAgB,EAAE,GAAG,SAAS,OAAO,eAAe,MAAM;AAAA,MAC7E;AACO,aAAA,MAAM,KAAK,eAAe,EAAE,GAAG,SAAS,OAAO,MAAM,UAAU,MAAM;AAAA,IAAA,CAC5E;AACM,WAAA;AAAA,EACR;AAAA,EAEA,MAAc,eACb,SACA,QACC;AACK,UAAA,eAAe,MAAM,KAAK,OAAO,OAAO,QAAQ,cAAc,QAAQ,KAAK;AAC1E,WAAA,KAAK,GAAG,YAAY;AACrB,UAAA,UAAUC,wBAAiB,YAAY;AAC7C,QAAI,CAAC,SAAS;AACN,aAAAD;IACR;AACO,WAAA;AAAA,EACR;AAAA,EAEA,MAAc,gBACb,EAAE,QAAQ,UAAU,cAAc,SAClC,QACC;AACD,UAAM,4BAA4B,MAAM,KAAK,OAAO,gBAAgB,QAAQ;AAAA,MAC3E,CAAC,SAAS,IAAI,GAAG,EAAE,CAAC,aAAa,OAAO,GAAG,MAAM;AAAA,IAAA,CACjD;AACD,QAAI,CAAC,2BAA2B;AACxB,aAAA;AAAA,IACR;AAEI,QAAA,CAAC,SAAS,UAAU;AACvB,aAAO,KAAK,IAAIE,OAAA,iCAAiC,CAAI,GAAAC,OAAA,eAAe,OAAO,CAAC;AACrE,aAAAH;IACR;AAEA,UAAM,qBAAqB,EAAE,CAAC,OAAO,OAAO,GAAG,0BAA0B;AACzE,UAAM,+BAA+B,MAAM,KAAK,OAAO,eAAe,QAAQ,oBAAoB,CAAW,YAAA;AAC5G,cAAQ,cAAc,CAAC,SAAS,IAAI,CAAC;AAC7B,cAAA,cAAc,SAAS,MAAM,IAAI;AAAA,IAAA,CACzC;AACM,WAAA,KAAK,GAAG,4BAA4B;AAEpC,WAAA;AAAA,EACR;AACD;;"}
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
import { MutationEntryNotFoundError, getInsertPrimary, MutationConstraintViolationError, ConstraintType } from "../Result.js";
|
|
2
|
-
import { AbortDataManipulation } from "../DataManipulationBuilder.js";
|
|
3
|
-
class OneHasOneOwningCreateInputProcessor {
|
|
4
|
-
constructor(insertBuilder, mapper) {
|
|
5
|
-
this.insertBuilder = insertBuilder;
|
|
6
|
-
this.mapper = mapper;
|
|
7
|
-
}
|
|
8
|
-
async connect(context) {
|
|
9
|
-
const { input, relation, targetEntity } = context;
|
|
10
|
-
const result = [];
|
|
11
|
-
await this.insertBuilder.addFieldValue(relation.name, async () => {
|
|
12
|
-
const inverseSide = await this.mapper.getPrimaryValue(targetEntity, input);
|
|
13
|
-
if (!inverseSide) {
|
|
14
|
-
result.push(new MutationEntryNotFoundError([], input));
|
|
15
|
-
return AbortDataManipulation;
|
|
16
|
-
}
|
|
17
|
-
return this.connectInternal({ ...context, input: inverseSide }, result);
|
|
18
|
-
});
|
|
19
|
-
return result;
|
|
20
|
-
}
|
|
21
|
-
async create(context) {
|
|
22
|
-
const result = [];
|
|
23
|
-
await this.insertBuilder.addFieldValue(context.relation.name, async () => {
|
|
24
|
-
return await this.createInternal(context, result);
|
|
25
|
-
});
|
|
26
|
-
return result;
|
|
27
|
-
}
|
|
28
|
-
async connectOrCreate({ input, ...context }) {
|
|
29
|
-
const result = [];
|
|
30
|
-
await this.insertBuilder.addFieldValue(context.relation.name, async () => {
|
|
31
|
-
const inverseSide = await this.mapper.getPrimaryValue(context.targetEntity, input.connect);
|
|
32
|
-
if (inverseSide) {
|
|
33
|
-
return await this.connectInternal({ ...context, input: inverseSide }, result);
|
|
34
|
-
}
|
|
35
|
-
return await this.createInternal({ ...context, input: input.create }, result);
|
|
36
|
-
});
|
|
37
|
-
return result;
|
|
38
|
-
}
|
|
39
|
-
async createInternal(context, result) {
|
|
40
|
-
const insertResult = await this.mapper.insert(context.targetEntity, context.input);
|
|
41
|
-
result.push(...insertResult);
|
|
42
|
-
const primary = getInsertPrimary(insertResult);
|
|
43
|
-
if (!primary) {
|
|
44
|
-
return AbortDataManipulation;
|
|
45
|
-
}
|
|
46
|
-
return primary;
|
|
47
|
-
}
|
|
48
|
-
async connectInternal({ entity, relation, targetEntity, input }, result) {
|
|
49
|
-
const currentOwnerOfInverseSide = await this.mapper.getPrimaryValue(entity, {
|
|
50
|
-
[relation.name]: { [targetEntity.primary]: input }
|
|
51
|
-
});
|
|
52
|
-
if (!currentOwnerOfInverseSide) {
|
|
53
|
-
return input;
|
|
54
|
-
}
|
|
55
|
-
if (!relation.nullable) {
|
|
56
|
-
result.push(new MutationConstraintViolationError([], ConstraintType.notNull));
|
|
57
|
-
return AbortDataManipulation;
|
|
58
|
-
}
|
|
59
|
-
const currentOwnerUnique = { [entity.primary]: currentOwnerOfInverseSide };
|
|
60
|
-
const currentOwnerDisconnectResult = await this.mapper.updateInternal(entity, currentOwnerUnique, (builder) => {
|
|
61
|
-
builder.addPredicates([relation.name]);
|
|
62
|
-
builder.addFieldValue(relation.name, null);
|
|
63
|
-
});
|
|
64
|
-
result.push(...currentOwnerDisconnectResult);
|
|
65
|
-
return input;
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
export {
|
|
69
|
-
OneHasOneOwningCreateInputProcessor
|
|
70
|
-
};
|
|
71
|
-
//# sourceMappingURL=OneHasOneOwningCreateInputProcessor.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"OneHasOneOwningCreateInputProcessor.js","sources":["../../../../../../packages/engine-content-api/src/mapper/relations/OneHasOneOwningCreateInputProcessor.ts"],"sourcesContent":["import {\n\tConstraintType,\n\tgetInsertPrimary,\n\tMutationConstraintViolationError,\n\tMutationEntryNotFoundError,\n\tMutationResultList,\n} from '../Result'\nimport { InsertBuilder } from '../insert'\nimport { Mapper } from '../Mapper'\nimport { Input, Model } from '@contember/schema'\nimport { AbortDataManipulation } from '../DataManipulationBuilder'\n\nexport class OneHasOneOwningCreateInputProcessor {\n\tconstructor(\n\t\tprivate readonly insertBuilder: InsertBuilder,\n\t\tprivate readonly mapper: Mapper,\n\t) {\n\t}\n\n\tpublic async connect(context: Model.OneHasOneOwningContext & { input: Input.UniqueWhere }) {\n\t\tconst { input, relation, targetEntity } = context\n\t\tconst result: MutationResultList = []\n\t\tawait this.insertBuilder.addFieldValue(relation.name, async () => {\n\t\t\tconst inverseSide = await this.mapper.getPrimaryValue(targetEntity, input)\n\t\t\tif (!inverseSide) {\n\t\t\t\tresult.push(new MutationEntryNotFoundError([], input))\n\t\t\t\treturn AbortDataManipulation\n\t\t\t}\n\t\t\treturn this.connectInternal({ ...context, input: inverseSide }, result)\n\t\t})\n\t\treturn result\n\t}\n\n\tpublic async create(context: Model.OneHasOneOwningContext & { input: Input.CreateDataInput }) {\n\t\tconst result: MutationResultList = []\n\t\tawait this.insertBuilder.addFieldValue(context.relation.name, async () => {\n\t\t\treturn await this.createInternal(context, result)\n\t\t})\n\t\treturn result\n\t}\n\n\tpublic async connectOrCreate({ input, ...context }: Model.OneHasOneOwningContext & { input: Input.ConnectOrCreateInput }) {\n\t\tconst result: MutationResultList = []\n\t\tawait this.insertBuilder.addFieldValue(context.relation.name, async () => {\n\t\t\tconst inverseSide = await this.mapper.getPrimaryValue(context.targetEntity, input.connect)\n\t\t\tif (inverseSide) {\n\t\t\t\treturn await this.connectInternal({ ...context, input: inverseSide }, result)\n\t\t\t}\n\t\t\treturn await this.createInternal({ ...context, input: input.create }, result)\n\t\t})\n\t\treturn result\n\t}\n\n\tprivate async createInternal(\n\t\tcontext: Model.OneHasOneOwningContext & { input: Input.CreateDataInput },\n\t\tresult: MutationResultList,\n\t) {\n\t\tconst insertResult = await this.mapper.insert(context.targetEntity, context.input)\n\t\tresult.push(...insertResult)\n\t\tconst primary = getInsertPrimary(insertResult)\n\t\tif (!primary) {\n\t\t\treturn AbortDataManipulation\n\t\t}\n\t\treturn primary\n\t}\n\n\tprivate async connectInternal(\n\t\t{ entity, relation, targetEntity, input }: Model.OneHasOneOwningContext & { input: Input.PrimaryValue },\n\t\tresult: MutationResultList,\n\t) {\n\t\tconst currentOwnerOfInverseSide = await this.mapper.getPrimaryValue(entity, {\n\t\t\t[relation.name]: { [targetEntity.primary]: input },\n\t\t})\n\t\tif (!currentOwnerOfInverseSide) {\n\t\t\treturn input\n\t\t}\n\n\t\tif (!relation.nullable) {\n\t\t\tresult.push(new MutationConstraintViolationError([], ConstraintType.notNull))\n\t\t\treturn AbortDataManipulation\n\t\t}\n\n\t\tconst currentOwnerUnique = { [entity.primary]: currentOwnerOfInverseSide }\n\t\tconst currentOwnerDisconnectResult = await this.mapper.updateInternal(entity, currentOwnerUnique, builder => {\n\t\t\tbuilder.addPredicates([relation.name])\n\t\t\tbuilder.addFieldValue(relation.name, null)\n\t\t})\n\t\tresult.push(...currentOwnerDisconnectResult)\n\n\t\treturn input\n\t}\n}\n"],"names":[],"mappings":";;AAYO,MAAM,oCAAoC;AAAA,EAChD,YACkB,eACA,QAChB;AAFgB,SAAA,gBAAA;AACA,SAAA,SAAA;AAAA,EAElB;AAAA,EAEA,MAAa,QAAQ,SAAsE;AAC1F,UAAM,EAAE,OAAO,UAAU,aAAA,IAAiB;AAC1C,UAAM,SAA6B,CAAA;AACnC,UAAM,KAAK,cAAc,cAAc,SAAS,MAAM,YAAY;AACjE,YAAM,cAAc,MAAM,KAAK,OAAO,gBAAgB,cAAc,KAAK;AACzE,UAAI,CAAC,aAAa;AACjB,eAAO,KAAK,IAAI,2BAA2B,CAAA,GAAI,KAAK,CAAC;AAC9C,eAAA;AAAA,MACR;AACO,aAAA,KAAK,gBAAgB,EAAE,GAAG,SAAS,OAAO,YAAA,GAAe,MAAM;AAAA,IAAA,CACtE;AACM,WAAA;AAAA,EACR;AAAA,EAEA,MAAa,OAAO,SAA0E;AAC7F,UAAM,SAA6B,CAAA;AACnC,UAAM,KAAK,cAAc,cAAc,QAAQ,SAAS,MAAM,YAAY;AACzE,aAAO,MAAM,KAAK,eAAe,SAAS,MAAM;AAAA,IAAA,CAChD;AACM,WAAA;AAAA,EACR;AAAA,EAEA,MAAa,gBAAgB,EAAE,OAAO,GAAG,WAAiF;AACzH,UAAM,SAA6B,CAAA;AACnC,UAAM,KAAK,cAAc,cAAc,QAAQ,SAAS,MAAM,YAAY;AACnE,YAAA,cAAc,MAAM,KAAK,OAAO,gBAAgB,QAAQ,cAAc,MAAM,OAAO;AACzF,UAAI,aAAa;AACT,eAAA,MAAM,KAAK,gBAAgB,EAAE,GAAG,SAAS,OAAO,eAAe,MAAM;AAAA,MAC7E;AACO,aAAA,MAAM,KAAK,eAAe,EAAE,GAAG,SAAS,OAAO,MAAM,UAAU,MAAM;AAAA,IAAA,CAC5E;AACM,WAAA;AAAA,EACR;AAAA,EAEA,MAAc,eACb,SACA,QACC;AACK,UAAA,eAAe,MAAM,KAAK,OAAO,OAAO,QAAQ,cAAc,QAAQ,KAAK;AAC1E,WAAA,KAAK,GAAG,YAAY;AACrB,UAAA,UAAU,iBAAiB,YAAY;AAC7C,QAAI,CAAC,SAAS;AACN,aAAA;AAAA,IACR;AACO,WAAA;AAAA,EACR;AAAA,EAEA,MAAc,gBACb,EAAE,QAAQ,UAAU,cAAc,SAClC,QACC;AACD,UAAM,4BAA4B,MAAM,KAAK,OAAO,gBAAgB,QAAQ;AAAA,MAC3E,CAAC,SAAS,IAAI,GAAG,EAAE,CAAC,aAAa,OAAO,GAAG,MAAM;AAAA,IAAA,CACjD;AACD,QAAI,CAAC,2BAA2B;AACxB,aAAA;AAAA,IACR;AAEI,QAAA,CAAC,SAAS,UAAU;AACvB,aAAO,KAAK,IAAI,iCAAiC,CAAI,GAAA,eAAe,OAAO,CAAC;AACrE,aAAA;AAAA,IACR;AAEA,UAAM,qBAAqB,EAAE,CAAC,OAAO,OAAO,GAAG,0BAA0B;AACzE,UAAM,+BAA+B,MAAM,KAAK,OAAO,eAAe,QAAQ,oBAAoB,CAAW,YAAA;AAC5G,cAAQ,cAAc,CAAC,SAAS,IAAI,CAAC;AAC7B,cAAA,cAAc,SAAS,MAAM,IAAI;AAAA,IAAA,CACzC;AACM,WAAA,KAAK,GAAG,4BAA4B;AAEpC,WAAA;AAAA,EACR;AACD;"}
|
|
@@ -1,200 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const schema = require("@contember/schema");
|
|
4
|
-
const Result = require("../Result.cjs");
|
|
5
|
-
const CheckedPrimary = require("../CheckedPrimary.cjs");
|
|
6
|
-
const DataManipulationBuilder = require("../DataManipulationBuilder.cjs");
|
|
7
|
-
class OneHasOneOwningUpdateInputProcessor {
|
|
8
|
-
constructor(primaryValue, mapper, updateBuilder) {
|
|
9
|
-
this.primaryValue = primaryValue;
|
|
10
|
-
this.mapper = mapper;
|
|
11
|
-
this.updateBuilder = updateBuilder;
|
|
12
|
-
}
|
|
13
|
-
async connect(context) {
|
|
14
|
-
const result = [];
|
|
15
|
-
let currentInverseSide;
|
|
16
|
-
const { entity, relation, targetEntity, targetRelation, input } = context;
|
|
17
|
-
const newInverseSide = await this.updateBuilder.addFieldValue(relation.name, async () => {
|
|
18
|
-
const newInverseSide2 = await this.mapper.getPrimaryValue(targetEntity, input);
|
|
19
|
-
if (!newInverseSide2) {
|
|
20
|
-
result.push(new Result.MutationEntryNotFoundError([], input));
|
|
21
|
-
return DataManipulationBuilder.AbortDataManipulation;
|
|
22
|
-
}
|
|
23
|
-
currentInverseSide = await this.getCurrentInverseSide(targetRelation, relation, entity);
|
|
24
|
-
return await this.connectInternal(context, currentInverseSide, newInverseSide2, result);
|
|
25
|
-
});
|
|
26
|
-
if (newInverseSide) {
|
|
27
|
-
result.push(...await this.cleanupOrphan(relation, targetEntity, currentInverseSide));
|
|
28
|
-
}
|
|
29
|
-
return result;
|
|
30
|
-
}
|
|
31
|
-
async create(context) {
|
|
32
|
-
const result = [];
|
|
33
|
-
let currentInverseSide;
|
|
34
|
-
const { entity, relation, targetEntity, targetRelation } = context;
|
|
35
|
-
await this.updateBuilder.addFieldValue(relation.name, async () => {
|
|
36
|
-
currentInverseSide = await this.getCurrentInverseSide(targetRelation, relation, entity);
|
|
37
|
-
return await this.createInternal(context, currentInverseSide, result);
|
|
38
|
-
});
|
|
39
|
-
result.push(...await this.cleanupOrphan(relation, targetEntity, currentInverseSide));
|
|
40
|
-
return result;
|
|
41
|
-
}
|
|
42
|
-
async connectOrCreate({ input: { connect, create }, ...context }) {
|
|
43
|
-
const result = [];
|
|
44
|
-
let currentInverseSide;
|
|
45
|
-
const { relation, targetRelation, targetEntity, entity } = context;
|
|
46
|
-
const newInverseSide = await this.updateBuilder.addFieldValue(relation.name, async () => {
|
|
47
|
-
const newInverseSide2 = await this.mapper.getPrimaryValue(targetEntity, connect);
|
|
48
|
-
currentInverseSide = await this.getCurrentInverseSide(targetRelation, relation, entity);
|
|
49
|
-
if (newInverseSide2) {
|
|
50
|
-
return await this.connectInternal(context, currentInverseSide, newInverseSide2, result);
|
|
51
|
-
}
|
|
52
|
-
return await this.createInternal({ ...context, input: create }, currentInverseSide, result);
|
|
53
|
-
});
|
|
54
|
-
if (newInverseSide) {
|
|
55
|
-
result.push(...await this.cleanupOrphan(relation, targetEntity, currentInverseSide));
|
|
56
|
-
}
|
|
57
|
-
return result;
|
|
58
|
-
}
|
|
59
|
-
async createInternal({ targetEntity, targetRelation, relation, input }, currentInverseSide, result) {
|
|
60
|
-
if (targetRelation && !targetRelation.nullable && !relation.orphanRemoval && currentInverseSide) {
|
|
61
|
-
result.push(new Result.MutationConstraintViolationError([], Result.ConstraintType.notNull));
|
|
62
|
-
return DataManipulationBuilder.AbortDataManipulation;
|
|
63
|
-
}
|
|
64
|
-
const insertResult = await this.mapper.insert(targetEntity, input);
|
|
65
|
-
result.push(...insertResult);
|
|
66
|
-
const newInverseSide = Result.getInsertPrimary(insertResult);
|
|
67
|
-
if (newInverseSide) {
|
|
68
|
-
return newInverseSide;
|
|
69
|
-
}
|
|
70
|
-
return DataManipulationBuilder.AbortDataManipulation;
|
|
71
|
-
}
|
|
72
|
-
async connectInternal({ targetEntity, targetRelation, relation, entity }, currentInverseSide, newInverseSide, result) {
|
|
73
|
-
if (currentInverseSide === newInverseSide) {
|
|
74
|
-
result.push(new Result.MutationNothingToDo([], Result.NothingToDoReason.alreadyExists));
|
|
75
|
-
return void 0;
|
|
76
|
-
}
|
|
77
|
-
const currentOwnerOfNewInverseSide = await this.mapper.getPrimaryValue(entity, {
|
|
78
|
-
[relation.name]: { [targetEntity.primary]: newInverseSide }
|
|
79
|
-
});
|
|
80
|
-
if (currentOwnerOfNewInverseSide === this.primaryValue) {
|
|
81
|
-
result.push(new Result.MutationNothingToDo([], Result.NothingToDoReason.alreadyExists));
|
|
82
|
-
return void 0;
|
|
83
|
-
}
|
|
84
|
-
if (targetRelation && !targetRelation.nullable && !relation.orphanRemoval && currentInverseSide) {
|
|
85
|
-
result.push(new Result.MutationConstraintViolationError([], Result.ConstraintType.notNull));
|
|
86
|
-
return DataManipulationBuilder.AbortDataManipulation;
|
|
87
|
-
}
|
|
88
|
-
if (currentOwnerOfNewInverseSide) {
|
|
89
|
-
if (!relation.nullable) {
|
|
90
|
-
result.push(new Result.MutationConstraintViolationError([], Result.ConstraintType.notNull));
|
|
91
|
-
return DataManipulationBuilder.AbortDataManipulation;
|
|
92
|
-
}
|
|
93
|
-
const currentOwnerDisconnect = await this.mapper.updateInternal(
|
|
94
|
-
entity,
|
|
95
|
-
{
|
|
96
|
-
[entity.primary]: currentOwnerOfNewInverseSide
|
|
97
|
-
},
|
|
98
|
-
(builder) => {
|
|
99
|
-
builder.addPredicates([relation.name]);
|
|
100
|
-
builder.addFieldValue(relation.name, null);
|
|
101
|
-
}
|
|
102
|
-
);
|
|
103
|
-
result.push(...currentOwnerDisconnect);
|
|
104
|
-
}
|
|
105
|
-
return newInverseSide;
|
|
106
|
-
}
|
|
107
|
-
async getCurrentInverseSide(targetRelation, relation, entity) {
|
|
108
|
-
if (targetRelation && !targetRelation.nullable || relation.orphanRemoval) {
|
|
109
|
-
return this.mapper.selectField(entity, { [entity.primary]: this.primaryValue }, relation.name);
|
|
110
|
-
}
|
|
111
|
-
return void 0;
|
|
112
|
-
}
|
|
113
|
-
async cleanupOrphan(relation, targetEntity, currentInverseSide) {
|
|
114
|
-
if (relation.orphanRemoval && currentInverseSide) {
|
|
115
|
-
await this.updateBuilder.update;
|
|
116
|
-
return await this.mapper.delete(targetEntity, { [targetEntity.primary]: currentInverseSide });
|
|
117
|
-
}
|
|
118
|
-
return [];
|
|
119
|
-
}
|
|
120
|
-
async update({ entity, relation, targetEntity, input }) {
|
|
121
|
-
const inversePrimary = await this.mapper.selectField(
|
|
122
|
-
entity,
|
|
123
|
-
{ [entity.primary]: this.primaryValue },
|
|
124
|
-
relation.name
|
|
125
|
-
);
|
|
126
|
-
if (!inversePrimary) {
|
|
127
|
-
return [new Result.MutationNothingToDo([], Result.NothingToDoReason.emptyRelation)];
|
|
128
|
-
}
|
|
129
|
-
return await this.mapper.update(targetEntity, { [targetEntity.primary]: inversePrimary }, input);
|
|
130
|
-
}
|
|
131
|
-
async upsert({ entity, relation, targetEntity, input: { create, update } }) {
|
|
132
|
-
const select = this.mapper.selectField(entity, { [entity.primary]: this.primaryValue }, relation.name);
|
|
133
|
-
const result = [];
|
|
134
|
-
await this.updateBuilder.addFieldValue(relation.name, async () => {
|
|
135
|
-
const primary = await select;
|
|
136
|
-
if (primary) {
|
|
137
|
-
return void 0;
|
|
138
|
-
}
|
|
139
|
-
const insertResult = await this.mapper.insert(targetEntity, create);
|
|
140
|
-
const insertPrimary = Result.getInsertPrimary(insertResult);
|
|
141
|
-
if (insertPrimary) {
|
|
142
|
-
return insertPrimary;
|
|
143
|
-
}
|
|
144
|
-
result.push(...insertResult);
|
|
145
|
-
return DataManipulationBuilder.AbortDataManipulation;
|
|
146
|
-
});
|
|
147
|
-
const inversePrimary = await select;
|
|
148
|
-
if (inversePrimary) {
|
|
149
|
-
return await this.mapper.update(targetEntity, { [targetEntity.primary]: inversePrimary }, update);
|
|
150
|
-
}
|
|
151
|
-
return result;
|
|
152
|
-
}
|
|
153
|
-
async disconnect({ entity, targetEntity, relation, targetRelation }) {
|
|
154
|
-
if (!relation.nullable) {
|
|
155
|
-
return [new Result.MutationConstraintViolationError([], Result.ConstraintType.notNull)];
|
|
156
|
-
}
|
|
157
|
-
const result = [];
|
|
158
|
-
const currentInverseSide = targetRelation && !targetRelation.nullable || relation.orphanRemoval ? this.mapper.selectField(entity, { [entity.primary]: this.primaryValue }, relation.name) : Promise.resolve(void 0);
|
|
159
|
-
this.updateBuilder.addFieldValue(relation.name, async () => {
|
|
160
|
-
const inversePrimary = await currentInverseSide;
|
|
161
|
-
if (inversePrimary && targetRelation && !targetRelation.nullable && !relation.orphanRemoval) {
|
|
162
|
-
result.push(new Result.MutationConstraintViolationError([], Result.ConstraintType.notNull));
|
|
163
|
-
return DataManipulationBuilder.AbortDataManipulation;
|
|
164
|
-
}
|
|
165
|
-
return null;
|
|
166
|
-
});
|
|
167
|
-
if (relation.orphanRemoval) {
|
|
168
|
-
const inversePrimary = await currentInverseSide;
|
|
169
|
-
if (inversePrimary) {
|
|
170
|
-
await this.updateBuilder.update;
|
|
171
|
-
const deleteOrphanedInverseSide = await this.mapper.delete(targetEntity, { [targetEntity.primary]: inversePrimary });
|
|
172
|
-
result.push(...deleteOrphanedInverseSide);
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
return result;
|
|
176
|
-
}
|
|
177
|
-
async delete({ entity, targetEntity, relation, targetRelation }) {
|
|
178
|
-
if (!relation.nullable && relation.joiningColumn.onDelete !== schema.Model.OnDelete.cascade) {
|
|
179
|
-
return [new Result.MutationConstraintViolationError([], Result.ConstraintType.notNull)];
|
|
180
|
-
}
|
|
181
|
-
if (relation.joiningColumn.onDelete === schema.Model.OnDelete.restrict) {
|
|
182
|
-
console.error(
|
|
183
|
-
"[DEPRECATED] You are deleting an entity over the relation where onDelete behaviour is set to restrict. This will fail in next version."
|
|
184
|
-
);
|
|
185
|
-
this.updateBuilder.addFieldValue(relation.name, null);
|
|
186
|
-
}
|
|
187
|
-
const targetPrimary = await this.mapper.selectField(
|
|
188
|
-
entity,
|
|
189
|
-
{ [entity.primary]: this.primaryValue },
|
|
190
|
-
relation.name
|
|
191
|
-
);
|
|
192
|
-
if (!targetPrimary) {
|
|
193
|
-
return [new Result.MutationNothingToDo([], Result.NothingToDoReason.emptyRelation)];
|
|
194
|
-
}
|
|
195
|
-
await this.updateBuilder.update;
|
|
196
|
-
return await this.mapper.delete(targetEntity, new CheckedPrimary.CheckedPrimary(targetPrimary));
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
exports.OneHasOneOwningUpdateInputProcessor = OneHasOneOwningUpdateInputProcessor;
|
|
200
|
-
//# sourceMappingURL=OneHasOneOwningUpdateInputProcessor.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"OneHasOneOwningUpdateInputProcessor.cjs","sources":["../../../../../../packages/engine-content-api/src/mapper/relations/OneHasOneOwningUpdateInputProcessor.ts"],"sourcesContent":["import { UpdateInputProcessor } from '../../inputProcessing'\nimport { Input, Model } from '@contember/schema'\nimport {\n\tConstraintType,\n\tgetInsertPrimary,\n\tMutationConstraintViolationError,\n\tMutationEntryNotFoundError,\n\tMutationNothingToDo,\n\tMutationResultList,\n\tNothingToDoReason,\n} from '../Result'\nimport { Mapper } from '../Mapper'\nimport { UpdateBuilder } from '../update/UpdateBuilder'\nimport { CheckedPrimary } from '../CheckedPrimary'\nimport { AbortDataManipulation } from '../DataManipulationBuilder'\n\nexport class OneHasOneOwningUpdateInputProcessor {\n\tconstructor(\n\t\tprivate readonly primaryValue: Input.PrimaryValue,\n\t\tprivate readonly mapper: Mapper,\n\t\tprivate readonly updateBuilder: UpdateBuilder,\n\t) {\n\t}\n\n\tpublic async connect(context: Model.OneHasOneOwningContext & { input: Input.UniqueWhere }) {\n\t\tconst result: MutationResultList = []\n\t\tlet currentInverseSide: Input.PrimaryValue | undefined\n\n\t\tconst { entity, relation, targetEntity, targetRelation, input } = context\n\t\tconst newInverseSide = await this.updateBuilder.addFieldValue(relation.name, async () => {\n\t\t\tconst newInverseSide = await this.mapper.getPrimaryValue(targetEntity, input)\n\t\t\tif (!newInverseSide) {\n\t\t\t\tresult.push(new MutationEntryNotFoundError([], input))\n\t\t\t\treturn AbortDataManipulation\n\t\t\t}\n\t\t\tcurrentInverseSide = await this.getCurrentInverseSide(targetRelation, relation, entity)\n\t\t\treturn await this.connectInternal(context, currentInverseSide, newInverseSide, result)\n\t\t})\n\n\t\tif (newInverseSide) {\n\t\t\tresult.push(...(await this.cleanupOrphan(relation, targetEntity, currentInverseSide)))\n\t\t}\n\n\t\treturn result\n\t}\n\n\tpublic async create(context: Model.OneHasOneOwningContext & { input: Input.CreateDataInput }) {\n\t\tconst result: MutationResultList = []\n\t\tlet currentInverseSide: Input.PrimaryValue | undefined\n\t\tconst { entity, relation, targetEntity, targetRelation } = context\n\t\tawait this.updateBuilder.addFieldValue(relation.name, async () => {\n\t\t\tcurrentInverseSide = await this.getCurrentInverseSide(targetRelation, relation, entity)\n\t\t\t// orphan removal handled bellow\n\t\t\treturn await this.createInternal(context, currentInverseSide, result)\n\t\t})\n\n\t\tresult.push(...(await this.cleanupOrphan(relation, targetEntity, currentInverseSide)))\n\t\treturn result\n\t}\n\n\tpublic async connectOrCreate({ input: { connect, create }, ...context }: Model.OneHasOneOwningContext & { input: Input.ConnectOrCreateInput }) {\n\t\tconst result: MutationResultList = []\n\t\tlet currentInverseSide: Input.PrimaryValue | undefined\n\n\t\tconst { relation, targetRelation, targetEntity, entity } = context\n\t\tconst newInverseSide = await this.updateBuilder.addFieldValue(relation.name, async () => {\n\t\t\tconst newInverseSide = await this.mapper.getPrimaryValue(targetEntity, connect)\n\t\t\tcurrentInverseSide = await this.getCurrentInverseSide(targetRelation, relation, entity)\n\t\t\tif (newInverseSide) {\n\t\t\t\treturn await this.connectInternal(context, currentInverseSide, newInverseSide, result)\n\t\t\t}\n\t\t\treturn await this.createInternal({ ...context, input: create }, currentInverseSide, result)\n\t\t})\n\n\t\tif (newInverseSide) {\n\t\t\tresult.push(...(await this.cleanupOrphan(relation, targetEntity, currentInverseSide)))\n\t\t}\n\n\t\treturn result\n\t}\n\n\tprivate async createInternal(\n\t\t{ targetEntity, targetRelation, relation, input }: Model.OneHasOneOwningContext & { input: Input.CreateDataInput },\n\t\tcurrentInverseSide: Input.PrimaryValue | undefined,\n\t\tresult: MutationResultList,\n\t) {\n\t\tif (targetRelation && !targetRelation.nullable && !relation.orphanRemoval && currentInverseSide) {\n\t\t\tresult.push(new MutationConstraintViolationError([], ConstraintType.notNull))\n\t\t\treturn AbortDataManipulation\n\t\t}\n\n\t\tconst insertResult = await this.mapper.insert(targetEntity, input)\n\t\tresult.push(...insertResult)\n\t\tconst newInverseSide = getInsertPrimary(insertResult)\n\t\tif (newInverseSide) {\n\t\t\treturn newInverseSide\n\t\t}\n\t\treturn AbortDataManipulation\n\t}\n\n\tprivate async connectInternal(\n\t\t{ targetEntity, targetRelation, relation, entity }: Model.OneHasOneOwningContext,\n\t\tcurrentInverseSide: Input.PrimaryValue | undefined,\n\t\tnewInverseSide: Input.PrimaryValue,\n\t\tresult: MutationResultList,\n\t) {\n\n\t\tif (currentInverseSide === newInverseSide) {\n\t\t\tresult.push(new MutationNothingToDo([], NothingToDoReason.alreadyExists))\n\t\t\treturn undefined\n\t\t}\n\n\t\tconst currentOwnerOfNewInverseSide = await this.mapper.getPrimaryValue(entity, {\n\t\t\t[relation.name]: { [targetEntity.primary]: newInverseSide },\n\t\t})\n\n\t\tif (currentOwnerOfNewInverseSide === this.primaryValue) {\n\t\t\tresult.push(new MutationNothingToDo([], NothingToDoReason.alreadyExists))\n\t\t\treturn undefined\n\t\t}\n\n\t\t// orphan removal handled bellow\n\t\tif (targetRelation && !targetRelation.nullable && !relation.orphanRemoval && currentInverseSide) {\n\t\t\tresult.push(new MutationConstraintViolationError([], ConstraintType.notNull))\n\t\t\treturn AbortDataManipulation\n\t\t}\n\n\t\tif (currentOwnerOfNewInverseSide) {\n\t\t\tif (!relation.nullable) {\n\t\t\t\tresult.push(new MutationConstraintViolationError([], ConstraintType.notNull))\n\t\t\t\treturn AbortDataManipulation\n\t\t\t}\n\n\t\t\tconst currentOwnerDisconnect = await this.mapper.updateInternal(\n\t\t\t\tentity,\n\t\t\t\t{\n\t\t\t\t\t[entity.primary]: currentOwnerOfNewInverseSide,\n\t\t\t\t},\n\t\t\t\tbuilder => {\n\t\t\t\t\tbuilder.addPredicates([relation.name])\n\t\t\t\t\tbuilder.addFieldValue(relation.name, null)\n\t\t\t\t},\n\t\t\t)\n\t\t\tresult.push(...currentOwnerDisconnect)\n\t\t}\n\t\treturn newInverseSide\n\t}\n\n\tprivate async getCurrentInverseSide(targetRelation: Model.OneHasOneInverseRelation | null, relation: Model.OneHasOneOwningRelation, entity: Model.Entity) {\n\t\tif ((targetRelation && !targetRelation.nullable) || relation.orphanRemoval) {\n\t\t\treturn this.mapper.selectField(entity, { [entity.primary]: this.primaryValue }, relation.name)\n\t\t}\n\t\treturn undefined\n\t}\n\n\tprivate async cleanupOrphan(relation: Model.OneHasOneOwningRelation, targetEntity: Model.Entity, currentInverseSide: Input.PrimaryValue | undefined) {\n\t\tif (relation.orphanRemoval && currentInverseSide) {\n\t\t\tawait this.updateBuilder.update\n\t\t\treturn await this.mapper.delete(targetEntity, { [targetEntity.primary]: currentInverseSide })\n\t\t}\n\t\treturn []\n\t}\n\n\tpublic async update({ entity, relation, targetEntity, input }: Model.OneHasOneOwningContext & { input: Input.UpdateDataInput }) {\n\t\tconst inversePrimary = await this.mapper.selectField(\n\t\t\tentity,\n\t\t\t{ [entity.primary]: this.primaryValue },\n\t\t\trelation.name,\n\t\t)\n\t\tif (!inversePrimary) {\n\t\t\treturn [new MutationNothingToDo([], NothingToDoReason.emptyRelation)]\n\t\t}\n\t\treturn await this.mapper.update(targetEntity, { [targetEntity.primary]: inversePrimary }, input)\n\t}\n\n\tpublic async upsert({ entity, relation, targetEntity, input: { create, update } }: Model.OneHasOneOwningContext & { input: UpdateInputProcessor.UpsertInput }) {\n\t\tconst select = this.mapper.selectField(entity, { [entity.primary]: this.primaryValue }, relation.name)\n\n\t\tconst result: MutationResultList = []\n\t\t//addColumnData has to be called synchronously\n\t\tawait this.updateBuilder.addFieldValue(relation.name, async () => {\n\t\t\tconst primary = await select\n\t\t\tif (primary) {\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\tconst insertResult = await this.mapper.insert(targetEntity, create)\n\t\t\tconst insertPrimary = getInsertPrimary(insertResult)\n\t\t\tif (insertPrimary) {\n\t\t\t\treturn insertPrimary\n\t\t\t}\n\t\t\tresult.push(...insertResult)\n\t\t\treturn AbortDataManipulation\n\t\t})\n\n\t\tconst inversePrimary = await select\n\t\tif (inversePrimary) {\n\t\t\treturn await this.mapper.update(targetEntity, { [targetEntity.primary]: inversePrimary }, update)\n\t\t}\n\t\treturn result\n\t}\n\n\tpublic async disconnect({ entity, targetEntity, relation, targetRelation }: Model.OneHasOneOwningContext & { input: undefined }) {\n\t\tif (!relation.nullable) {\n\t\t\treturn [new MutationConstraintViolationError([], ConstraintType.notNull)]\n\t\t}\n\t\tconst result: MutationResultList = []\n\n\t\tconst currentInverseSide = (targetRelation && !targetRelation.nullable) || relation.orphanRemoval\n\t\t\t? this.mapper.selectField(entity, { [entity.primary]: this.primaryValue }, relation.name)\n\t\t\t: Promise.resolve(undefined)\n\n\t\tthis.updateBuilder.addFieldValue(relation.name, async () => {\n\t\t\tconst inversePrimary = await currentInverseSide\n\t\t\tif (inversePrimary && targetRelation && !targetRelation.nullable && !relation.orphanRemoval) {\n\t\t\t\tresult.push(new MutationConstraintViolationError([], ConstraintType.notNull))\n\t\t\t\treturn AbortDataManipulation\n\t\t\t}\n\t\t\treturn null\n\t\t})\n\t\tif (relation.orphanRemoval) {\n\t\t\tconst inversePrimary = await currentInverseSide\n\t\t\tif (inversePrimary) {\n\t\t\t\tawait this.updateBuilder.update\n\t\t\t\tconst deleteOrphanedInverseSide = await this.mapper.delete(targetEntity, { [targetEntity.primary]: inversePrimary })\n\t\t\t\tresult.push(...deleteOrphanedInverseSide)\n\t\t\t}\n\t\t}\n\t\treturn result\n\t}\n\n\tpublic async delete({ entity, targetEntity, relation, targetRelation }: Model.OneHasOneOwningContext & { input: undefined }) {\n\t\tif (!relation.nullable && relation.joiningColumn.onDelete !== Model.OnDelete.cascade) {\n\t\t\treturn [new MutationConstraintViolationError([], ConstraintType.notNull)]\n\t\t}\n\t\tif (relation.joiningColumn.onDelete === Model.OnDelete.restrict) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.error(\n\t\t\t\t'[DEPRECATED] You are deleting an entity over the relation where onDelete behaviour is set to restrict. This will fail in next version.',\n\t\t\t)\n\t\t\tthis.updateBuilder.addFieldValue(relation.name, null)\n\t\t}\n\t\tconst targetPrimary = await this.mapper.selectField(\n\t\t\tentity,\n\t\t\t{ [entity.primary]: this.primaryValue },\n\t\t\trelation.name,\n\t\t)\n\t\tif (!targetPrimary) {\n\t\t\treturn [new MutationNothingToDo([], NothingToDoReason.emptyRelation)]\n\t\t}\n\t\tawait this.updateBuilder.update\n\t\treturn await this.mapper.delete(targetEntity, new CheckedPrimary(targetPrimary))\n\t}\n}\n"],"names":["newInverseSide","MutationEntryNotFoundError","AbortDataManipulation","MutationConstraintViolationError","ConstraintType","getInsertPrimary","MutationNothingToDo","NothingToDoReason","Model","CheckedPrimary"],"mappings":"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"}
|