@contember/engine-content-api 2.0.0-alpha.19 → 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/select/handlers/FieldsVisitor.cjs +3 -0
- package/dist/development/src/mapper/select/handlers/FieldsVisitor.cjs.map +1 -1
- package/dist/development/src/mapper/select/handlers/FieldsVisitor.js +3 -0
- package/dist/development/src/mapper/select/handlers/FieldsVisitor.js.map +1 -1
- 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/select/handlers/FieldsVisitor.cjs +3 -0
- package/dist/production/src/mapper/select/handlers/FieldsVisitor.cjs.map +1 -1
- package/dist/production/src/mapper/select/handlers/FieldsVisitor.js +3 -0
- package/dist/production/src/mapper/select/handlers/FieldsVisitor.js.map +1 -1
- 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/select/handlers/FieldsVisitor.d.ts.map +1 -1
- 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 +11 -11
- 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/select/handlers/FieldsVisitor.ts +3 -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,200 +0,0 @@
|
|
|
1
|
-
import { Model } from "@contember/schema";
|
|
2
|
-
import { MutationEntryNotFoundError, MutationConstraintViolationError, ConstraintType, getInsertPrimary, MutationNothingToDo, NothingToDoReason } from "../Result.js";
|
|
3
|
-
import { CheckedPrimary } from "../CheckedPrimary.js";
|
|
4
|
-
import { AbortDataManipulation } from "../DataManipulationBuilder.js";
|
|
5
|
-
class OneHasOneOwningUpdateInputProcessor {
|
|
6
|
-
constructor(primaryValue, mapper, updateBuilder) {
|
|
7
|
-
this.primaryValue = primaryValue;
|
|
8
|
-
this.mapper = mapper;
|
|
9
|
-
this.updateBuilder = updateBuilder;
|
|
10
|
-
}
|
|
11
|
-
async connect(context) {
|
|
12
|
-
const result = [];
|
|
13
|
-
let currentInverseSide;
|
|
14
|
-
const { entity, relation, targetEntity, targetRelation, input } = context;
|
|
15
|
-
const newInverseSide = await this.updateBuilder.addFieldValue(relation.name, async () => {
|
|
16
|
-
const newInverseSide2 = await this.mapper.getPrimaryValue(targetEntity, input);
|
|
17
|
-
if (!newInverseSide2) {
|
|
18
|
-
result.push(new MutationEntryNotFoundError([], input));
|
|
19
|
-
return AbortDataManipulation;
|
|
20
|
-
}
|
|
21
|
-
currentInverseSide = await this.getCurrentInverseSide(targetRelation, relation, entity);
|
|
22
|
-
return await this.connectInternal(context, currentInverseSide, newInverseSide2, result);
|
|
23
|
-
});
|
|
24
|
-
if (newInverseSide) {
|
|
25
|
-
result.push(...await this.cleanupOrphan(relation, targetEntity, currentInverseSide));
|
|
26
|
-
}
|
|
27
|
-
return result;
|
|
28
|
-
}
|
|
29
|
-
async create(context) {
|
|
30
|
-
const result = [];
|
|
31
|
-
let currentInverseSide;
|
|
32
|
-
const { entity, relation, targetEntity, targetRelation } = context;
|
|
33
|
-
await this.updateBuilder.addFieldValue(relation.name, async () => {
|
|
34
|
-
currentInverseSide = await this.getCurrentInverseSide(targetRelation, relation, entity);
|
|
35
|
-
return await this.createInternal(context, currentInverseSide, result);
|
|
36
|
-
});
|
|
37
|
-
result.push(...await this.cleanupOrphan(relation, targetEntity, currentInverseSide));
|
|
38
|
-
return result;
|
|
39
|
-
}
|
|
40
|
-
async connectOrCreate({ input: { connect, create }, ...context }) {
|
|
41
|
-
const result = [];
|
|
42
|
-
let currentInverseSide;
|
|
43
|
-
const { relation, targetRelation, targetEntity, entity } = context;
|
|
44
|
-
const newInverseSide = await this.updateBuilder.addFieldValue(relation.name, async () => {
|
|
45
|
-
const newInverseSide2 = await this.mapper.getPrimaryValue(targetEntity, connect);
|
|
46
|
-
currentInverseSide = await this.getCurrentInverseSide(targetRelation, relation, entity);
|
|
47
|
-
if (newInverseSide2) {
|
|
48
|
-
return await this.connectInternal(context, currentInverseSide, newInverseSide2, result);
|
|
49
|
-
}
|
|
50
|
-
return await this.createInternal({ ...context, input: create }, currentInverseSide, result);
|
|
51
|
-
});
|
|
52
|
-
if (newInverseSide) {
|
|
53
|
-
result.push(...await this.cleanupOrphan(relation, targetEntity, currentInverseSide));
|
|
54
|
-
}
|
|
55
|
-
return result;
|
|
56
|
-
}
|
|
57
|
-
async createInternal({ targetEntity, targetRelation, relation, input }, currentInverseSide, result) {
|
|
58
|
-
if (targetRelation && !targetRelation.nullable && !relation.orphanRemoval && currentInverseSide) {
|
|
59
|
-
result.push(new MutationConstraintViolationError([], ConstraintType.notNull));
|
|
60
|
-
return AbortDataManipulation;
|
|
61
|
-
}
|
|
62
|
-
const insertResult = await this.mapper.insert(targetEntity, input);
|
|
63
|
-
result.push(...insertResult);
|
|
64
|
-
const newInverseSide = getInsertPrimary(insertResult);
|
|
65
|
-
if (newInverseSide) {
|
|
66
|
-
return newInverseSide;
|
|
67
|
-
}
|
|
68
|
-
return AbortDataManipulation;
|
|
69
|
-
}
|
|
70
|
-
async connectInternal({ targetEntity, targetRelation, relation, entity }, currentInverseSide, newInverseSide, result) {
|
|
71
|
-
if (currentInverseSide === newInverseSide) {
|
|
72
|
-
result.push(new MutationNothingToDo([], NothingToDoReason.alreadyExists));
|
|
73
|
-
return void 0;
|
|
74
|
-
}
|
|
75
|
-
const currentOwnerOfNewInverseSide = await this.mapper.getPrimaryValue(entity, {
|
|
76
|
-
[relation.name]: { [targetEntity.primary]: newInverseSide }
|
|
77
|
-
});
|
|
78
|
-
if (currentOwnerOfNewInverseSide === this.primaryValue) {
|
|
79
|
-
result.push(new MutationNothingToDo([], NothingToDoReason.alreadyExists));
|
|
80
|
-
return void 0;
|
|
81
|
-
}
|
|
82
|
-
if (targetRelation && !targetRelation.nullable && !relation.orphanRemoval && currentInverseSide) {
|
|
83
|
-
result.push(new MutationConstraintViolationError([], ConstraintType.notNull));
|
|
84
|
-
return AbortDataManipulation;
|
|
85
|
-
}
|
|
86
|
-
if (currentOwnerOfNewInverseSide) {
|
|
87
|
-
if (!relation.nullable) {
|
|
88
|
-
result.push(new MutationConstraintViolationError([], ConstraintType.notNull));
|
|
89
|
-
return AbortDataManipulation;
|
|
90
|
-
}
|
|
91
|
-
const currentOwnerDisconnect = await this.mapper.updateInternal(
|
|
92
|
-
entity,
|
|
93
|
-
{
|
|
94
|
-
[entity.primary]: currentOwnerOfNewInverseSide
|
|
95
|
-
},
|
|
96
|
-
(builder) => {
|
|
97
|
-
builder.addPredicates([relation.name]);
|
|
98
|
-
builder.addFieldValue(relation.name, null);
|
|
99
|
-
}
|
|
100
|
-
);
|
|
101
|
-
result.push(...currentOwnerDisconnect);
|
|
102
|
-
}
|
|
103
|
-
return newInverseSide;
|
|
104
|
-
}
|
|
105
|
-
async getCurrentInverseSide(targetRelation, relation, entity) {
|
|
106
|
-
if (targetRelation && !targetRelation.nullable || relation.orphanRemoval) {
|
|
107
|
-
return this.mapper.selectField(entity, { [entity.primary]: this.primaryValue }, relation.name);
|
|
108
|
-
}
|
|
109
|
-
return void 0;
|
|
110
|
-
}
|
|
111
|
-
async cleanupOrphan(relation, targetEntity, currentInverseSide) {
|
|
112
|
-
if (relation.orphanRemoval && currentInverseSide) {
|
|
113
|
-
await this.updateBuilder.update;
|
|
114
|
-
return await this.mapper.delete(targetEntity, { [targetEntity.primary]: currentInverseSide });
|
|
115
|
-
}
|
|
116
|
-
return [];
|
|
117
|
-
}
|
|
118
|
-
async update({ entity, relation, targetEntity, input }) {
|
|
119
|
-
const inversePrimary = await this.mapper.selectField(
|
|
120
|
-
entity,
|
|
121
|
-
{ [entity.primary]: this.primaryValue },
|
|
122
|
-
relation.name
|
|
123
|
-
);
|
|
124
|
-
if (!inversePrimary) {
|
|
125
|
-
return [new MutationNothingToDo([], NothingToDoReason.emptyRelation)];
|
|
126
|
-
}
|
|
127
|
-
return await this.mapper.update(targetEntity, { [targetEntity.primary]: inversePrimary }, input);
|
|
128
|
-
}
|
|
129
|
-
async upsert({ entity, relation, targetEntity, input: { create, update } }) {
|
|
130
|
-
const select = this.mapper.selectField(entity, { [entity.primary]: this.primaryValue }, relation.name);
|
|
131
|
-
const result = [];
|
|
132
|
-
await this.updateBuilder.addFieldValue(relation.name, async () => {
|
|
133
|
-
const primary = await select;
|
|
134
|
-
if (primary) {
|
|
135
|
-
return void 0;
|
|
136
|
-
}
|
|
137
|
-
const insertResult = await this.mapper.insert(targetEntity, create);
|
|
138
|
-
const insertPrimary = getInsertPrimary(insertResult);
|
|
139
|
-
if (insertPrimary) {
|
|
140
|
-
return insertPrimary;
|
|
141
|
-
}
|
|
142
|
-
result.push(...insertResult);
|
|
143
|
-
return AbortDataManipulation;
|
|
144
|
-
});
|
|
145
|
-
const inversePrimary = await select;
|
|
146
|
-
if (inversePrimary) {
|
|
147
|
-
return await this.mapper.update(targetEntity, { [targetEntity.primary]: inversePrimary }, update);
|
|
148
|
-
}
|
|
149
|
-
return result;
|
|
150
|
-
}
|
|
151
|
-
async disconnect({ entity, targetEntity, relation, targetRelation }) {
|
|
152
|
-
if (!relation.nullable) {
|
|
153
|
-
return [new MutationConstraintViolationError([], ConstraintType.notNull)];
|
|
154
|
-
}
|
|
155
|
-
const result = [];
|
|
156
|
-
const currentInverseSide = targetRelation && !targetRelation.nullable || relation.orphanRemoval ? this.mapper.selectField(entity, { [entity.primary]: this.primaryValue }, relation.name) : Promise.resolve(void 0);
|
|
157
|
-
this.updateBuilder.addFieldValue(relation.name, async () => {
|
|
158
|
-
const inversePrimary = await currentInverseSide;
|
|
159
|
-
if (inversePrimary && targetRelation && !targetRelation.nullable && !relation.orphanRemoval) {
|
|
160
|
-
result.push(new MutationConstraintViolationError([], ConstraintType.notNull));
|
|
161
|
-
return AbortDataManipulation;
|
|
162
|
-
}
|
|
163
|
-
return null;
|
|
164
|
-
});
|
|
165
|
-
if (relation.orphanRemoval) {
|
|
166
|
-
const inversePrimary = await currentInverseSide;
|
|
167
|
-
if (inversePrimary) {
|
|
168
|
-
await this.updateBuilder.update;
|
|
169
|
-
const deleteOrphanedInverseSide = await this.mapper.delete(targetEntity, { [targetEntity.primary]: inversePrimary });
|
|
170
|
-
result.push(...deleteOrphanedInverseSide);
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
return result;
|
|
174
|
-
}
|
|
175
|
-
async delete({ entity, targetEntity, relation, targetRelation }) {
|
|
176
|
-
if (!relation.nullable && relation.joiningColumn.onDelete !== Model.OnDelete.cascade) {
|
|
177
|
-
return [new MutationConstraintViolationError([], ConstraintType.notNull)];
|
|
178
|
-
}
|
|
179
|
-
if (relation.joiningColumn.onDelete === Model.OnDelete.restrict) {
|
|
180
|
-
console.error(
|
|
181
|
-
"[DEPRECATED] You are deleting an entity over the relation where onDelete behaviour is set to restrict. This will fail in next version."
|
|
182
|
-
);
|
|
183
|
-
this.updateBuilder.addFieldValue(relation.name, null);
|
|
184
|
-
}
|
|
185
|
-
const targetPrimary = await this.mapper.selectField(
|
|
186
|
-
entity,
|
|
187
|
-
{ [entity.primary]: this.primaryValue },
|
|
188
|
-
relation.name
|
|
189
|
-
);
|
|
190
|
-
if (!targetPrimary) {
|
|
191
|
-
return [new MutationNothingToDo([], NothingToDoReason.emptyRelation)];
|
|
192
|
-
}
|
|
193
|
-
await this.updateBuilder.update;
|
|
194
|
-
return await this.mapper.delete(targetEntity, new CheckedPrimary(targetPrimary));
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
export {
|
|
198
|
-
OneHasOneOwningUpdateInputProcessor
|
|
199
|
-
};
|
|
200
|
-
//# sourceMappingURL=OneHasOneOwningUpdateInputProcessor.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"OneHasOneOwningUpdateInputProcessor.js","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"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DataManipulationBuilder.cjs","sources":["../../../../../packages/engine-content-api/src/mapper/DataManipulationBuilder.ts"],"sourcesContent":["import { Value } from '@contember/schema'\n\nexport interface DataManipulationBuilder {\n\taddFieldValue(\n\t\tfieldName: string,\n\t\tvalue: Value.GenericValueLike<Value.AtomicValue<AbortDataManipulation | undefined>>,\n\t): Promise<Value.AtomicValue<AbortDataManipulation | undefined>>\n}\n\n\nexport const AbortDataManipulation = Symbol('AbortDataManipulation')\nexport type AbortDataManipulation = typeof AbortDataManipulation\n"],"names":[],"mappings":";;AAUa,MAAA,wBAAwB,OAAO,uBAAuB;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DataManipulationBuilder.js","sources":["../../../../../packages/engine-content-api/src/mapper/DataManipulationBuilder.ts"],"sourcesContent":["import { Value } from '@contember/schema'\n\nexport interface DataManipulationBuilder {\n\taddFieldValue(\n\t\tfieldName: string,\n\t\tvalue: Value.GenericValueLike<Value.AtomicValue<AbortDataManipulation | undefined>>,\n\t): Promise<Value.AtomicValue<AbortDataManipulation | undefined>>\n}\n\n\nexport const AbortDataManipulation = Symbol('AbortDataManipulation')\nexport type AbortDataManipulation = typeof AbortDataManipulation\n"],"names":[],"mappings":"AAUa,MAAA,wBAAwB,OAAO,uBAAuB;"}
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const Result = require("../Result.cjs");
|
|
4
|
-
class ManyHasManyInputProcessor {
|
|
5
|
-
constructor(mapper) {
|
|
6
|
-
this.mapper = mapper;
|
|
7
|
-
}
|
|
8
|
-
async connect({ entity, targetEntity, relation, targetRelation, input }, primary) {
|
|
9
|
-
const otherPrimary = await this.mapper.getPrimaryValue(targetEntity, input);
|
|
10
|
-
if (!otherPrimary) {
|
|
11
|
-
return [new Result.MutationEntryNotFoundError([], input)];
|
|
12
|
-
}
|
|
13
|
-
return await this.mapper.connectJunction(entity, relation, primary, otherPrimary);
|
|
14
|
-
}
|
|
15
|
-
async create({ entity, targetEntity, relation, input }, primary) {
|
|
16
|
-
const insertResult = await this.mapper.insert(targetEntity, input);
|
|
17
|
-
const insertPrimary = Result.getInsertPrimary(insertResult);
|
|
18
|
-
if (!insertPrimary) {
|
|
19
|
-
return insertResult;
|
|
20
|
-
}
|
|
21
|
-
return [
|
|
22
|
-
...insertResult,
|
|
23
|
-
...await this.mapper.connectJunction(entity, relation, primary, insertPrimary)
|
|
24
|
-
];
|
|
25
|
-
}
|
|
26
|
-
async connectOrCreate(context, primary) {
|
|
27
|
-
let otherPrimary = await this.mapper.getPrimaryValue(context.targetEntity, context.input.connect);
|
|
28
|
-
if (!otherPrimary) {
|
|
29
|
-
const insertResult = await this.mapper.insert(context.targetEntity, context.input.create);
|
|
30
|
-
otherPrimary = Result.getInsertPrimary(insertResult);
|
|
31
|
-
if (!otherPrimary) {
|
|
32
|
-
return insertResult;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
return await this.mapper.connectJunction(context.entity, context.relation, primary, otherPrimary);
|
|
36
|
-
}
|
|
37
|
-
async update({ entity, targetEntity, relation, input: { where, data } }, primary) {
|
|
38
|
-
const otherPrimary = await this.mapper.getPrimaryValue(targetEntity, where);
|
|
39
|
-
if (!otherPrimary) {
|
|
40
|
-
return [new Result.MutationEntryNotFoundError([], where)];
|
|
41
|
-
}
|
|
42
|
-
return [
|
|
43
|
-
...await this.mapper.update(targetEntity, { [targetEntity.primary]: otherPrimary }, data),
|
|
44
|
-
...await this.mapper.connectJunction(entity, relation, primary, otherPrimary)
|
|
45
|
-
];
|
|
46
|
-
}
|
|
47
|
-
async upsert({ entity, relation, targetEntity, input: { create, update, where } }, primary) {
|
|
48
|
-
const otherPrimary = await this.mapper.getPrimaryValue(targetEntity, where);
|
|
49
|
-
if (otherPrimary) {
|
|
50
|
-
const updateResult = await this.mapper.update(targetEntity, { [targetEntity.primary]: otherPrimary }, update);
|
|
51
|
-
const connectResult = await this.mapper.connectJunction(entity, relation, primary, otherPrimary);
|
|
52
|
-
return [...updateResult, ...connectResult];
|
|
53
|
-
} else {
|
|
54
|
-
const insertResult = await this.mapper.insert(targetEntity, create);
|
|
55
|
-
const primaryValue = Result.getInsertPrimary(insertResult);
|
|
56
|
-
if (!primaryValue) {
|
|
57
|
-
return insertResult;
|
|
58
|
-
}
|
|
59
|
-
const connectResult = await this.mapper.connectJunction(entity, relation, primary, primaryValue);
|
|
60
|
-
return [...insertResult, ...connectResult];
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
async disconnect({ entity, targetEntity, relation, input }, primary) {
|
|
64
|
-
const otherPrimary = await this.mapper.getPrimaryValue(targetEntity, input);
|
|
65
|
-
if (!otherPrimary) {
|
|
66
|
-
return [new Result.MutationEntryNotFoundError([], input)];
|
|
67
|
-
}
|
|
68
|
-
return await this.mapper.disconnectJunction(entity, relation, primary, otherPrimary);
|
|
69
|
-
}
|
|
70
|
-
async delete({ entity, targetEntity, relation, targetRelation, input }, primary) {
|
|
71
|
-
return await this.mapper.delete(targetEntity, input);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
exports.ManyHasManyInputProcessor = ManyHasManyInputProcessor;
|
|
75
|
-
//# sourceMappingURL=ManyHasManyInputProcessor.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ManyHasManyInputProcessor.cjs","sources":["../../../../../../packages/engine-content-api/src/mapper/relations/ManyHasManyInputProcessor.ts"],"sourcesContent":["import { UpdateInputProcessor } from '../../inputProcessing'\nimport { Input, Model } from '@contember/schema'\nimport { getInsertPrimary, MutationEntryNotFoundError, MutationResultList } from '../Result'\nimport { Mapper } from '../Mapper'\n\ntype RelationContext = Model.ManyHasManyOwningContext | Model.ManyHasManyInverseContext\n\nexport class ManyHasManyInputProcessor {\n\tconstructor(\n\t\tprivate readonly mapper: Mapper,\n\t) {\n\t}\n\n\tpublic async connect(\n\t\t{ entity, targetEntity, relation, targetRelation, input }: RelationContext & { input: Input.UniqueWhere },\n\t\tprimary: Input.PrimaryValue,\n\t) {\n\t\tconst otherPrimary = await this.mapper.getPrimaryValue(targetEntity, input)\n\t\tif (!otherPrimary) {\n\t\t\treturn [new MutationEntryNotFoundError([], input)]\n\t\t}\n\t\treturn await this.mapper.connectJunction(entity, relation, primary, otherPrimary)\n\t}\n\n\tpublic async create(\n\t\t{ entity, targetEntity, relation, input }: RelationContext & { input: Input.CreateDataInput },\n\t\tprimary: Input.PrimaryValue,\n\t) {\n\t\tconst insertResult = await this.mapper.insert(targetEntity, input)\n\t\tconst insertPrimary = getInsertPrimary(insertResult)\n\t\tif (!insertPrimary) {\n\t\t\treturn insertResult\n\t\t}\n\t\treturn [\n\t\t\t...insertResult,\n\t\t\t...(await this.mapper.connectJunction(entity, relation, primary, insertPrimary)),\n\t\t]\n\t}\n\n\tpublic async connectOrCreate(\n\t\tcontext: RelationContext & { input: Input.ConnectOrCreateInput },\n\t\tprimary: Input.PrimaryValue,\n\t): Promise<MutationResultList> {\n\t\tlet otherPrimary = await this.mapper.getPrimaryValue(context.targetEntity, context.input.connect)\n\t\tif (!otherPrimary) {\n\t\t\tconst insertResult = await this.mapper.insert(context.targetEntity, context.input.create)\n\t\t\totherPrimary = getInsertPrimary(insertResult)\n\t\t\tif (!otherPrimary) {\n\t\t\t\treturn insertResult\n\t\t\t}\n\t\t}\n\t\treturn await this.mapper.connectJunction(context.entity, context.relation, primary, otherPrimary)\n\t}\n\n\tpublic async update(\n\t\t{ entity, targetEntity, relation, input: { where, data } }: RelationContext & { input: UpdateInputProcessor.UpdateManyInput },\n\t\tprimary: Input.PrimaryValue,\n\t) {\n\t\tconst otherPrimary = await this.mapper.getPrimaryValue(targetEntity, where)\n\t\tif (!otherPrimary) {\n\t\t\treturn [new MutationEntryNotFoundError([], where)]\n\t\t}\n\t\treturn [\n\t\t\t...(await this.mapper.update(targetEntity, { [targetEntity.primary]: otherPrimary }, data)),\n\t\t\t...(await this.mapper.connectJunction(entity, relation, primary, otherPrimary)),\n\t\t]\n\t}\n\n\tpublic async upsert(\n\t\t{ entity, relation, targetEntity, input: { create, update, where } }: RelationContext & { input: UpdateInputProcessor.UpsertManyInput },\n\t\tprimary: Input.PrimaryValue,\n\t) {\n\t\tconst otherPrimary = await this.mapper.getPrimaryValue(targetEntity, where)\n\t\tif (otherPrimary) {\n\t\t\tconst updateResult = await this.mapper.update(targetEntity, { [targetEntity.primary]: otherPrimary }, update)\n\t\t\tconst connectResult = await this.mapper.connectJunction(entity, relation, primary, otherPrimary)\n\t\t\treturn [...updateResult, ...connectResult]\n\t\t} else {\n\t\t\tconst insertResult = await this.mapper.insert(targetEntity, create)\n\n\t\t\tconst primaryValue = getInsertPrimary(insertResult)\n\t\t\tif (!primaryValue) {\n\t\t\t\treturn insertResult\n\t\t\t}\n\t\t\tconst connectResult = await this.mapper.connectJunction(entity, relation, primary, primaryValue)\n\t\t\treturn [...insertResult, ...connectResult]\n\t\t}\n\t}\n\n\tpublic async disconnect(\n\t\t{ entity, targetEntity, relation, input }: RelationContext & { input: Input.UniqueWhere },\n\t\tprimary: Input.PrimaryValue,\n\t) {\n\t\tconst otherPrimary = await this.mapper.getPrimaryValue(targetEntity, input)\n\t\tif (!otherPrimary) {\n\t\t\treturn [new MutationEntryNotFoundError([], input)]\n\t\t}\n\n\t\treturn await this.mapper.disconnectJunction(entity, relation, primary, otherPrimary)\n\t}\n\n\tpublic async delete(\n\t\t{ entity, targetEntity, relation, targetRelation, input }: RelationContext & { input: Input.UniqueWhere },\n\t\tprimary: Input.PrimaryValue,\n\t) {\n\t\treturn await this.mapper.delete(targetEntity, input)\n\t}\n}\n"],"names":["MutationEntryNotFoundError","getInsertPrimary"],"mappings":";;;AAOO,MAAM,0BAA0B;AAAA,EACtC,YACkB,QAChB;AADgB,SAAA,SAAA;AAAA,EAElB;AAAA,EAEA,MAAa,QACZ,EAAE,QAAQ,cAAc,UAAU,gBAAgB,MAAM,GACxD,SACC;AACD,UAAM,eAAe,MAAM,KAAK,OAAO,gBAAgB,cAAc,KAAK;AAC1E,QAAI,CAAC,cAAc;AAClB,aAAO,CAAC,IAAIA,OAAA,2BAA2B,IAAI,KAAK,CAAC;AAAA,IAClD;AACA,WAAO,MAAM,KAAK,OAAO,gBAAgB,QAAQ,UAAU,SAAS,YAAY;AAAA,EACjF;AAAA,EAEA,MAAa,OACZ,EAAE,QAAQ,cAAc,UAAU,SAClC,SACC;AACD,UAAM,eAAe,MAAM,KAAK,OAAO,OAAO,cAAc,KAAK;AAC3D,UAAA,gBAAgBC,wBAAiB,YAAY;AACnD,QAAI,CAAC,eAAe;AACZ,aAAA;AAAA,IACR;AACO,WAAA;AAAA,MACN,GAAG;AAAA,MACH,GAAI,MAAM,KAAK,OAAO,gBAAgB,QAAQ,UAAU,SAAS,aAAa;AAAA,IAAA;AAAA,EAEhF;AAAA,EAEA,MAAa,gBACZ,SACA,SAC8B;AAC1B,QAAA,eAAe,MAAM,KAAK,OAAO,gBAAgB,QAAQ,cAAc,QAAQ,MAAM,OAAO;AAChG,QAAI,CAAC,cAAc;AACZ,YAAA,eAAe,MAAM,KAAK,OAAO,OAAO,QAAQ,cAAc,QAAQ,MAAM,MAAM;AACxF,qBAAeA,OAAAA,iBAAiB,YAAY;AAC5C,UAAI,CAAC,cAAc;AACX,eAAA;AAAA,MACR;AAAA,IACD;AACO,WAAA,MAAM,KAAK,OAAO,gBAAgB,QAAQ,QAAQ,QAAQ,UAAU,SAAS,YAAY;AAAA,EACjG;AAAA,EAEA,MAAa,OACZ,EAAE,QAAQ,cAAc,UAAU,OAAO,EAAE,OAAO,OAAO,GACzD,SACC;AACD,UAAM,eAAe,MAAM,KAAK,OAAO,gBAAgB,cAAc,KAAK;AAC1E,QAAI,CAAC,cAAc;AAClB,aAAO,CAAC,IAAID,OAAA,2BAA2B,IAAI,KAAK,CAAC;AAAA,IAClD;AACO,WAAA;AAAA,MACN,GAAI,MAAM,KAAK,OAAO,OAAO,cAAc,EAAE,CAAC,aAAa,OAAO,GAAG,gBAAgB,IAAI;AAAA,MACzF,GAAI,MAAM,KAAK,OAAO,gBAAgB,QAAQ,UAAU,SAAS,YAAY;AAAA,IAAA;AAAA,EAE/E;AAAA,EAEA,MAAa,OACZ,EAAE,QAAQ,UAAU,cAAc,OAAO,EAAE,QAAQ,QAAQ,MAAM,EAAA,GACjE,SACC;AACD,UAAM,eAAe,MAAM,KAAK,OAAO,gBAAgB,cAAc,KAAK;AAC1E,QAAI,cAAc;AACjB,YAAM,eAAe,MAAM,KAAK,OAAO,OAAO,cAAc,EAAE,CAAC,aAAa,OAAO,GAAG,gBAAgB,MAAM;AACtG,YAAA,gBAAgB,MAAM,KAAK,OAAO,gBAAgB,QAAQ,UAAU,SAAS,YAAY;AAC/F,aAAO,CAAC,GAAG,cAAc,GAAG,aAAa;AAAA,IAAA,OACnC;AACN,YAAM,eAAe,MAAM,KAAK,OAAO,OAAO,cAAc,MAAM;AAE5D,YAAA,eAAeC,wBAAiB,YAAY;AAClD,UAAI,CAAC,cAAc;AACX,eAAA;AAAA,MACR;AACM,YAAA,gBAAgB,MAAM,KAAK,OAAO,gBAAgB,QAAQ,UAAU,SAAS,YAAY;AAC/F,aAAO,CAAC,GAAG,cAAc,GAAG,aAAa;AAAA,IAC1C;AAAA,EACD;AAAA,EAEA,MAAa,WACZ,EAAE,QAAQ,cAAc,UAAU,SAClC,SACC;AACD,UAAM,eAAe,MAAM,KAAK,OAAO,gBAAgB,cAAc,KAAK;AAC1E,QAAI,CAAC,cAAc;AAClB,aAAO,CAAC,IAAID,OAAA,2BAA2B,IAAI,KAAK,CAAC;AAAA,IAClD;AAEA,WAAO,MAAM,KAAK,OAAO,mBAAmB,QAAQ,UAAU,SAAS,YAAY;AAAA,EACpF;AAAA,EAEA,MAAa,OACZ,EAAE,QAAQ,cAAc,UAAU,gBAAgB,MAAM,GACxD,SACC;AACD,WAAO,MAAM,KAAK,OAAO,OAAO,cAAc,KAAK;AAAA,EACpD;AACD;;"}
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import { MutationEntryNotFoundError, getInsertPrimary } from "../Result.js";
|
|
2
|
-
class ManyHasManyInputProcessor {
|
|
3
|
-
constructor(mapper) {
|
|
4
|
-
this.mapper = mapper;
|
|
5
|
-
}
|
|
6
|
-
async connect({ entity, targetEntity, relation, targetRelation, input }, primary) {
|
|
7
|
-
const otherPrimary = await this.mapper.getPrimaryValue(targetEntity, input);
|
|
8
|
-
if (!otherPrimary) {
|
|
9
|
-
return [new MutationEntryNotFoundError([], input)];
|
|
10
|
-
}
|
|
11
|
-
return await this.mapper.connectJunction(entity, relation, primary, otherPrimary);
|
|
12
|
-
}
|
|
13
|
-
async create({ entity, targetEntity, relation, input }, primary) {
|
|
14
|
-
const insertResult = await this.mapper.insert(targetEntity, input);
|
|
15
|
-
const insertPrimary = getInsertPrimary(insertResult);
|
|
16
|
-
if (!insertPrimary) {
|
|
17
|
-
return insertResult;
|
|
18
|
-
}
|
|
19
|
-
return [
|
|
20
|
-
...insertResult,
|
|
21
|
-
...await this.mapper.connectJunction(entity, relation, primary, insertPrimary)
|
|
22
|
-
];
|
|
23
|
-
}
|
|
24
|
-
async connectOrCreate(context, primary) {
|
|
25
|
-
let otherPrimary = await this.mapper.getPrimaryValue(context.targetEntity, context.input.connect);
|
|
26
|
-
if (!otherPrimary) {
|
|
27
|
-
const insertResult = await this.mapper.insert(context.targetEntity, context.input.create);
|
|
28
|
-
otherPrimary = getInsertPrimary(insertResult);
|
|
29
|
-
if (!otherPrimary) {
|
|
30
|
-
return insertResult;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
return await this.mapper.connectJunction(context.entity, context.relation, primary, otherPrimary);
|
|
34
|
-
}
|
|
35
|
-
async update({ entity, targetEntity, relation, input: { where, data } }, primary) {
|
|
36
|
-
const otherPrimary = await this.mapper.getPrimaryValue(targetEntity, where);
|
|
37
|
-
if (!otherPrimary) {
|
|
38
|
-
return [new MutationEntryNotFoundError([], where)];
|
|
39
|
-
}
|
|
40
|
-
return [
|
|
41
|
-
...await this.mapper.update(targetEntity, { [targetEntity.primary]: otherPrimary }, data),
|
|
42
|
-
...await this.mapper.connectJunction(entity, relation, primary, otherPrimary)
|
|
43
|
-
];
|
|
44
|
-
}
|
|
45
|
-
async upsert({ entity, relation, targetEntity, input: { create, update, where } }, primary) {
|
|
46
|
-
const otherPrimary = await this.mapper.getPrimaryValue(targetEntity, where);
|
|
47
|
-
if (otherPrimary) {
|
|
48
|
-
const updateResult = await this.mapper.update(targetEntity, { [targetEntity.primary]: otherPrimary }, update);
|
|
49
|
-
const connectResult = await this.mapper.connectJunction(entity, relation, primary, otherPrimary);
|
|
50
|
-
return [...updateResult, ...connectResult];
|
|
51
|
-
} else {
|
|
52
|
-
const insertResult = await this.mapper.insert(targetEntity, create);
|
|
53
|
-
const primaryValue = getInsertPrimary(insertResult);
|
|
54
|
-
if (!primaryValue) {
|
|
55
|
-
return insertResult;
|
|
56
|
-
}
|
|
57
|
-
const connectResult = await this.mapper.connectJunction(entity, relation, primary, primaryValue);
|
|
58
|
-
return [...insertResult, ...connectResult];
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
async disconnect({ entity, targetEntity, relation, input }, primary) {
|
|
62
|
-
const otherPrimary = await this.mapper.getPrimaryValue(targetEntity, input);
|
|
63
|
-
if (!otherPrimary) {
|
|
64
|
-
return [new MutationEntryNotFoundError([], input)];
|
|
65
|
-
}
|
|
66
|
-
return await this.mapper.disconnectJunction(entity, relation, primary, otherPrimary);
|
|
67
|
-
}
|
|
68
|
-
async delete({ entity, targetEntity, relation, targetRelation, input }, primary) {
|
|
69
|
-
return await this.mapper.delete(targetEntity, input);
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
export {
|
|
73
|
-
ManyHasManyInputProcessor
|
|
74
|
-
};
|
|
75
|
-
//# sourceMappingURL=ManyHasManyInputProcessor.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ManyHasManyInputProcessor.js","sources":["../../../../../../packages/engine-content-api/src/mapper/relations/ManyHasManyInputProcessor.ts"],"sourcesContent":["import { UpdateInputProcessor } from '../../inputProcessing'\nimport { Input, Model } from '@contember/schema'\nimport { getInsertPrimary, MutationEntryNotFoundError, MutationResultList } from '../Result'\nimport { Mapper } from '../Mapper'\n\ntype RelationContext = Model.ManyHasManyOwningContext | Model.ManyHasManyInverseContext\n\nexport class ManyHasManyInputProcessor {\n\tconstructor(\n\t\tprivate readonly mapper: Mapper,\n\t) {\n\t}\n\n\tpublic async connect(\n\t\t{ entity, targetEntity, relation, targetRelation, input }: RelationContext & { input: Input.UniqueWhere },\n\t\tprimary: Input.PrimaryValue,\n\t) {\n\t\tconst otherPrimary = await this.mapper.getPrimaryValue(targetEntity, input)\n\t\tif (!otherPrimary) {\n\t\t\treturn [new MutationEntryNotFoundError([], input)]\n\t\t}\n\t\treturn await this.mapper.connectJunction(entity, relation, primary, otherPrimary)\n\t}\n\n\tpublic async create(\n\t\t{ entity, targetEntity, relation, input }: RelationContext & { input: Input.CreateDataInput },\n\t\tprimary: Input.PrimaryValue,\n\t) {\n\t\tconst insertResult = await this.mapper.insert(targetEntity, input)\n\t\tconst insertPrimary = getInsertPrimary(insertResult)\n\t\tif (!insertPrimary) {\n\t\t\treturn insertResult\n\t\t}\n\t\treturn [\n\t\t\t...insertResult,\n\t\t\t...(await this.mapper.connectJunction(entity, relation, primary, insertPrimary)),\n\t\t]\n\t}\n\n\tpublic async connectOrCreate(\n\t\tcontext: RelationContext & { input: Input.ConnectOrCreateInput },\n\t\tprimary: Input.PrimaryValue,\n\t): Promise<MutationResultList> {\n\t\tlet otherPrimary = await this.mapper.getPrimaryValue(context.targetEntity, context.input.connect)\n\t\tif (!otherPrimary) {\n\t\t\tconst insertResult = await this.mapper.insert(context.targetEntity, context.input.create)\n\t\t\totherPrimary = getInsertPrimary(insertResult)\n\t\t\tif (!otherPrimary) {\n\t\t\t\treturn insertResult\n\t\t\t}\n\t\t}\n\t\treturn await this.mapper.connectJunction(context.entity, context.relation, primary, otherPrimary)\n\t}\n\n\tpublic async update(\n\t\t{ entity, targetEntity, relation, input: { where, data } }: RelationContext & { input: UpdateInputProcessor.UpdateManyInput },\n\t\tprimary: Input.PrimaryValue,\n\t) {\n\t\tconst otherPrimary = await this.mapper.getPrimaryValue(targetEntity, where)\n\t\tif (!otherPrimary) {\n\t\t\treturn [new MutationEntryNotFoundError([], where)]\n\t\t}\n\t\treturn [\n\t\t\t...(await this.mapper.update(targetEntity, { [targetEntity.primary]: otherPrimary }, data)),\n\t\t\t...(await this.mapper.connectJunction(entity, relation, primary, otherPrimary)),\n\t\t]\n\t}\n\n\tpublic async upsert(\n\t\t{ entity, relation, targetEntity, input: { create, update, where } }: RelationContext & { input: UpdateInputProcessor.UpsertManyInput },\n\t\tprimary: Input.PrimaryValue,\n\t) {\n\t\tconst otherPrimary = await this.mapper.getPrimaryValue(targetEntity, where)\n\t\tif (otherPrimary) {\n\t\t\tconst updateResult = await this.mapper.update(targetEntity, { [targetEntity.primary]: otherPrimary }, update)\n\t\t\tconst connectResult = await this.mapper.connectJunction(entity, relation, primary, otherPrimary)\n\t\t\treturn [...updateResult, ...connectResult]\n\t\t} else {\n\t\t\tconst insertResult = await this.mapper.insert(targetEntity, create)\n\n\t\t\tconst primaryValue = getInsertPrimary(insertResult)\n\t\t\tif (!primaryValue) {\n\t\t\t\treturn insertResult\n\t\t\t}\n\t\t\tconst connectResult = await this.mapper.connectJunction(entity, relation, primary, primaryValue)\n\t\t\treturn [...insertResult, ...connectResult]\n\t\t}\n\t}\n\n\tpublic async disconnect(\n\t\t{ entity, targetEntity, relation, input }: RelationContext & { input: Input.UniqueWhere },\n\t\tprimary: Input.PrimaryValue,\n\t) {\n\t\tconst otherPrimary = await this.mapper.getPrimaryValue(targetEntity, input)\n\t\tif (!otherPrimary) {\n\t\t\treturn [new MutationEntryNotFoundError([], input)]\n\t\t}\n\n\t\treturn await this.mapper.disconnectJunction(entity, relation, primary, otherPrimary)\n\t}\n\n\tpublic async delete(\n\t\t{ entity, targetEntity, relation, targetRelation, input }: RelationContext & { input: Input.UniqueWhere },\n\t\tprimary: Input.PrimaryValue,\n\t) {\n\t\treturn await this.mapper.delete(targetEntity, input)\n\t}\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1,114 +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 DataManipulationBuilder = require("../DataManipulationBuilder.cjs");
|
|
6
|
-
class ManyHasOneInputProcessor {
|
|
7
|
-
constructor(mapper) {
|
|
8
|
-
this.mapper = mapper;
|
|
9
|
-
}
|
|
10
|
-
async connect({ targetEntity, relation, input }, builder) {
|
|
11
|
-
const result = [];
|
|
12
|
-
await builder.addFieldValue(relation.name, async () => {
|
|
13
|
-
const value = await this.mapper.getPrimaryValue(targetEntity, input);
|
|
14
|
-
if (!value) {
|
|
15
|
-
result.push(new Result.MutationEntryNotFoundError([], input));
|
|
16
|
-
return DataManipulationBuilder.AbortDataManipulation;
|
|
17
|
-
}
|
|
18
|
-
return value;
|
|
19
|
-
});
|
|
20
|
-
return result;
|
|
21
|
-
}
|
|
22
|
-
async create({ relation, targetEntity, input }, builder) {
|
|
23
|
-
const result = [];
|
|
24
|
-
await builder.addFieldValue(relation.name, async () => {
|
|
25
|
-
const insertResult = await this.mapper.insert(targetEntity, input);
|
|
26
|
-
const value = Result.getInsertPrimary(insertResult);
|
|
27
|
-
if (!value) {
|
|
28
|
-
result.push(...insertResult);
|
|
29
|
-
return DataManipulationBuilder.AbortDataManipulation;
|
|
30
|
-
}
|
|
31
|
-
return value;
|
|
32
|
-
});
|
|
33
|
-
return result;
|
|
34
|
-
}
|
|
35
|
-
async connectOrCreate({ input: { connect, create }, relation, targetEntity }, builder) {
|
|
36
|
-
const result = [];
|
|
37
|
-
await builder.addFieldValue(relation.name, async () => {
|
|
38
|
-
const value = await this.mapper.getPrimaryValue(targetEntity, connect);
|
|
39
|
-
if (value) {
|
|
40
|
-
return value;
|
|
41
|
-
}
|
|
42
|
-
const insertPromise = this.mapper.insert(targetEntity, create);
|
|
43
|
-
const insertResult = await insertPromise;
|
|
44
|
-
const primary = Result.getInsertPrimary(insertResult);
|
|
45
|
-
if (!primary) {
|
|
46
|
-
result.push(...insertResult);
|
|
47
|
-
return DataManipulationBuilder.AbortDataManipulation;
|
|
48
|
-
}
|
|
49
|
-
return primary;
|
|
50
|
-
});
|
|
51
|
-
return result;
|
|
52
|
-
}
|
|
53
|
-
async update({ entity, relation, targetEntity, targetRelation, input }, primary) {
|
|
54
|
-
const inversePrimary = await this.mapper.selectField(
|
|
55
|
-
entity,
|
|
56
|
-
{ [entity.primary]: primary },
|
|
57
|
-
relation.name
|
|
58
|
-
);
|
|
59
|
-
if (!inversePrimary) {
|
|
60
|
-
return [new Result.MutationNothingToDo([], Result.NothingToDoReason.emptyRelation)];
|
|
61
|
-
}
|
|
62
|
-
return await this.mapper.update(targetEntity, { [targetEntity.primary]: inversePrimary }, input);
|
|
63
|
-
}
|
|
64
|
-
async upsert({ entity, relation, targetEntity, input: { create, update } }, builder, primary) {
|
|
65
|
-
const select = this.mapper.selectField(entity, { [entity.primary]: primary }, relation.name);
|
|
66
|
-
const result = [];
|
|
67
|
-
await builder.addFieldValue(relation.name, async () => {
|
|
68
|
-
const primary2 = await select;
|
|
69
|
-
if (primary2) {
|
|
70
|
-
return void 0;
|
|
71
|
-
}
|
|
72
|
-
const insertResult = await this.mapper.insert(targetEntity, create);
|
|
73
|
-
const insertPrimary = Result.getInsertPrimary(insertResult);
|
|
74
|
-
if (insertPrimary) {
|
|
75
|
-
return insertPrimary;
|
|
76
|
-
}
|
|
77
|
-
result.push(...insertResult);
|
|
78
|
-
return DataManipulationBuilder.AbortDataManipulation;
|
|
79
|
-
});
|
|
80
|
-
const inversePrimary = await select;
|
|
81
|
-
if (inversePrimary) {
|
|
82
|
-
return await this.mapper.update(targetEntity, { [targetEntity.primary]: inversePrimary }, update);
|
|
83
|
-
} else {
|
|
84
|
-
return result;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
async disconnect({ entity, targetEntity, relation, targetRelation }, builder) {
|
|
88
|
-
if (!relation.nullable) {
|
|
89
|
-
return [new Result.MutationConstraintViolationError([], Result.ConstraintType.notNull)];
|
|
90
|
-
}
|
|
91
|
-
builder.addFieldValue(relation.name, null);
|
|
92
|
-
return [];
|
|
93
|
-
}
|
|
94
|
-
async delete({ entity, targetEntity, relation, targetRelation }, builder, primary) {
|
|
95
|
-
if (!relation.nullable && relation.joiningColumn.onDelete !== schema.Model.OnDelete.cascade) {
|
|
96
|
-
return [new Result.MutationConstraintViolationError([], Result.ConstraintType.notNull)];
|
|
97
|
-
}
|
|
98
|
-
if (relation.joiningColumn.onDelete === schema.Model.OnDelete.restrict) {
|
|
99
|
-
console.error(
|
|
100
|
-
"[DEPRECATED] You are deleting an entity over the relation where onDelete behaviour is set to restrict. This will fail in next version."
|
|
101
|
-
);
|
|
102
|
-
builder.addFieldValue(relation.name, null);
|
|
103
|
-
}
|
|
104
|
-
const inversePrimary = await this.mapper.selectField(
|
|
105
|
-
entity,
|
|
106
|
-
{ [entity.primary]: primary },
|
|
107
|
-
relation.name
|
|
108
|
-
);
|
|
109
|
-
await builder.update;
|
|
110
|
-
return await this.mapper.delete(targetEntity, { [targetEntity.primary]: inversePrimary });
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
exports.ManyHasOneInputProcessor = ManyHasOneInputProcessor;
|
|
114
|
-
//# sourceMappingURL=ManyHasOneInputProcessor.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ManyHasOneInputProcessor.cjs","sources":["../../../../../../packages/engine-content-api/src/mapper/relations/ManyHasOneInputProcessor.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 { AbortDataManipulation, DataManipulationBuilder } from '../DataManipulationBuilder'\nimport { UpdateBuilder } from '../update'\n\nexport class ManyHasOneInputProcessor {\n\n\tconstructor(\n\t\tprivate readonly mapper: Mapper,\n\t) {\n\t}\n\n\tpublic async connect(\n\t\t{ targetEntity, relation, input }: Model.ManyHasOneContext & { input: Input.UniqueWhere },\n\t\tbuilder: DataManipulationBuilder,\n\t) {\n\t\tconst result: MutationResultList = []\n\t\tawait builder.addFieldValue(relation.name, async () => {\n\t\t\tconst value = await this.mapper.getPrimaryValue(targetEntity, input)\n\t\t\tif (!value) {\n\t\t\t\tresult.push(new MutationEntryNotFoundError([], input))\n\t\t\t\treturn AbortDataManipulation\n\t\t\t}\n\t\t\treturn value\n\t\t})\n\t\treturn result\n\t}\n\n\tpublic async create(\n\t\t{ relation, targetEntity, input }: Model.ManyHasOneContext & { input: Input.CreateDataInput },\n\t\tbuilder: DataManipulationBuilder,\n\t) {\n\t\tconst result: MutationResultList = []\n\t\tawait builder.addFieldValue(relation.name, async () => {\n\t\t\tconst insertResult = await this.mapper.insert(targetEntity, input)\n\t\t\tconst value = getInsertPrimary(insertResult)\n\t\t\tif (!value) {\n\t\t\t\tresult.push(...insertResult)\n\t\t\t\treturn AbortDataManipulation\n\t\t\t}\n\t\t\treturn value\n\t\t})\n\t\treturn result\n\t}\n\n\tpublic async connectOrCreate(\n\t\t{ input: { connect, create }, relation, targetEntity }: Model.ManyHasOneContext & { input: Input.ConnectOrCreateInput },\n\t\tbuilder: DataManipulationBuilder,\n\t) {\n\t\tconst result: MutationResultList = []\n\t\tawait builder.addFieldValue(relation.name, async () => {\n\t\t\tconst value = await this.mapper.getPrimaryValue(targetEntity, connect)\n\t\t\tif (value) {\n\t\t\t\treturn value\n\t\t\t}\n\t\t\tconst insertPromise = this.mapper.insert(targetEntity, create)\n\t\t\tconst insertResult = await insertPromise\n\t\t\tconst primary = getInsertPrimary(insertResult)\n\t\t\tif (!primary) {\n\t\t\t\tresult.push(...insertResult)\n\t\t\t\treturn AbortDataManipulation\n\t\t\t}\n\t\t\treturn primary\n\t\t})\n\t\treturn result\n\t}\n\n\tpublic async update(\n\t\t{ entity, relation, targetEntity, targetRelation, input }: Model.ManyHasOneContext & { input: Input.UpdateDataInput },\n\t\tprimary: Input.PrimaryValue,\n\t) {\n\t\tconst inversePrimary = await this.mapper.selectField(\n\t\t\tentity,\n\t\t\t{ [entity.primary]: primary },\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(\n\t\t{ entity, relation, targetEntity, input: { create, update } }: Model.ManyHasOneContext & { input: UpdateInputProcessor.UpsertInput },\n\t\tbuilder: DataManipulationBuilder,\n\t\tprimary: Input.PrimaryValue,\n\t) {\n\t\tconst select = this.mapper.selectField(entity, { [entity.primary]: primary }, relation.name)\n\n\t\tconst result: MutationResultList = []\n\t\t// addFieldValue has to be called immediately\n\t\tawait builder.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} else {\n\t\t\treturn result\n\t\t}\n\t}\n\n\tpublic async disconnect(\n\t\t{ entity, targetEntity, relation, targetRelation }: Model.ManyHasOneContext & { input: undefined },\n\t\tbuilder: DataManipulationBuilder,\n\t) {\n\t\tif (!relation.nullable) {\n\t\t\treturn [new MutationConstraintViolationError([], ConstraintType.notNull)]\n\t\t}\n\t\tbuilder.addFieldValue(relation.name, null)\n\t\treturn []\n\t}\n\n\tpublic async delete(\n\t\t{ entity, targetEntity, relation, targetRelation }: Model.ManyHasOneContext & { input: undefined },\n\t\tbuilder: UpdateBuilder,\n\t\tprimary: Input.PrimaryValue,\n\t) {\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\tbuilder.addFieldValue(relation.name, null)\n\t\t}\n\t\tconst inversePrimary = await this.mapper.selectField(\n\t\t\tentity,\n\t\t\t{ [entity.primary]: primary },\n\t\t\trelation.name,\n\t\t)\n\t\tawait builder.update\n\t\treturn await this.mapper.delete(targetEntity, { [targetEntity.primary]: inversePrimary })\n\t}\n}\n"],"names":["MutationEntryNotFoundError","AbortDataManipulation","getInsertPrimary","MutationNothingToDo","NothingToDoReason","primary","MutationConstraintViolationError","ConstraintType","Model"],"mappings":"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"}
|