@contember/engine-content-api 2.0.0-alpha.20 → 2.0.0-alpha.22
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
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@contember/engine-content-api",
|
|
3
|
-
"version": "2.0.0-alpha.
|
|
3
|
+
"version": "2.0.0-alpha.22",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"main": "./dist/production/index.js",
|
|
6
6
|
"typings": "./dist/types/index.d.ts",
|
|
@@ -26,18 +26,18 @@
|
|
|
26
26
|
"generate": "gql-gen --config graphql.codegen.yml"
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@contember/database": "2.0.0-alpha.
|
|
30
|
-
"@contember/dic": "2.0.0-alpha.
|
|
31
|
-
"@contember/graphql-utils": "2.0.0-alpha.
|
|
32
|
-
"@contember/logger": "2.0.0-alpha.
|
|
33
|
-
"@contember/schema": "2.0.0-alpha.
|
|
34
|
-
"@contember/schema-definition": "2.0.0-alpha.
|
|
35
|
-
"@contember/schema-utils": "2.0.0-alpha.
|
|
29
|
+
"@contember/database": "2.0.0-alpha.22",
|
|
30
|
+
"@contember/dic": "2.0.0-alpha.22",
|
|
31
|
+
"@contember/graphql-utils": "2.0.0-alpha.22",
|
|
32
|
+
"@contember/logger": "2.0.0-alpha.22",
|
|
33
|
+
"@contember/schema": "2.0.0-alpha.22",
|
|
34
|
+
"@contember/schema-definition": "2.0.0-alpha.22",
|
|
35
|
+
"@contember/schema-utils": "2.0.0-alpha.22",
|
|
36
36
|
"fast-deep-equal": "^3.1.3"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
|
-
"@contember/database-tester": "2.0.0-alpha.
|
|
40
|
-
"@contember/schema-definition": "2.0.0-alpha.
|
|
39
|
+
"@contember/database-tester": "2.0.0-alpha.22",
|
|
40
|
+
"@contember/schema-definition": "2.0.0-alpha.22",
|
|
41
41
|
"@types/node": "^20.16.11",
|
|
42
42
|
"graphql": "^16.9.0",
|
|
43
43
|
"pg": "^8.12.0"
|
|
@@ -158,14 +158,12 @@ export class InputPreValidator {
|
|
|
158
158
|
|
|
159
159
|
private async validateRelations(
|
|
160
160
|
entity: Model.Entity,
|
|
161
|
-
visitor: Model.FieldVisitor<Promise<ValidationResult
|
|
162
|
-
): Promise<
|
|
161
|
+
visitor: Model.FieldVisitor<Promise<ValidationResult[]>>,
|
|
162
|
+
): Promise<ValidationResult> {
|
|
163
163
|
const validateRelationsResult = acceptEveryFieldVisitor(this.model, entity, visitor)
|
|
164
164
|
|
|
165
165
|
return (await Promise.all(Object.values(validateRelationsResult)))
|
|
166
|
-
.
|
|
167
|
-
.reduce<(FieldValidationResult[] | FieldValidationResult)[]>((res, it) => [...res, ...it], [])
|
|
168
|
-
.reduce<FieldValidationResult[]>((res, it) => [...res, ...(Array.isArray(it) ? it : [it])], [])
|
|
166
|
+
.flatMap(it => it.flat())
|
|
169
167
|
}
|
|
170
168
|
|
|
171
169
|
private getApplicableRules(changedFields: string[], entityRules: Validation.EntityRules): Validation.EntityRules {
|
|
@@ -6,8 +6,8 @@ import { UserError } from '../exception'
|
|
|
6
6
|
import { ImplementationException } from '../exception'
|
|
7
7
|
|
|
8
8
|
export class CreateInputVisitor<Result> implements
|
|
9
|
-
Model.ColumnVisitor<Promise<Result
|
|
10
|
-
Model.RelationByTypeVisitor<Promise<Result
|
|
9
|
+
Model.ColumnVisitor<Promise<Result[]>>,
|
|
10
|
+
Model.RelationByTypeVisitor<Promise<Result[]>> {
|
|
11
11
|
|
|
12
12
|
constructor(
|
|
13
13
|
private readonly createInputProcessor: CreateInputProcessor<Result>,
|
|
@@ -15,11 +15,11 @@ export class CreateInputVisitor<Result> implements
|
|
|
15
15
|
private readonly data: Input.CreateDataInput,
|
|
16
16
|
) {}
|
|
17
17
|
|
|
18
|
-
public visitColumn(context: Model.ColumnContext): Promise<Result> {
|
|
19
|
-
return this.createInputProcessor.column({
|
|
18
|
+
public async visitColumn(context: Model.ColumnContext): Promise<Result[]> {
|
|
19
|
+
return [await this.createInputProcessor.column({
|
|
20
20
|
...context,
|
|
21
21
|
input: this.data[context.column.name] as Input.ColumnValue,
|
|
22
|
-
})
|
|
22
|
+
})]
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
public visitManyHasManyInverse(context: Model.ManyHasManyInverseContext) {
|
|
@@ -70,27 +70,27 @@ export class CreateInputVisitor<Result> implements
|
|
|
70
70
|
)
|
|
71
71
|
}
|
|
72
72
|
|
|
73
|
-
private processRelationInput<Context>(
|
|
73
|
+
private async processRelationInput<Context>(
|
|
74
74
|
processor: CreateInputProcessor.HasOneRelationProcessor<Context, Result>,
|
|
75
75
|
context: Context,
|
|
76
76
|
input: Input.CreateOneRelationInput | undefined,
|
|
77
|
-
): Promise<
|
|
77
|
+
): Promise<Result[]> {
|
|
78
78
|
if (input === undefined || input === null) {
|
|
79
79
|
if (processor.nothing) {
|
|
80
|
-
return processor.nothing({ ...context, input: undefined })
|
|
80
|
+
return [await processor.nothing({ ...context, input: undefined })]
|
|
81
81
|
}
|
|
82
|
-
return Promise.resolve(
|
|
82
|
+
return Promise.resolve([])
|
|
83
83
|
}
|
|
84
84
|
input = filterObject(input, (k, v) => v !== null && v !== undefined)
|
|
85
85
|
this.verifyOperations(input)
|
|
86
86
|
if (isIt<Input.ConnectRelationInput>(input, 'connect')) {
|
|
87
|
-
return processor.connect({ ...context, input: input.connect })
|
|
87
|
+
return [await processor.connect({ ...context, input: input.connect })]
|
|
88
88
|
}
|
|
89
89
|
if (isIt<Input.CreateRelationInput>(input, 'create')) {
|
|
90
|
-
return processor.create({ ...context, input: input.create })
|
|
90
|
+
return [await processor.create({ ...context, input: input.create })]
|
|
91
91
|
}
|
|
92
92
|
if (isIt<Input.ConnectOrCreateRelationInput>(input, 'connectOrCreate')) {
|
|
93
|
-
return processor.connectOrCreate({ ...context, input: input.connectOrCreate })
|
|
93
|
+
return [await processor.connectOrCreate({ ...context, input: input.connectOrCreate })]
|
|
94
94
|
}
|
|
95
95
|
throw new ImplementationException()
|
|
96
96
|
}
|
|
@@ -99,9 +99,9 @@ export class CreateInputVisitor<Result> implements
|
|
|
99
99
|
processor: CreateInputProcessor.HasManyRelationProcessor<Context, Result>,
|
|
100
100
|
context: Context,
|
|
101
101
|
input: Input.CreateManyRelationInput | undefined,
|
|
102
|
-
): Promise<
|
|
102
|
+
): Promise<Result[]> {
|
|
103
103
|
if (input === undefined || input === null) {
|
|
104
|
-
return Promise.resolve(
|
|
104
|
+
return Promise.resolve([])
|
|
105
105
|
}
|
|
106
106
|
const results: Result[] = []
|
|
107
107
|
let i = 0
|
|
@@ -4,8 +4,8 @@ import { UpdateInputProcessor } from './UpdateInputProcessor'
|
|
|
4
4
|
import { ImplementationException, UserError } from '../exception'
|
|
5
5
|
|
|
6
6
|
export class UpdateInputVisitor<Result> implements
|
|
7
|
-
Model.ColumnVisitor<Promise<Result
|
|
8
|
-
Model.RelationByTypeVisitor<Promise<Result
|
|
7
|
+
Model.ColumnVisitor<Promise<Result[]>>,
|
|
8
|
+
Model.RelationByTypeVisitor<Promise<Result[]>> {
|
|
9
9
|
|
|
10
10
|
constructor(
|
|
11
11
|
private readonly updateInputProcessor: UpdateInputProcessor<Result>,
|
|
@@ -13,12 +13,12 @@ export class UpdateInputVisitor<Result> implements
|
|
|
13
13
|
private readonly data: Input.UpdateDataInput,
|
|
14
14
|
) {}
|
|
15
15
|
|
|
16
|
-
public visitColumn({ entity, column }: Model.ColumnContext): Promise<Result> {
|
|
17
|
-
return this.updateInputProcessor.column({
|
|
16
|
+
public async visitColumn({ entity, column }: Model.ColumnContext): Promise<Result[]> {
|
|
17
|
+
return [await this.updateInputProcessor.column({
|
|
18
18
|
entity,
|
|
19
19
|
column,
|
|
20
20
|
input: this.data[column.name] as Input.ColumnValue,
|
|
21
|
-
})
|
|
21
|
+
})]
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
public visitManyHasManyInverse(context: Model.ManyHasManyInverseContext) {
|
|
@@ -69,36 +69,36 @@ export class UpdateInputVisitor<Result> implements
|
|
|
69
69
|
)
|
|
70
70
|
}
|
|
71
71
|
|
|
72
|
-
private processRelationInput<Context>(
|
|
72
|
+
private async processRelationInput<Context>(
|
|
73
73
|
processor: UpdateInputProcessor.HasOneRelationInputProcessor<Context, Result>,
|
|
74
74
|
context: Context,
|
|
75
75
|
input: Input.UpdateOneRelationInput | undefined,
|
|
76
|
-
): Promise<
|
|
76
|
+
): Promise< Result[]> {
|
|
77
77
|
if (input === undefined || input === null) {
|
|
78
|
-
return Promise.resolve(
|
|
78
|
+
return Promise.resolve([])
|
|
79
79
|
}
|
|
80
80
|
input = filterObject(input, (k, v) => v !== null && v !== undefined)
|
|
81
81
|
this.verifyOperations(input)
|
|
82
82
|
if (isIt<Input.ConnectRelationInput>(input, 'connect')) {
|
|
83
|
-
return processor.connect({ ...context, input: input.connect })
|
|
83
|
+
return [await processor.connect({ ...context, input: input.connect })]
|
|
84
84
|
}
|
|
85
85
|
if (isIt<Input.CreateRelationInput>(input, 'create')) {
|
|
86
|
-
return processor.create({ ...context, input: input.create })
|
|
86
|
+
return [await processor.create({ ...context, input: input.create })]
|
|
87
87
|
}
|
|
88
88
|
if (isIt<Input.ConnectOrCreateRelationInput>(input, 'connectOrCreate')) {
|
|
89
|
-
return processor.connectOrCreate({ ...context, input: input.connectOrCreate })
|
|
89
|
+
return [await processor.connectOrCreate({ ...context, input: input.connectOrCreate })]
|
|
90
90
|
}
|
|
91
91
|
if (isIt<Input.DeleteRelationInput>(input, 'delete')) {
|
|
92
|
-
return processor.delete({ ...context, input: undefined })
|
|
92
|
+
return [await processor.delete({ ...context, input: undefined })]
|
|
93
93
|
}
|
|
94
94
|
if (isIt<Input.DisconnectRelationInput>(input, 'disconnect')) {
|
|
95
|
-
return processor.disconnect({ ...context, input: undefined })
|
|
95
|
+
return [await processor.disconnect({ ...context, input: undefined })]
|
|
96
96
|
}
|
|
97
97
|
if (isIt<Input.UpdateRelationInput>(input, 'update')) {
|
|
98
|
-
return processor.update({ ...context, input: input.update })
|
|
98
|
+
return [await processor.update({ ...context, input: input.update })]
|
|
99
99
|
}
|
|
100
100
|
if (isIt<Input.UpsertRelationInput>(input, 'upsert')) {
|
|
101
|
-
return processor.upsert({ ...context, input: input.upsert })
|
|
101
|
+
return [await processor.upsert({ ...context, input: input.upsert })]
|
|
102
102
|
}
|
|
103
103
|
throw new ImplementationException()
|
|
104
104
|
}
|
|
@@ -107,9 +107,9 @@ export class UpdateInputVisitor<Result> implements
|
|
|
107
107
|
processor: UpdateInputProcessor.HasManyRelationInputProcessor<Context, Result>,
|
|
108
108
|
context: Context,
|
|
109
109
|
input: Input.UpdateManyRelationInput | undefined,
|
|
110
|
-
): Promise<
|
|
110
|
+
): Promise<Result[]> {
|
|
111
111
|
if (input === undefined || input === null) {
|
|
112
|
-
return Promise.resolve(
|
|
112
|
+
return Promise.resolve([])
|
|
113
113
|
}
|
|
114
114
|
const results: Array<Result> = []
|
|
115
115
|
let i = 0
|
|
@@ -1,22 +1,30 @@
|
|
|
1
1
|
import { MutationResultList, prependPath } from './Result'
|
|
2
2
|
import { Model } from '@contember/schema'
|
|
3
3
|
|
|
4
|
-
export const hasManyProcessor = <Context extends { relation: Model.AnyRelation; index: number; alias?: string }>(
|
|
5
|
-
innerProcessor: (context: Context) => Promise<MutationResultList>,
|
|
4
|
+
export const hasManyProcessor = <Context extends { relation: Model.AnyRelation; index: number; alias?: string }, Args>(
|
|
5
|
+
innerProcessor: (context: Context) => Promise<MutationResultList | ((args: Args) => Promise<MutationResultList>)>,
|
|
6
6
|
) => {
|
|
7
|
-
return async (context: Context): Promise<MutationResultList> => {
|
|
7
|
+
return async (context: Context): Promise<MutationResultList | ((args: Args) => Promise<MutationResultList>)> => {
|
|
8
8
|
const { relation, index, alias } = context
|
|
9
9
|
const path = [{ field: relation.name }, { index, alias }]
|
|
10
|
-
|
|
10
|
+
const innerResult = await innerProcessor(context)
|
|
11
|
+
if (typeof innerResult === 'function') {
|
|
12
|
+
return async (it: Args) => prependPath(path, await innerResult(it))
|
|
13
|
+
}
|
|
14
|
+
return prependPath(path, innerResult)
|
|
11
15
|
}
|
|
12
16
|
}
|
|
13
17
|
|
|
14
|
-
export const hasOneProcessor = <Context extends { relation: Model.AnyRelation }>(
|
|
15
|
-
innerProcessor: (context: Context) => Promise<MutationResultList>,
|
|
18
|
+
export const hasOneProcessor = <Context extends { relation: Model.AnyRelation }, Args>(
|
|
19
|
+
innerProcessor: (context: Context) => Promise<MutationResultList | ((args: Args) => Promise<MutationResultList>)>,
|
|
16
20
|
) => {
|
|
17
|
-
return async (context: Context): Promise<MutationResultList> => {
|
|
21
|
+
return async (context: Context): Promise<MutationResultList | ((args: Args) => Promise<MutationResultList>)> => {
|
|
18
22
|
const { relation } = context
|
|
19
23
|
const path = [{ field: relation.name }]
|
|
20
|
-
|
|
24
|
+
const innerResult = await innerProcessor(context)
|
|
25
|
+
if (typeof innerResult === 'function') {
|
|
26
|
+
return async (it: Args) => prependPath(path, await innerResult(it))
|
|
27
|
+
}
|
|
28
|
+
return prependPath(path, innerResult)
|
|
21
29
|
}
|
|
22
30
|
}
|
package/src/mapper/Result.ts
CHANGED
|
@@ -1,8 +1,4 @@
|
|
|
1
1
|
import { Input, Model, Value } from '@contember/schema'
|
|
2
|
-
import { convertError } from './ErrorUtils'
|
|
3
|
-
import { getFulfilledValues, getRejections } from '../utils'
|
|
4
|
-
import { DatabaseMetadata, SerializationFailureError } from '@contember/database'
|
|
5
|
-
import { logger } from '@contember/logger'
|
|
6
2
|
|
|
7
3
|
export enum MutationResultType {
|
|
8
4
|
ok = 'ok',
|
|
@@ -44,6 +40,7 @@ export type MutationResultList = MutationResult[]
|
|
|
44
40
|
type Path = ({ field: string } | { index: number; alias?: string })[]
|
|
45
41
|
|
|
46
42
|
interface MutationResultInterface {
|
|
43
|
+
error: boolean
|
|
47
44
|
result: MutationResultType
|
|
48
45
|
paths: Path[]
|
|
49
46
|
message?: string
|
|
@@ -53,6 +50,7 @@ interface MutationResultInterface {
|
|
|
53
50
|
export type RowValues = { [fieldName: string]: Value.FieldValue }
|
|
54
51
|
|
|
55
52
|
export class MutationUpdateOk implements MutationResultInterface {
|
|
53
|
+
error = false
|
|
56
54
|
result = MutationResultType.ok as const
|
|
57
55
|
type = ModificationType.update as const
|
|
58
56
|
hints: MutationResultHint[] = []
|
|
@@ -68,6 +66,7 @@ export class MutationUpdateOk implements MutationResultInterface {
|
|
|
68
66
|
}
|
|
69
67
|
|
|
70
68
|
export class MutationCreateOk implements MutationResultInterface {
|
|
69
|
+
error = false
|
|
71
70
|
result = MutationResultType.ok as const
|
|
72
71
|
type = ModificationType.create as const
|
|
73
72
|
hints: MutationResultHint[] = []
|
|
@@ -82,6 +81,7 @@ export class MutationCreateOk implements MutationResultInterface {
|
|
|
82
81
|
}
|
|
83
82
|
|
|
84
83
|
export class MutationDeleteOk implements MutationResultInterface {
|
|
84
|
+
error = false
|
|
85
85
|
result = MutationResultType.ok as const
|
|
86
86
|
type = ModificationType.delete as const
|
|
87
87
|
hints: MutationResultHint[] = []
|
|
@@ -94,6 +94,7 @@ export class MutationDeleteOk implements MutationResultInterface {
|
|
|
94
94
|
}
|
|
95
95
|
|
|
96
96
|
export class MutationJunctionUpdateOk implements MutationResultInterface {
|
|
97
|
+
error = false
|
|
97
98
|
result = MutationResultType.ok as const
|
|
98
99
|
type = ModificationType.junctionUpdate as const
|
|
99
100
|
hints: MutationResultHint[] = []
|
|
@@ -116,6 +117,7 @@ export enum NothingToDoReason {
|
|
|
116
117
|
}
|
|
117
118
|
|
|
118
119
|
export class MutationNothingToDo implements MutationResultInterface {
|
|
120
|
+
error = false
|
|
119
121
|
result = MutationResultType.nothingToDo as const
|
|
120
122
|
hints: MutationResultHint[] = []
|
|
121
123
|
|
|
@@ -128,6 +130,7 @@ export enum InputErrorKind {
|
|
|
128
130
|
}
|
|
129
131
|
|
|
130
132
|
export class MutationInputError implements MutationResultInterface {
|
|
133
|
+
error = true
|
|
131
134
|
result = MutationResultType.inputError as const
|
|
132
135
|
|
|
133
136
|
constructor(
|
|
@@ -139,6 +142,7 @@ export class MutationInputError implements MutationResultInterface {
|
|
|
139
142
|
}
|
|
140
143
|
|
|
141
144
|
export class MutationSqlError implements MutationResultInterface {
|
|
145
|
+
error = true
|
|
142
146
|
result = MutationResultType.sqlError as const
|
|
143
147
|
|
|
144
148
|
constructor(
|
|
@@ -155,6 +159,7 @@ export enum ConstraintType {
|
|
|
155
159
|
}
|
|
156
160
|
|
|
157
161
|
export class MutationConstraintViolationError implements MutationResultInterface {
|
|
162
|
+
error = true
|
|
158
163
|
result = MutationResultType.constraintViolationError as const
|
|
159
164
|
|
|
160
165
|
constructor(
|
|
@@ -167,6 +172,7 @@ export class MutationConstraintViolationError implements MutationResultInterface
|
|
|
167
172
|
|
|
168
173
|
// maybe denied by acl
|
|
169
174
|
export class MutationEntryNotFoundError implements MutationResultInterface {
|
|
175
|
+
error = true
|
|
170
176
|
result = MutationResultType.notFoundError as const
|
|
171
177
|
hints: MutationResultHint[] = []
|
|
172
178
|
message: string
|
|
@@ -178,6 +184,7 @@ export class MutationEntryNotFoundError implements MutationResultInterface {
|
|
|
178
184
|
|
|
179
185
|
// possibly denied by acl
|
|
180
186
|
export class MutationNoResultError implements MutationResultInterface {
|
|
187
|
+
error = true
|
|
181
188
|
result = MutationResultType.noResultError as const
|
|
182
189
|
|
|
183
190
|
constructor(
|
|
@@ -197,46 +204,3 @@ export const getInsertPrimary = (result: MutationResultList) =>
|
|
|
197
204
|
result[0] && result[0].result === MutationResultType.ok && result[0].type === ModificationType.create
|
|
198
205
|
? result[0].primary
|
|
199
206
|
: undefined
|
|
200
|
-
|
|
201
|
-
export const getUpdatePrimary = (result: MutationResultList) =>
|
|
202
|
-
result[0] && result[0].result === MutationResultType.ok && result[0].type === ModificationType.update
|
|
203
|
-
? result[0].primary
|
|
204
|
-
: undefined
|
|
205
|
-
|
|
206
|
-
export const flattenResult = (result: (MutationResultList | MutationResultList[])[]): MutationResultList =>
|
|
207
|
-
result
|
|
208
|
-
.reduce<(MutationResult | MutationResult[])[]>((acc, it) => [...acc, ...it], [])
|
|
209
|
-
.reduce<MutationResultList>((acc, it) => (Array.isArray(it) ? [...acc, ...it] : [...acc, it]), [])
|
|
210
|
-
|
|
211
|
-
export type ResultListNotFlatten = MutationResultList | MutationResultList[]
|
|
212
|
-
|
|
213
|
-
export const collectResults = async (
|
|
214
|
-
schema: Model.Schema,
|
|
215
|
-
schemaDatabaseMetadata: DatabaseMetadata,
|
|
216
|
-
mainPromise: Promise<ResultListNotFlatten | undefined> | undefined,
|
|
217
|
-
otherPromises: (Promise<ResultListNotFlatten | undefined> | undefined)[],
|
|
218
|
-
): Promise<MutationResultList> => {
|
|
219
|
-
let index = 0
|
|
220
|
-
const allPromises: Promise<{ index: number; value: ResultListNotFlatten }>[] = [mainPromise, ...otherPromises]
|
|
221
|
-
.filter((it): it is Promise<ResultListNotFlatten> => !!it)
|
|
222
|
-
.map(it =>
|
|
223
|
-
it //
|
|
224
|
-
.catch(e => [convertError(schema, schemaDatabaseMetadata, e)])
|
|
225
|
-
.then(value => ({ value, index: index++ })),
|
|
226
|
-
)
|
|
227
|
-
const results = await Promise.allSettled(allPromises)
|
|
228
|
-
const failures = getRejections(results)
|
|
229
|
-
if (failures.length > 0) {
|
|
230
|
-
if (failures.length > 1 && !failures.every(it => it instanceof SerializationFailureError)) {
|
|
231
|
-
failures.slice(1).map(e => logger.error(e))
|
|
232
|
-
}
|
|
233
|
-
throw failures[0]
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
const values = getFulfilledValues(results)
|
|
237
|
-
const sortedValues = [values[0], ...values.slice(1).sort((a, b) => a.index - b.index)]
|
|
238
|
-
|
|
239
|
-
return flattenResult(
|
|
240
|
-
sortedValues.map(it => it.value).filter((it): it is MutationResultList | MutationResultList[] => !!it),
|
|
241
|
-
)
|
|
242
|
-
}
|
|
@@ -1,28 +1,20 @@
|
|
|
1
1
|
import { Acl, Input, Model, Value } from '@contember/schema'
|
|
2
|
-
import {
|
|
2
|
+
import { InsertBuilder as DbInsertBuilder, QueryBuilder, Value as DbValue } from '@contember/database'
|
|
3
3
|
import { PathFactory, WhereBuilder } from '../select'
|
|
4
4
|
import { getColumnName, getColumnType } from '@contember/schema-utils'
|
|
5
5
|
import { ColumnValue, ResolvedColumnValue, resolveGenericValue, resolveRowData } from '../ColumnValue'
|
|
6
|
-
import { ImplementationException } from '../../exception'
|
|
7
6
|
import { PredicateFactory } from '../../acl'
|
|
8
|
-
import {
|
|
9
|
-
import { AfterInsertEvent, BeforeInsertEvent, EventManager } from '../EventManager'
|
|
7
|
+
import { AfterInsertEvent, BeforeInsertEvent } from '../EventManager'
|
|
10
8
|
import { Mapper } from '../Mapper'
|
|
11
9
|
|
|
12
10
|
export interface InsertResult {
|
|
13
11
|
values: ResolvedColumnValue[]
|
|
14
12
|
executed: boolean
|
|
15
|
-
aborted: boolean
|
|
16
13
|
primaryValue: Value.PrimaryValue | null
|
|
17
14
|
}
|
|
18
15
|
|
|
19
|
-
export class InsertBuilder
|
|
20
|
-
private
|
|
21
|
-
throw new ImplementationException('InsertBuilder: Resolver called too soon')
|
|
22
|
-
}
|
|
23
|
-
public readonly insert: Promise<Value.PrimaryValue | null> = new Promise(resolve => (this.resolver = resolve))
|
|
24
|
-
|
|
25
|
-
private rowData: Map<string, ColumnValue<AbortDataManipulation | undefined>> = new Map()
|
|
16
|
+
export class InsertBuilder {
|
|
17
|
+
private rowData: Map<string, ColumnValue<undefined>> = new Map()
|
|
26
18
|
private where: { and: Input.OptionalWhere[] } = { and: [] }
|
|
27
19
|
|
|
28
20
|
constructor(
|
|
@@ -35,8 +27,8 @@ export class InsertBuilder implements DataManipulationBuilder {
|
|
|
35
27
|
|
|
36
28
|
public addFieldValue(
|
|
37
29
|
fieldName: string,
|
|
38
|
-
value: Value.GenericValueLike<Value.AtomicValue<
|
|
39
|
-
): Promise<Value.AtomicValue<
|
|
30
|
+
value: Value.GenericValueLike<Value.AtomicValue<undefined>>,
|
|
31
|
+
): Promise<Value.AtomicValue<undefined>> {
|
|
40
32
|
const columnName = getColumnName(this.schema, this.entity, fieldName)
|
|
41
33
|
const columnType = getColumnType(this.schema, this.entity, fieldName)
|
|
42
34
|
const resolvedValue = resolveGenericValue(value)
|
|
@@ -53,17 +45,13 @@ export class InsertBuilder implements DataManipulationBuilder {
|
|
|
53
45
|
this.where.and.push(where)
|
|
54
46
|
}
|
|
55
47
|
|
|
56
|
-
public async getResolvedData(): Promise<ResolvedColumnValue
|
|
48
|
+
public async getResolvedData(): Promise<ResolvedColumnValue[]> {
|
|
57
49
|
return resolveRowData([...this.rowData.values()])
|
|
58
50
|
}
|
|
59
51
|
|
|
60
52
|
public async execute(mapper: Mapper): Promise<InsertResult> {
|
|
61
53
|
try {
|
|
62
54
|
const resolvedData = await this.getResolvedData()
|
|
63
|
-
if (resolvedData.find(it => it.resolvedValue === AbortDataManipulation)) {
|
|
64
|
-
this.resolver(null)
|
|
65
|
-
return { aborted: true, executed: false, primaryValue: null, values: [] }
|
|
66
|
-
}
|
|
67
55
|
|
|
68
56
|
const insertData = resolvedData.reduce<QueryBuilder.ColumnExpressionMap>(
|
|
69
57
|
(result, item) => ({ ...result, [item.columnName]: expr => expr.select(['root_', item.columnName]) }),
|
|
@@ -95,10 +83,8 @@ export class InsertBuilder implements DataManipulationBuilder {
|
|
|
95
83
|
beforeInsertEvent.afterEvent = afterInsertEvent
|
|
96
84
|
await mapper.eventManager.fire(afterInsertEvent)
|
|
97
85
|
|
|
98
|
-
|
|
99
|
-
return { values: resolvedData as ResolvedColumnValue[], executed: true, primaryValue: result, aborted: false }
|
|
86
|
+
return { values: resolvedData as ResolvedColumnValue[], executed: true, primaryValue: result }
|
|
100
87
|
} catch (e) {
|
|
101
|
-
this.resolver(null)
|
|
102
88
|
throw e
|
|
103
89
|
}
|
|
104
90
|
}
|
|
@@ -1,20 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
collectResults,
|
|
3
|
-
MutationCreateOk,
|
|
4
|
-
MutationNoResultError,
|
|
5
|
-
MutationNothingToDo,
|
|
6
|
-
MutationResultList,
|
|
7
|
-
NothingToDoReason,
|
|
8
|
-
RowValues,
|
|
9
|
-
} from '../Result'
|
|
1
|
+
import { MutationCreateOk, MutationNoResultError, MutationNothingToDo, MutationResultList, NothingToDoReason } from '../Result'
|
|
10
2
|
import { CreateInputVisitor } from '../../inputProcessing'
|
|
11
|
-
import { SqlCreateInputProcessor } from './SqlCreateInputProcessor'
|
|
3
|
+
import { SqlCreateInputProcessor, SqlCreateInputProcessorResult } from './SqlCreateInputProcessor'
|
|
12
4
|
import { Mapper } from '../Mapper'
|
|
13
|
-
import { Input, Model
|
|
14
|
-
import {
|
|
5
|
+
import { Input, Model } from '@contember/schema'
|
|
6
|
+
import { acceptFieldVisitor, Providers } from '@contember/schema-utils'
|
|
15
7
|
import { InsertBuilderFactory } from './InsertBuilderFactory'
|
|
16
8
|
import { InsertBuilder } from './InsertBuilder'
|
|
17
|
-
import { tryMutation } from '../ErrorUtils'
|
|
18
9
|
import { rowDataToFieldValues } from '../ColumnValue'
|
|
19
10
|
import { DatabaseMetadata } from '@contember/database'
|
|
20
11
|
|
|
@@ -34,45 +25,67 @@ export class Inserter {
|
|
|
34
25
|
builderCb: (builder: InsertBuilder) => void,
|
|
35
26
|
): Promise<MutationResultList> {
|
|
36
27
|
const insertBuilder = this.insertBuilderFactory.create(entity)
|
|
37
|
-
// eslint-disable-next-line promise/catch-or-return
|
|
38
|
-
insertBuilder.insert.then(id => id && insertIdCallback(String(id)))
|
|
39
28
|
|
|
40
29
|
insertBuilder.addPredicates(Object.keys(data))
|
|
41
|
-
|
|
30
|
+
|
|
31
|
+
const visitor = new CreateInputVisitor<SqlCreateInputProcessorResult>(
|
|
42
32
|
new SqlCreateInputProcessor(insertBuilder, mapper, this.providers),
|
|
43
33
|
this.schema,
|
|
44
34
|
data,
|
|
45
35
|
)
|
|
46
|
-
const promises = acceptEveryFieldVisitor<Promise<MutationResultList | MutationResultList[] | undefined>>(
|
|
47
|
-
this.schema,
|
|
48
|
-
entity,
|
|
49
|
-
visitor,
|
|
50
|
-
)
|
|
51
|
-
builderCb(insertBuilder)
|
|
52
36
|
|
|
53
|
-
const
|
|
54
|
-
|
|
55
|
-
const insertPromise = this.executeInsert(insertBuilder, mapper, okResultFactory)
|
|
37
|
+
const resultList: MutationResultList = []
|
|
38
|
+
const postInserts: Exclude<SqlCreateInputProcessorResult, MutationResultList>[] = []
|
|
56
39
|
|
|
57
|
-
|
|
58
|
-
|
|
40
|
+
const keys = new Set([
|
|
41
|
+
entity.primary,
|
|
42
|
+
...Object.keys(data),
|
|
43
|
+
...Object.keys(entity.fields),
|
|
44
|
+
])
|
|
59
45
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
46
|
+
for (const key of keys.values()) {
|
|
47
|
+
const resultSet = await acceptFieldVisitor(
|
|
48
|
+
this.schema,
|
|
49
|
+
entity,
|
|
50
|
+
key,
|
|
51
|
+
visitor,
|
|
52
|
+
)
|
|
53
|
+
for (const result of resultSet) {
|
|
54
|
+
if (typeof result === 'function') {
|
|
55
|
+
postInserts.push(result)
|
|
56
|
+
} else {
|
|
57
|
+
for (const resultItem of await result) {
|
|
58
|
+
resultList.push(resultItem)
|
|
59
|
+
if (resultItem.error) {
|
|
60
|
+
return resultList
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
69
64
|
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
builderCb(insertBuilder)
|
|
68
|
+
const insertResult = await insertBuilder.execute(mapper)
|
|
70
69
|
|
|
71
|
-
|
|
72
|
-
|
|
70
|
+
if (insertResult.primaryValue === null) {
|
|
71
|
+
return [new MutationNoResultError([]), ...resultList]
|
|
72
|
+
}
|
|
73
|
+
insertIdCallback(String(insertResult.primaryValue))
|
|
74
|
+
|
|
75
|
+
const okResult = new MutationCreateOk([], entity, insertResult.primaryValue, data, rowDataToFieldValues(insertResult.values))
|
|
76
|
+
resultList.unshift(okResult)
|
|
77
|
+
|
|
78
|
+
for (const postInsert of postInserts) {
|
|
79
|
+
const postInsertResult = await postInsert({ primary: insertResult.primaryValue })
|
|
80
|
+
for (const result of postInsertResult) {
|
|
81
|
+
resultList.push(result)
|
|
82
|
+
if (result.error) {
|
|
83
|
+
return resultList
|
|
84
|
+
}
|
|
73
85
|
}
|
|
74
|
-
|
|
75
|
-
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
return resultList
|
|
76
89
|
}
|
|
77
90
|
}
|
|
78
91
|
|