@contember/engine-content-api 1.3.0-alpha.1 → 1.3.0-alpha.13
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/src/ExecutionContainer.d.ts +144 -0
- package/dist/src/ExecutionContainer.d.ts.map +1 -0
- package/dist/src/ExecutionContainer.js +85 -0
- package/dist/src/ExecutionContainer.js.map +1 -0
- package/dist/src/acl/PermissionFactory.d.ts +5 -4
- package/dist/src/acl/PermissionFactory.d.ts.map +1 -1
- package/dist/src/acl/PermissionFactory.js +10 -13
- package/dist/src/acl/PermissionFactory.js.map +1 -1
- package/dist/src/acl/index.d.ts +0 -1
- package/dist/src/acl/index.d.ts.map +1 -1
- package/dist/src/acl/index.js +0 -1
- package/dist/src/acl/index.js.map +1 -1
- package/dist/src/index.d.ts +2 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +18 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/mapper/ColumnValue.d.ts +2 -2
- package/dist/src/mapper/ColumnValue.d.ts.map +1 -1
- package/dist/src/mapper/ErrorUtils.d.ts +3 -2
- package/dist/src/mapper/ErrorUtils.d.ts.map +1 -1
- package/dist/src/mapper/ErrorUtils.js +55 -35
- package/dist/src/mapper/ErrorUtils.js.map +1 -1
- package/dist/src/mapper/EventManager.d.ts +86 -0
- package/dist/src/mapper/EventManager.d.ts.map +1 -0
- package/dist/src/mapper/EventManager.js +118 -0
- package/dist/src/mapper/EventManager.js.map +1 -0
- package/dist/src/mapper/JunctionTableManager.d.ts +12 -11
- package/dist/src/mapper/JunctionTableManager.d.ts.map +1 -1
- package/dist/src/mapper/JunctionTableManager.js +20 -8
- package/dist/src/mapper/JunctionTableManager.js.map +1 -1
- package/dist/src/mapper/Mapper.d.ts +13 -6
- package/dist/src/mapper/Mapper.d.ts.map +1 -1
- package/dist/src/mapper/Mapper.js +41 -21
- package/dist/src/mapper/Mapper.js.map +1 -1
- package/dist/src/mapper/MapperFactory.d.ts +34 -0
- package/dist/src/mapper/MapperFactory.d.ts.map +1 -0
- package/dist/src/mapper/MapperFactory.js +41 -0
- package/dist/src/mapper/MapperFactory.js.map +1 -0
- package/dist/src/mapper/Result.d.ts +5 -3
- package/dist/src/mapper/Result.d.ts.map +1 -1
- package/dist/src/mapper/Result.js +4 -3
- package/dist/src/mapper/Result.js.map +1 -1
- package/dist/src/mapper/delete/DeleteExecutor.d.ts.map +1 -1
- package/dist/src/mapper/delete/DeleteExecutor.js +41 -1
- package/dist/src/mapper/delete/DeleteExecutor.js.map +1 -1
- package/dist/src/mapper/index.d.ts +3 -1
- package/dist/src/mapper/index.d.ts.map +1 -1
- package/dist/src/mapper/index.js +3 -1
- package/dist/src/mapper/index.js.map +1 -1
- package/dist/src/mapper/insert/InsertBuilder.d.ts +2 -2
- package/dist/src/mapper/insert/InsertBuilder.d.ts.map +1 -1
- package/dist/src/mapper/insert/InsertBuilder.js +8 -2
- package/dist/src/mapper/insert/InsertBuilder.js.map +1 -1
- package/dist/src/mapper/insert/Inserter.d.ts +3 -2
- package/dist/src/mapper/insert/Inserter.d.ts.map +1 -1
- package/dist/src/mapper/insert/Inserter.js +7 -6
- package/dist/src/mapper/insert/Inserter.js.map +1 -1
- package/dist/src/mapper/select/OrderByHelper.d.ts +1 -1
- package/dist/src/mapper/select/OrderByHelper.d.ts.map +1 -1
- package/dist/src/mapper/select/OrderByHelper.js +3 -1
- package/dist/src/mapper/select/OrderByHelper.js.map +1 -1
- package/dist/src/mapper/select/RelationFetcher.js +2 -2
- package/dist/src/mapper/select/RelationFetcher.js.map +1 -1
- package/dist/src/mapper/update/UpdateBuilder.d.ts +4 -4
- package/dist/src/mapper/update/UpdateBuilder.d.ts.map +1 -1
- package/dist/src/mapper/update/UpdateBuilder.js +26 -8
- package/dist/src/mapper/update/UpdateBuilder.js.map +1 -1
- package/dist/src/mapper/update/UpdateBuilderFactory.d.ts +1 -1
- package/dist/src/mapper/update/UpdateBuilderFactory.d.ts.map +1 -1
- package/dist/src/mapper/update/UpdateBuilderFactory.js +2 -2
- package/dist/src/mapper/update/UpdateBuilderFactory.js.map +1 -1
- package/dist/src/mapper/update/Updater.d.ts +3 -1
- package/dist/src/mapper/update/Updater.d.ts.map +1 -1
- package/dist/src/mapper/update/Updater.js +9 -12
- package/dist/src/mapper/update/Updater.js.map +1 -1
- package/dist/src/resolvers/GraphQlQueryAstFactory.d.ts +1 -3
- package/dist/src/resolvers/GraphQlQueryAstFactory.d.ts.map +1 -1
- package/dist/src/resolvers/GraphQlQueryAstFactory.js +1 -4
- package/dist/src/resolvers/GraphQlQueryAstFactory.js.map +1 -1
- package/dist/src/resolvers/MutationResolver.d.ts +3 -4
- package/dist/src/resolvers/MutationResolver.d.ts.map +1 -1
- package/dist/src/resolvers/MutationResolver.js +11 -12
- package/dist/src/resolvers/MutationResolver.js.map +1 -1
- package/dist/src/resolvers/ReadResolver.d.ts +1 -3
- package/dist/src/resolvers/ReadResolver.d.ts.map +1 -1
- package/dist/src/resolvers/ReadResolver.js +6 -10
- package/dist/src/resolvers/ReadResolver.js.map +1 -1
- package/dist/src/resolvers/ValidationResolver.d.ts +1 -3
- package/dist/src/resolvers/ValidationResolver.d.ts.map +1 -1
- package/dist/src/resolvers/ValidationResolver.js +3 -4
- package/dist/src/resolvers/ValidationResolver.js.map +1 -1
- package/dist/src/resolvers/index.d.ts +0 -1
- package/dist/src/resolvers/index.d.ts.map +1 -1
- package/dist/src/resolvers/index.js +0 -1
- package/dist/src/resolvers/index.js.map +1 -1
- package/dist/src/schema/CustomTypesProvider.d.ts.map +1 -1
- package/dist/src/schema/CustomTypesProvider.js +1 -23
- package/dist/src/schema/CustomTypesProvider.js.map +1 -1
- package/dist/src/schema/MutationProvider.js +4 -4
- package/dist/src/schema/MutationProvider.js.map +1 -1
- package/dist/src/schema/QueryProvider.js +3 -3
- package/dist/src/schema/QueryProvider.js.map +1 -1
- package/dist/src/tsconfig.tsbuildinfo +1 -1
- package/dist/src/types.d.ts +3 -4
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/utils/index.d.ts +0 -1
- package/dist/src/utils/index.d.ts.map +1 -1
- package/dist/src/utils/index.js +0 -1
- package/dist/src/utils/index.js.map +1 -1
- package/dist/src/utils/uniqueWhereFields.js +1 -1
- package/dist/src/utils/uniqueWhereFields.js.map +1 -1
- package/dist/tests/cases/bugs/bug-update-by-nested-unique.test.js +3 -5
- package/dist/tests/cases/bugs/bug-update-by-nested-unique.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlDb/insert/insertSequence.test.js +2 -2
- package/dist/tests/cases/integration/graphQlDb/insert/insertSequence.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlDb/update/bug-freeze-connect-missing-one.test.js +1 -1
- package/dist/tests/cases/integration/graphQlDb/update/bug-freeze-connect-missing-one.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlDb/update/deferedConstraints.test.js +45 -45
- package/dist/tests/cases/integration/graphQlDb/update/deferedConstraints.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlDb/update/failedDelete.test.js +5 -5
- package/dist/tests/cases/integration/graphQlDb/update/failedDelete.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlDb/update/invalidInput.test.js +2 -2
- package/dist/tests/cases/integration/graphQlDb/update/invalidInput.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlDb/update/nullChecksNotNull.test.js +7 -7
- package/dist/tests/cases/integration/graphQlDb/update/nullChecksNotNull.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlDb/update/nullChecksNullable.test.js +7 -7
- package/dist/tests/cases/integration/graphQlDb/update/nullChecksNullable.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlDb/update/uniqueConstraint.test.js +2 -2
- package/dist/tests/cases/integration/graphQlDb/update/uniqueConstraint.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/insert/oneHasMany/connect.test.js +3 -3
- package/dist/tests/cases/integration/graphQlRequests/insert/oneHasMany/connect.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/query/acl/isNullAcl.test.d.ts +2 -0
- package/dist/tests/cases/integration/graphQlRequests/query/acl/isNullAcl.test.d.ts.map +1 -0
- package/dist/tests/cases/integration/graphQlRequests/query/acl/isNullAcl.test.js +91 -0
- package/dist/tests/cases/integration/graphQlRequests/query/acl/isNullAcl.test.js.map +1 -0
- package/dist/tests/cases/integration/graphQlRequests/query/acl/rowPredicateSubset.test.js +1 -1
- package/dist/tests/cases/integration/graphQlRequests/query/acl/rowPredicateSubset.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/query/sorting/orderBy.test.d.ts +2 -0
- package/dist/tests/cases/integration/graphQlRequests/query/sorting/orderBy.test.d.ts.map +1 -0
- package/dist/tests/cases/integration/graphQlRequests/query/sorting/orderBy.test.js +67 -0
- package/dist/tests/cases/integration/graphQlRequests/query/sorting/orderBy.test.js.map +1 -0
- package/dist/tests/cases/integration/graphQlRequests/update/acl/aclUpdate.test.js +6 -18
- package/dist/tests/cases/integration/graphQlRequests/update/acl/aclUpdate.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/additionalFilter.test.js +3 -4
- package/dist/tests/cases/integration/graphQlRequests/update/additionalFilter.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/basic/columnUpdate.test.js +3 -8
- package/dist/tests/cases/integration/graphQlRequests/update/basic/columnUpdate.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/update.test.js +3 -9
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/update.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/upsert.test.js +3 -9
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/upsert.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/update.test.js +3 -9
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/update.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/upsert.test.js +3 -9
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/upsert.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasOne/connect.test.js +3 -10
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasOne/connect.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasOne/create.test.js +3 -10
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasOne/create.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasOne/disconnect.test.js +3 -9
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasOne/disconnect.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasOne/update.test.js +3 -9
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasOne/update.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasOne/upsert.test.js +6 -18
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasOne/upsert.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/connect.test.js +3 -11
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/connect.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/disconnect.test.js +3 -8
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/disconnect.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/update.test.js +3 -6
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/update.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/upsert.test.js +3 -6
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/upsert.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/connect.test.js +15 -50
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/connect.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/create.test.js +3 -10
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/create.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/disconnect.test.js +3 -10
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/disconnect.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/update.test.js +3 -6
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/update.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/upsert.test.js +3 -7
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/upsert.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/connect.test.js +12 -32
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/connect.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/connectOrCreate.test.js +3 -3
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/connectOrCreate.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/create.test.js +6 -20
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/create.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/disconnect.test.js +3 -10
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/disconnect.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/update.test.js +3 -9
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/update.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/upsert.test.js +6 -19
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/upsert.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/queryPortal.test.js +6 -8
- package/dist/tests/cases/integration/graphQlRequests/update/queryPortal.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/transaction.test.js +9 -24
- package/dist/tests/cases/integration/graphQlRequests/update/transaction.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/upsert/basicUpsert.test.js +3 -7
- package/dist/tests/cases/integration/graphQlRequests/upsert/basicUpsert.test.js.map +1 -1
- package/dist/tests/cases/unit/orderbyHelper.test.js +13 -2
- package/dist/tests/cases/unit/orderbyHelper.test.js.map +1 -1
- package/dist/tests/cases/unit/permissionMerger.test.js +8 -3
- package/dist/tests/cases/unit/permissionMerger.test.js.map +1 -1
- package/dist/tests/cases/unit/predicatesInjector.test.js +1 -1
- package/dist/tests/cases/unit/predicatesInjector.test.js.map +1 -1
- package/dist/tests/src/test.d.ts +1 -0
- package/dist/tests/src/test.d.ts.map +1 -1
- package/dist/tests/src/test.js +35 -6
- package/dist/tests/src/test.js.map +1 -1
- package/dist/tests/tsconfig.tsbuildinfo +1 -1
- package/package.json +16 -13
- package/src/ExecutionContainer.ts +208 -0
- package/src/acl/PermissionFactory.ts +15 -13
- package/src/acl/index.ts +0 -1
- package/src/index.ts +24 -1
- package/src/mapper/ColumnValue.ts +2 -2
- package/src/mapper/ErrorUtils.ts +66 -41
- package/src/mapper/EventManager.ts +158 -0
- package/src/mapper/JunctionTableManager.ts +50 -32
- package/src/mapper/Mapper.ts +48 -27
- package/src/mapper/MapperFactory.ts +69 -0
- package/src/mapper/Result.ts +5 -2
- package/src/mapper/delete/DeleteExecutor.ts +42 -1
- package/src/mapper/index.ts +3 -1
- package/src/mapper/insert/InsertBuilder.ts +12 -2
- package/src/mapper/insert/Inserter.ts +7 -7
- package/src/mapper/select/OrderByHelper.ts +2 -1
- package/src/mapper/select/RelationFetcher.ts +2 -2
- package/src/mapper/update/UpdateBuilder.ts +30 -7
- package/src/mapper/update/UpdateBuilderFactory.ts +2 -2
- package/src/mapper/update/Updater.ts +9 -13
- package/src/resolvers/GraphQlQueryAstFactory.ts +1 -2
- package/src/resolvers/MutationResolver.ts +15 -14
- package/src/resolvers/ReadResolver.ts +5 -9
- package/src/resolvers/ValidationResolver.ts +2 -4
- package/src/resolvers/index.ts +0 -1
- package/src/schema/CustomTypesProvider.ts +2 -27
- package/src/schema/MutationProvider.ts +4 -4
- package/src/schema/QueryProvider.ts +3 -3
- package/src/tsconfig.json +7 -21
- package/src/types.ts +3 -4
- package/src/utils/index.ts +0 -1
- package/src/utils/uniqueWhereFields.ts +1 -1
- package/tests/cases/bugs/bug-update-by-nested-unique.test.ts +3 -5
- package/tests/cases/integration/graphQlDb/insert/insertSequence.test.ts +2 -2
- package/tests/cases/integration/graphQlDb/update/bug-freeze-connect-missing-one.test.ts +1 -1
- package/tests/cases/integration/graphQlDb/update/deferedConstraints.test.ts +9 -9
- package/tests/cases/integration/graphQlDb/update/failedDelete.test.ts +3 -3
- package/tests/cases/integration/graphQlDb/update/invalidInput.test.ts +2 -2
- package/tests/cases/integration/graphQlDb/update/nullChecksNotNull.test.ts +7 -7
- package/tests/cases/integration/graphQlDb/update/nullChecksNullable.test.ts +7 -7
- package/tests/cases/integration/graphQlDb/update/uniqueConstraint.test.ts +2 -2
- package/tests/cases/integration/graphQlRequests/insert/oneHasMany/connect.test.ts +3 -3
- package/tests/cases/integration/graphQlRequests/query/acl/isNullAcl.test.ts +77 -0
- package/tests/cases/integration/graphQlRequests/query/acl/rowPredicateSubset.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/query/sorting/orderBy.test.ts +67 -0
- package/tests/cases/integration/graphQlRequests/update/acl/aclUpdate.test.ts +6 -18
- package/tests/cases/integration/graphQlRequests/update/additionalFilter.test.ts +3 -4
- package/tests/cases/integration/graphQlRequests/update/basic/columnUpdate.test.ts +3 -8
- package/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/update.test.ts +3 -9
- package/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/upsert.test.ts +3 -9
- package/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/update.test.ts +3 -9
- package/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/upsert.test.ts +3 -9
- package/tests/cases/integration/graphQlRequests/update/manyHasOne/connect.test.ts +3 -10
- package/tests/cases/integration/graphQlRequests/update/manyHasOne/create.test.ts +3 -10
- package/tests/cases/integration/graphQlRequests/update/manyHasOne/disconnect.test.ts +3 -9
- package/tests/cases/integration/graphQlRequests/update/manyHasOne/update.test.ts +3 -9
- package/tests/cases/integration/graphQlRequests/update/manyHasOne/upsert.test.ts +6 -18
- package/tests/cases/integration/graphQlRequests/update/oneHasMany/connect.test.ts +3 -11
- package/tests/cases/integration/graphQlRequests/update/oneHasMany/disconnect.test.ts +3 -8
- package/tests/cases/integration/graphQlRequests/update/oneHasMany/update.test.ts +3 -6
- package/tests/cases/integration/graphQlRequests/update/oneHasMany/upsert.test.ts +3 -6
- package/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/connect.test.ts +15 -50
- package/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/create.test.ts +3 -10
- package/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/disconnect.test.ts +3 -10
- package/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/update.test.ts +3 -6
- package/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/upsert.test.ts +3 -7
- package/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/connect.test.ts +12 -32
- package/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/connectOrCreate.test.ts +3 -3
- package/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/create.test.ts +6 -20
- package/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/disconnect.test.ts +3 -10
- package/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/update.test.ts +3 -9
- package/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/upsert.test.ts +6 -19
- package/tests/cases/integration/graphQlRequests/update/queryPortal.test.ts +6 -8
- package/tests/cases/integration/graphQlRequests/update/transaction.test.ts +9 -24
- package/tests/cases/integration/graphQlRequests/upsert/basicUpsert.test.ts +3 -7
- package/tests/cases/unit/orderbyHelper.test.ts +15 -2
- package/tests/cases/unit/permissionMerger.test.ts +9 -4
- package/tests/cases/unit/predicatesInjector.test.ts +1 -1
- package/tests/src/test.ts +40 -16
- package/tests/tsconfig.json +3 -9
- package/dist/src/acl/PermissionsByIdentityFactory.d.ts +0 -12
- package/dist/src/acl/PermissionsByIdentityFactory.d.ts.map +0 -1
- package/dist/src/acl/PermissionsByIdentityFactory.js +0 -15
- package/dist/src/acl/PermissionsByIdentityFactory.js.map +0 -1
- package/dist/src/mapper/MapperContainer.d.ts +0 -18
- package/dist/src/mapper/MapperContainer.d.ts.map +0 -1
- package/dist/src/mapper/MapperContainer.js +0 -55
- package/dist/src/mapper/MapperContainer.js.map +0 -1
- package/dist/src/resolvers/ExecutionContainerFactory.d.ts +0 -24
- package/dist/src/resolvers/ExecutionContainerFactory.d.ts.map +0 -1
- package/dist/src/resolvers/ExecutionContainerFactory.js +0 -45
- package/dist/src/resolvers/ExecutionContainerFactory.js.map +0 -1
- package/dist/src/utils/arrays.d.ts +0 -3
- package/dist/src/utils/arrays.d.ts.map +0 -1
- package/dist/src/utils/arrays.js +0 -22
- package/dist/src/utils/arrays.js.map +0 -1
- package/dist/tests/cases/integration/graphQlSchema/schema-acl-allowed.gql +0 -420
- package/dist/tests/cases/integration/graphQlSchema/schema-acl-create-only.gql +0 -229
- package/dist/tests/cases/integration/graphQlSchema/schema-acl-predicate.gql +0 -112
- package/dist/tests/cases/integration/graphQlSchema/schema-acl-predicate2.gql +0 -112
- package/dist/tests/cases/integration/graphQlSchema/schema-acl-restricted-create.gql +0 -309
- package/dist/tests/cases/integration/graphQlSchema/schema-acl-restricted-delete.gql +0 -402
- package/dist/tests/cases/integration/graphQlSchema/schema-acl-restricted-update.gql +0 -338
- package/dist/tests/cases/integration/graphQlSchema/schema-acl.gql +0 -221
- package/dist/tests/cases/integration/graphQlSchema/schema-aliased-type.gql +0 -226
- package/dist/tests/cases/integration/graphQlSchema/schema-basic.gql +0 -841
- package/dist/tests/cases/integration/graphQlSchema/schema-bug-66.gql +0 -540
- package/dist/tests/cases/integration/graphQlSchema/schema-custom-primary.gql +0 -851
- package/dist/tests/cases/integration/graphQlSchema/schema-has-many-reduction.gql +0 -453
- package/dist/tests/cases/integration/graphQlSchema/schema-new-builder.gql +0 -912
- package/dist/tests/cases/integration/graphQlSchema/schema-view-entity.gql +0 -112
- package/src/acl/PermissionsByIdentityFactory.ts +0 -21
- package/src/mapper/MapperContainer.ts +0 -142
- package/src/resolvers/ExecutionContainerFactory.ts +0 -74
- package/src/utils/arrays.ts +0 -19
|
@@ -31,11 +31,9 @@ test('Update by nested unique where', async () => {
|
|
|
31
31
|
parameters: ['en'],
|
|
32
32
|
},
|
|
33
33
|
{
|
|
34
|
-
sql: SQL`
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
update "public"."front_page" set "title" = "newData_"."title" from "newData_" where "front_page"."id" = "newData_"."id"`,
|
|
38
|
-
response: { rowCount: 1 },
|
|
34
|
+
sql: SQL`with "newData_" as (select ? :: text as "title", "root_"."title" as "title_old__", "root_"."id", "root_"."site_id" from "public"."front_page" as "root_" where "root_"."id" = ?)
|
|
35
|
+
update "public"."front_page" set "title" = "newData_"."title" from "newData_" where "front_page"."id" = "newData_"."id" returning "title_old__"`,
|
|
36
|
+
response: { rows: [{}] },
|
|
39
37
|
parameters: ['Hello', testUuid(1)],
|
|
40
38
|
},
|
|
41
39
|
]),
|
|
@@ -10,9 +10,9 @@ namespace SeqModel {
|
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
test('insert author with id', async () => {
|
|
13
|
-
const
|
|
13
|
+
const model = def.createModel(SeqModel)
|
|
14
14
|
await executeDbTest({
|
|
15
|
-
schema:
|
|
15
|
+
schema: { model },
|
|
16
16
|
query: GQL`
|
|
17
17
|
mutation {
|
|
18
18
|
createOrder(data: {}) {
|
|
@@ -6,7 +6,7 @@ import { executeDbTest } from '@contember/engine-api-tester'
|
|
|
6
6
|
|
|
7
7
|
test('delete without deferring constraints', async () => {
|
|
8
8
|
await executeDbTest({
|
|
9
|
-
schema: new SchemaBuilder()
|
|
9
|
+
schema: { model: new SchemaBuilder()
|
|
10
10
|
.entity('Post', entity =>
|
|
11
11
|
entity
|
|
12
12
|
.column('slug')
|
|
@@ -25,7 +25,7 @@ test('delete without deferring constraints', async () => {
|
|
|
25
25
|
.manyHasOne('attachment', relation => relation.target('Attachment').inversedBy('refereces'))
|
|
26
26
|
.unique(['slug']),
|
|
27
27
|
)
|
|
28
|
-
.buildSchema(),
|
|
28
|
+
.buildSchema() },
|
|
29
29
|
seed: [
|
|
30
30
|
{
|
|
31
31
|
query: `mutation {
|
|
@@ -60,10 +60,10 @@ test('delete without deferring constraints', async () => {
|
|
|
60
60
|
return: {
|
|
61
61
|
transaction: {
|
|
62
62
|
ok: false,
|
|
63
|
-
errorMessage: 'Execution has failed:\nupdatePost.attachments.0: ForeignKeyConstraintViolation (Cannot delete 123e4567-e89b-12d3-a456-
|
|
63
|
+
errorMessage: 'Execution has failed:\nupdatePost.attachments.0: ForeignKeyConstraintViolation (Cannot delete 123e4567-e89b-12d3-a456-000000000004 row(s) of entity Attachment, because it is still referenced from 123e4567-e89b-12d3-a456-000000000006 row(s) of entity Reference in relation attachment. OnDelete behaviour of this relation is set to "restrict". You might consider changing it to "setNull" or "cascade".)',
|
|
64
64
|
updatePost: {
|
|
65
65
|
ok: false,
|
|
66
|
-
errorMessage: 'Execution has failed:\nattachments.0: ForeignKeyConstraintViolation (Cannot delete 123e4567-e89b-12d3-a456-
|
|
66
|
+
errorMessage: 'Execution has failed:\nattachments.0: ForeignKeyConstraintViolation (Cannot delete 123e4567-e89b-12d3-a456-000000000004 row(s) of entity Attachment, because it is still referenced from 123e4567-e89b-12d3-a456-000000000006 row(s) of entity Reference in relation attachment. OnDelete behaviour of this relation is set to "restrict". You might consider changing it to "setNull" or "cascade".)',
|
|
67
67
|
},
|
|
68
68
|
},
|
|
69
69
|
},
|
|
@@ -73,7 +73,7 @@ test('delete without deferring constraints', async () => {
|
|
|
73
73
|
|
|
74
74
|
test('delete with successfully deferring constraints', async () => {
|
|
75
75
|
await executeDbTest({
|
|
76
|
-
schema: new SchemaBuilder()
|
|
76
|
+
schema: { model: new SchemaBuilder()
|
|
77
77
|
.entity('Post', entity =>
|
|
78
78
|
entity
|
|
79
79
|
.column('slug')
|
|
@@ -92,7 +92,7 @@ test('delete with successfully deferring constraints', async () => {
|
|
|
92
92
|
.manyHasOne('attachment', relation => relation.target('Attachment').inversedBy('refereces'))
|
|
93
93
|
.unique(['slug']),
|
|
94
94
|
)
|
|
95
|
-
.buildSchema(),
|
|
95
|
+
.buildSchema() },
|
|
96
96
|
seed: [
|
|
97
97
|
{
|
|
98
98
|
query: `mutation {
|
|
@@ -140,7 +140,7 @@ test('delete with successfully deferring constraints', async () => {
|
|
|
140
140
|
|
|
141
141
|
test('delete with unsuccessfully deferring constraints', async () => {
|
|
142
142
|
await executeDbTest({
|
|
143
|
-
schema: new SchemaBuilder()
|
|
143
|
+
schema: { model: new SchemaBuilder()
|
|
144
144
|
.entity('Post', entity =>
|
|
145
145
|
entity
|
|
146
146
|
.column('slug')
|
|
@@ -159,7 +159,7 @@ test('delete with unsuccessfully deferring constraints', async () => {
|
|
|
159
159
|
.manyHasOne('attachment', relation => relation.target('Attachment').inversedBy('refereces'))
|
|
160
160
|
.unique(['slug']),
|
|
161
161
|
)
|
|
162
|
-
.buildSchema(),
|
|
162
|
+
.buildSchema() },
|
|
163
163
|
seed: [
|
|
164
164
|
{
|
|
165
165
|
query: `mutation {
|
|
@@ -194,7 +194,7 @@ test('delete with unsuccessfully deferring constraints', async () => {
|
|
|
194
194
|
return: {
|
|
195
195
|
transaction: {
|
|
196
196
|
ok: false,
|
|
197
|
-
errorMessage: 'Execution has failed:\nunknown field: ForeignKeyConstraintViolation (Cannot delete row 123e4567-e89b-12d3-a456-
|
|
197
|
+
errorMessage: 'Execution has failed:\nunknown field: ForeignKeyConstraintViolation (Cannot delete row 123e4567-e89b-12d3-a456-000000000004 of entity Attachment, because it is still referenced from Reference::attachment. This is possibly caused by ACL denial or by missing "on delete cascade")',
|
|
198
198
|
updatePost: {
|
|
199
199
|
ok: false,
|
|
200
200
|
errorMessage: null,
|
|
@@ -6,14 +6,14 @@ import { executeDbTest } from '@contember/engine-api-tester'
|
|
|
6
6
|
|
|
7
7
|
test('fails when deleting entity without proper cascade', async () => {
|
|
8
8
|
await executeDbTest({
|
|
9
|
-
schema: new SchemaBuilder()
|
|
9
|
+
schema: { model: new SchemaBuilder()
|
|
10
10
|
.entity('Post', entity =>
|
|
11
11
|
entity.column('slug').unique(['slug']),
|
|
12
12
|
)
|
|
13
13
|
.entity('PostLocales', entity =>
|
|
14
14
|
entity.manyHasOne('post', relation => relation.target('Post').inversedBy('locales')).column('title'),
|
|
15
15
|
)
|
|
16
|
-
.buildSchema(),
|
|
16
|
+
.buildSchema() },
|
|
17
17
|
seed: [
|
|
18
18
|
{
|
|
19
19
|
query: `mutation {
|
|
@@ -37,7 +37,7 @@ test('fails when deleting entity without proper cascade', async () => {
|
|
|
37
37
|
}`,
|
|
38
38
|
return: {
|
|
39
39
|
deletePost: {
|
|
40
|
-
errorMessage: 'Execution has failed:\nunknown field: ForeignKeyConstraintViolation (Cannot delete 123e4567-e89b-12d3-a456-
|
|
40
|
+
errorMessage: 'Execution has failed:\nunknown field: ForeignKeyConstraintViolation (Cannot delete 123e4567-e89b-12d3-a456-000000000003 row(s) of entity Post, because it is still referenced from 123e4567-e89b-12d3-a456-000000000004 row(s) of entity PostLocales in relation post. OnDelete behaviour of this relation is set to "restrict". You might consider changing it to "setNull" or "cascade".)',
|
|
41
41
|
node: null,
|
|
42
42
|
},
|
|
43
43
|
},
|
|
@@ -4,7 +4,7 @@ import { test, assert } from 'vitest'
|
|
|
4
4
|
import { executeDbTest } from '@contember/engine-api-tester'
|
|
5
5
|
import { GQL } from '../../../../src/tags'
|
|
6
6
|
|
|
7
|
-
const
|
|
7
|
+
const model = new SchemaBuilder()
|
|
8
8
|
.entity('Post', e =>
|
|
9
9
|
e
|
|
10
10
|
.column('slug', c => c.type(Model.ColumnType.String).unique())
|
|
@@ -13,7 +13,7 @@ const schema = new SchemaBuilder()
|
|
|
13
13
|
.buildSchema()
|
|
14
14
|
test('returns error for invalid date input', async () => {
|
|
15
15
|
await executeDbTest({
|
|
16
|
-
schema,
|
|
16
|
+
schema: { model },
|
|
17
17
|
seed: [
|
|
18
18
|
{
|
|
19
19
|
query: GQL`mutation {
|
|
@@ -5,7 +5,7 @@ import { executeDbTest } from '@contember/engine-api-tester'
|
|
|
5
5
|
import { GQL } from '../../../../src/tags'
|
|
6
6
|
import { testUuid } from '../../../../src/testUuid'
|
|
7
7
|
|
|
8
|
-
const
|
|
8
|
+
const model = new SchemaBuilder()
|
|
9
9
|
.entity('Site', e =>
|
|
10
10
|
e
|
|
11
11
|
.column('slug', c => c.unique().type(Model.ColumnType.String))
|
|
@@ -17,7 +17,7 @@ const schema = new SchemaBuilder()
|
|
|
17
17
|
|
|
18
18
|
test('update site & create contact page', async () => {
|
|
19
19
|
await executeDbTest({
|
|
20
|
-
schema,
|
|
20
|
+
schema: { model },
|
|
21
21
|
seed: [
|
|
22
22
|
{
|
|
23
23
|
query: GQL`mutation {
|
|
@@ -38,15 +38,15 @@ test('update site & create contact page', async () => {
|
|
|
38
38
|
},
|
|
39
39
|
},
|
|
40
40
|
expectDatabase: {
|
|
41
|
-
site: [{ id: testUuid(
|
|
42
|
-
contact_page: [{ id: testUuid(
|
|
41
|
+
site: [{ id: testUuid(3), slug: 'en', contact_page_id: testUuid(5) }],
|
|
42
|
+
contact_page: [{ id: testUuid(5), title: 'Test' }],
|
|
43
43
|
},
|
|
44
44
|
})
|
|
45
45
|
})
|
|
46
46
|
|
|
47
47
|
test('update site & try to create contact page which however exists', async () => {
|
|
48
48
|
await executeDbTest({
|
|
49
|
-
schema,
|
|
49
|
+
schema: { model },
|
|
50
50
|
seed: [
|
|
51
51
|
{
|
|
52
52
|
query: GQL`mutation {
|
|
@@ -75,8 +75,8 @@ test('update site & try to create contact page which however exists', async () =
|
|
|
75
75
|
},
|
|
76
76
|
},
|
|
77
77
|
expectDatabase: {
|
|
78
|
-
site: [{ id: testUuid(
|
|
79
|
-
contact_page: [{ id: testUuid(
|
|
78
|
+
site: [{ id: testUuid(3), slug: 'en', contact_page_id: testUuid(4) }],
|
|
79
|
+
contact_page: [{ id: testUuid(4), title: 'Test' }],
|
|
80
80
|
},
|
|
81
81
|
})
|
|
82
82
|
})
|
|
@@ -5,7 +5,7 @@ import { executeDbTest } from '@contember/engine-api-tester'
|
|
|
5
5
|
import { GQL } from '../../../../src/tags'
|
|
6
6
|
import { testUuid } from '../../../../src/testUuid'
|
|
7
7
|
|
|
8
|
-
const
|
|
8
|
+
const model = new SchemaBuilder()
|
|
9
9
|
.entity('Site', e => e.column('slug', c => c.unique().type(Model.ColumnType.String)))
|
|
10
10
|
.entity('ContactPage', e =>
|
|
11
11
|
e.column('title').oneHasOne('site', r => r.target('Site').inversedBy('contactPage').notNull()),
|
|
@@ -14,7 +14,7 @@ const schema = new SchemaBuilder()
|
|
|
14
14
|
|
|
15
15
|
test('update site & create contact page', async () => {
|
|
16
16
|
await executeDbTest({
|
|
17
|
-
schema,
|
|
17
|
+
schema: { model },
|
|
18
18
|
seed: [
|
|
19
19
|
{
|
|
20
20
|
query: GQL`mutation {
|
|
@@ -35,15 +35,15 @@ test('update site & create contact page', async () => {
|
|
|
35
35
|
},
|
|
36
36
|
},
|
|
37
37
|
expectDatabase: {
|
|
38
|
-
site: [{ id: testUuid(
|
|
39
|
-
contact_page: [{ site_id: testUuid(
|
|
38
|
+
site: [{ id: testUuid(3), slug: 'en' }],
|
|
39
|
+
contact_page: [{ site_id: testUuid(3), id: testUuid(5), title: 'Test' }],
|
|
40
40
|
},
|
|
41
41
|
})
|
|
42
42
|
})
|
|
43
43
|
|
|
44
44
|
test('update site & try to create contact page which however exists', async () => {
|
|
45
45
|
await executeDbTest({
|
|
46
|
-
schema,
|
|
46
|
+
schema: { model },
|
|
47
47
|
seed: [
|
|
48
48
|
{
|
|
49
49
|
query: GQL`mutation {
|
|
@@ -72,8 +72,8 @@ test('update site & try to create contact page which however exists', async () =
|
|
|
72
72
|
},
|
|
73
73
|
},
|
|
74
74
|
expectDatabase: {
|
|
75
|
-
site: [{ id: testUuid(
|
|
76
|
-
contact_page: [{ site_id: testUuid(
|
|
75
|
+
site: [{ id: testUuid(3), slug: 'en' }],
|
|
76
|
+
contact_page: [{ site_id: testUuid(3), id: testUuid(4), title: 'Test' }],
|
|
77
77
|
},
|
|
78
78
|
})
|
|
79
79
|
})
|
|
@@ -4,7 +4,7 @@ import { test } from 'vitest'
|
|
|
4
4
|
import { executeDbTest } from '@contember/engine-api-tester'
|
|
5
5
|
import { GQL } from '../../../../src/tags'
|
|
6
6
|
|
|
7
|
-
const
|
|
7
|
+
const model = new SchemaBuilder()
|
|
8
8
|
.entity('Site', e =>
|
|
9
9
|
e.column('slug', c => c.unique().type(Model.ColumnType.String)),
|
|
10
10
|
)
|
|
@@ -12,7 +12,7 @@ const schema = new SchemaBuilder()
|
|
|
12
12
|
|
|
13
13
|
test('fail when creating a non-unique site', async () => {
|
|
14
14
|
await executeDbTest({
|
|
15
|
-
schema,
|
|
15
|
+
schema: { model },
|
|
16
16
|
seed: [
|
|
17
17
|
{
|
|
18
18
|
query: GQL`mutation {
|
|
@@ -41,11 +41,11 @@ test('insert category and connect existing post (one has many)', async () => {
|
|
|
41
41
|
},
|
|
42
42
|
},
|
|
43
43
|
{
|
|
44
|
-
sql: SQL`with "
|
|
45
|
-
|
|
44
|
+
sql: SQL`with "newData_" as (select ? :: uuid as "category_id", "root_"."category_id" as "category_id_old__", "root_"."id", "root_"."name" from "public"."post" as "root_" where "root_"."id" = ?)
|
|
45
|
+
update "public"."post" set "category_id" = "newData_"."category_id" from "newData_" where "post"."id" = "newData_"."id" returning "category_id_old__"`,
|
|
46
46
|
parameters: [testUuid(1), testUuid(5)],
|
|
47
47
|
response: {
|
|
48
|
-
|
|
48
|
+
rows: [{ category_id_old__: testUuid(99) }],
|
|
49
49
|
},
|
|
50
50
|
},
|
|
51
51
|
{
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { AclDefinition as acl, createSchema, SchemaDefinition as def } from '@contember/schema-definition'
|
|
2
|
+
import { test } from 'vitest'
|
|
3
|
+
import { execute } from '../../../../../src/test'
|
|
4
|
+
import { GQL, SQL } from '../../../../../src/tags'
|
|
5
|
+
import { PermissionFactory } from '../../../../../../src'
|
|
6
|
+
import { testUuid } from '@contember/engine-api-tester'
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
namespace RowPredicateSubset {
|
|
10
|
+
export const ownerRole = acl.createRole('owner')
|
|
11
|
+
export const personIdVariable = acl.createPredefinedVariable('personId', 'personID', ownerRole)
|
|
12
|
+
|
|
13
|
+
@acl.allow(ownerRole, {
|
|
14
|
+
read: true,
|
|
15
|
+
when: { resource: acl.canRead('item') },
|
|
16
|
+
})
|
|
17
|
+
export class Item {
|
|
18
|
+
resource = def.oneHasOne(Resource, 'item')
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
@acl.allow(ownerRole, {
|
|
22
|
+
read: true,
|
|
23
|
+
when: { owner: acl.canRead('resources') },
|
|
24
|
+
})
|
|
25
|
+
export class Resource {
|
|
26
|
+
item = def.oneHasOneInverse(Item, 'resource')
|
|
27
|
+
owner = def.manyHasOne(Person, 'resources')
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
@acl.allow(ownerRole, {
|
|
31
|
+
read: true,
|
|
32
|
+
when: { personId: personIdVariable },
|
|
33
|
+
})
|
|
34
|
+
export class Person {
|
|
35
|
+
personId = def.uuidColumn().notNull()
|
|
36
|
+
resources = def.oneHasMany(Resource, 'owner')
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
test('owner predicate with isNull', async () => {
|
|
42
|
+
const schema = createSchema(RowPredicateSubset)
|
|
43
|
+
|
|
44
|
+
const permissions = new PermissionFactory().create(schema, ['owner'])
|
|
45
|
+
|
|
46
|
+
await execute({
|
|
47
|
+
schema: schema.model,
|
|
48
|
+
permissions: permissions,
|
|
49
|
+
variables: {
|
|
50
|
+
owner__personId: { eq: testUuid(0) },
|
|
51
|
+
},
|
|
52
|
+
query: GQL`
|
|
53
|
+
query {
|
|
54
|
+
listItem(filter: {resource: {id: {isNull: true}}}) {
|
|
55
|
+
id
|
|
56
|
+
}
|
|
57
|
+
}`,
|
|
58
|
+
executes: [
|
|
59
|
+
{
|
|
60
|
+
sql: SQL`select "root_"."id" as "root_id" from "public"."item" as "root_"
|
|
61
|
+
left join "public"."resource" as "root_resource" on "root_"."resource_id" = "root_resource"."id"
|
|
62
|
+
left join "public"."person" as "root_resource_owner" on "root_resource"."owner_id" = "root_resource_owner"."id"
|
|
63
|
+
where "root_resource"."id" is null and "root_resource_owner"."person_id" = ? and "root_resource_owner"."person_id" = ?`,
|
|
64
|
+
response: {
|
|
65
|
+
rows: [],
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
],
|
|
69
|
+
return: {
|
|
70
|
+
data: {
|
|
71
|
+
listItem: [],
|
|
72
|
+
},
|
|
73
|
+
},
|
|
74
|
+
})
|
|
75
|
+
})
|
|
76
|
+
|
|
77
|
+
|
|
@@ -37,7 +37,7 @@ namespace RowPredicateSubset {
|
|
|
37
37
|
test('row level predicate includes main predicate', async () => {
|
|
38
38
|
const schema = createSchema(RowPredicateSubset)
|
|
39
39
|
|
|
40
|
-
const permissions = new PermissionFactory(
|
|
40
|
+
const permissions = new PermissionFactory().create(schema, ['reader'])
|
|
41
41
|
|
|
42
42
|
await execute({
|
|
43
43
|
schema: schema.model,
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { test } from 'vitest'
|
|
2
|
+
import { execute } from '../../../../../src/test'
|
|
3
|
+
import { SchemaBuilder } from '@contember/schema-definition'
|
|
4
|
+
import { Model } from '@contember/schema'
|
|
5
|
+
import { GQL, SQL } from '../../../../../src/tags'
|
|
6
|
+
import { testUuid } from '../../../../../src/testUuid'
|
|
7
|
+
|
|
8
|
+
test('Entity - explicit order by, default asc', async () => {
|
|
9
|
+
await execute({
|
|
10
|
+
schema: new SchemaBuilder()
|
|
11
|
+
.entity('Post', entity => entity.column('title', column => column.type(Model.ColumnType.String)).orderBy('title'))
|
|
12
|
+
.buildSchema(),
|
|
13
|
+
query: GQL`
|
|
14
|
+
query {
|
|
15
|
+
getPost(by: {id: "${testUuid(1)}"}, filter: {title: {eq: "Foo"}}) {
|
|
16
|
+
id
|
|
17
|
+
}
|
|
18
|
+
}`,
|
|
19
|
+
executes: [
|
|
20
|
+
{
|
|
21
|
+
sql: SQL`select "root_"."id" as "root_id"
|
|
22
|
+
from "public"."post" as "root_"
|
|
23
|
+
where "root_"."id" = ? and "root_"."title" = ? order by "root_"."title" asc, "root_"."id" asc`,
|
|
24
|
+
response: { rows: [{ root_id: testUuid(1) }] },
|
|
25
|
+
parameters: [testUuid(1), 'Foo'],
|
|
26
|
+
},
|
|
27
|
+
],
|
|
28
|
+
return: {
|
|
29
|
+
data: {
|
|
30
|
+
getPost: {
|
|
31
|
+
id: testUuid(1),
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
})
|
|
36
|
+
})
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
test('Entity - explicit order by desc', async () => {
|
|
40
|
+
await execute({
|
|
41
|
+
schema: new SchemaBuilder()
|
|
42
|
+
.entity('Post', entity => entity.column('title', column => column.type(Model.ColumnType.String)).orderBy('title', Model.OrderDirection.desc))
|
|
43
|
+
.buildSchema(),
|
|
44
|
+
query: GQL`
|
|
45
|
+
query {
|
|
46
|
+
getPost(by: {id: "${testUuid(1)}"}, filter: {title: {eq: "Foo"}}) {
|
|
47
|
+
id
|
|
48
|
+
}
|
|
49
|
+
}`,
|
|
50
|
+
executes: [
|
|
51
|
+
{
|
|
52
|
+
sql: SQL`select "root_"."id" as "root_id"
|
|
53
|
+
from "public"."post" as "root_"
|
|
54
|
+
where "root_"."id" = ? and "root_"."title" = ? order by "root_"."title" desc, "root_"."id" asc`,
|
|
55
|
+
response: { rows: [{ root_id: testUuid(1) }] },
|
|
56
|
+
parameters: [testUuid(1), 'Foo'],
|
|
57
|
+
},
|
|
58
|
+
],
|
|
59
|
+
return: {
|
|
60
|
+
data: {
|
|
61
|
+
getPost: {
|
|
62
|
+
id: testUuid(1),
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
})
|
|
67
|
+
})
|
|
@@ -45,16 +45,10 @@ test('update name', async () => {
|
|
|
45
45
|
response: { rows: [{ id: testUuid(1) }] },
|
|
46
46
|
},
|
|
47
47
|
{
|
|
48
|
-
sql: SQL`with "newData_" as
|
|
49
|
-
|
|
50
|
-
? :: text as "name",
|
|
51
|
-
"root_"."id"
|
|
52
|
-
from "public"."author" as "root_"
|
|
53
|
-
where "root_"."id" = ? and "root_"."name" in (?, ?)) update "public"."author"
|
|
54
|
-
set "name" = "newData_"."name" from "newData_"
|
|
55
|
-
where "author"."id" = "newData_"."id" and "newData_"."name" in (?, ?)`,
|
|
48
|
+
sql: SQL`with "newData_" as (select ? :: text as "name", "root_"."name" as "name_old__", "root_"."id" from "public"."author" as "root_" where "root_"."id" = ? and "root_"."name" in (?, ?))
|
|
49
|
+
update "public"."author" set "name" = "newData_"."name" from "newData_" where "author"."id" = "newData_"."id" and "newData_"."name" in (?, ?) returning "name_old__"`,
|
|
56
50
|
parameters: ['John', testUuid(1), 'John', 'Jack', 'John', 'Jack'],
|
|
57
|
-
response: {
|
|
51
|
+
response: { rows: [{ name_old__: 'John' }] },
|
|
58
52
|
},
|
|
59
53
|
]),
|
|
60
54
|
],
|
|
@@ -108,16 +102,10 @@ test('update name - denied', async () => {
|
|
|
108
102
|
response: { rows: [{ id: testUuid(1) }] },
|
|
109
103
|
},
|
|
110
104
|
{
|
|
111
|
-
sql: SQL`with "newData_" as
|
|
112
|
-
|
|
113
|
-
? :: text as "name",
|
|
114
|
-
"root_"."id"
|
|
115
|
-
from "public"."author" as "root_"
|
|
116
|
-
where false) update "public"."author"
|
|
117
|
-
set "name" = "newData_"."name" from "newData_"
|
|
118
|
-
where "author"."id" = "newData_"."id" and false`,
|
|
105
|
+
sql: SQL`with "newData_" as (select ? :: text as "name", "root_"."name" as "name_old__", "root_"."id" from "public"."author" as "root_" where false)
|
|
106
|
+
update "public"."author" set "name" = "newData_"."name" from "newData_" where "author"."id" = "newData_"."id" and false returning "name_old__"`,
|
|
119
107
|
parameters: ['John'],
|
|
120
|
-
response:
|
|
108
|
+
response: { rows: [] },
|
|
121
109
|
},
|
|
122
110
|
]),
|
|
123
111
|
],
|
|
@@ -30,11 +30,10 @@ test('applies a filter', async () => {
|
|
|
30
30
|
response: { rows: [{ id: testUuid(1) }] },
|
|
31
31
|
},
|
|
32
32
|
{
|
|
33
|
-
sql: SQL`with "
|
|
34
|
-
|
|
35
|
-
update "public"."author" set "name" = "newdata_"."name" from "newdata_" where "author"."id" = "newdata_"."id"`,
|
|
33
|
+
sql: SQL`with "newData_" as (select ? :: text as "name", "root_"."name" as "name_old__", "root_"."id" from "public"."author" as "root_" where "root_"."id" = ? and "root_"."name" = ?)
|
|
34
|
+
update "public"."author" set "name" = "newData_"."name" from "newData_" where "author"."id" = "newData_"."id" returning "name_old__"`,
|
|
36
35
|
parameters: ['John', testUuid(1), 'Jack'],
|
|
37
|
-
response: {
|
|
36
|
+
response: { rows: [{ name_old__: 'Jack' }] },
|
|
38
37
|
},
|
|
39
38
|
{
|
|
40
39
|
sql: SQL`select "root_"."id" as "root_id"
|
|
@@ -29,15 +29,10 @@ test('update name', async () => {
|
|
|
29
29
|
response: { rows: [{ id: testUuid(1) }] },
|
|
30
30
|
},
|
|
31
31
|
{
|
|
32
|
-
sql: SQL`with "newData_" as (select
|
|
33
|
-
|
|
34
|
-
"root_"."id"
|
|
35
|
-
from "public"."author" as "root_"
|
|
36
|
-
where "root_"."id" = ?) update "public"."author"
|
|
37
|
-
set "name" = "newData_"."name" from "newData_"
|
|
38
|
-
where "author"."id" = "newData_"."id"`,
|
|
32
|
+
sql: SQL`with "newData_" as (select ? :: text as "name", "root_"."name" as "name_old__", "root_"."id" from "public"."author" as "root_" where "root_"."id" = ?)
|
|
33
|
+
update "public"."author" set "name" = "newData_"."name" from "newData_" where "author"."id" = "newData_"."id" returning "name_old__"`,
|
|
39
34
|
parameters: ['John', testUuid(1)],
|
|
40
|
-
response: {
|
|
35
|
+
response: { rows: [{ name_old__: 'John' }] },
|
|
41
36
|
},
|
|
42
37
|
{
|
|
43
38
|
sql: SQL`select "root_"."id" as "root_id"
|
|
@@ -28,16 +28,10 @@ test('update', async () => {
|
|
|
28
28
|
response: { rows: [{ id: testUuid(1) }] },
|
|
29
29
|
},
|
|
30
30
|
{
|
|
31
|
-
sql: SQL`with "newData_" as
|
|
32
|
-
|
|
33
|
-
? :: text as "title",
|
|
34
|
-
"root_"."id"
|
|
35
|
-
from "public"."post" as "root_"
|
|
36
|
-
where "root_"."id" = ?) update "public"."post"
|
|
37
|
-
set "title" = "newData_"."title" from "newData_"
|
|
38
|
-
where "post"."id" = "newData_"."id"`,
|
|
31
|
+
sql: SQL`with "newData_" as (select ? :: text as "title", "root_"."title" as "title_old__", "root_"."id" from "public"."post" as "root_" where "root_"."id" = ?)
|
|
32
|
+
update "public"."post" set "title" = "newData_"."title" from "newData_" where "post"."id" = "newData_"."id" returning "title_old__"`,
|
|
39
33
|
parameters: ['Lorem', testUuid(1)],
|
|
40
|
-
response: {
|
|
34
|
+
response: { rows: [{ title_old__: 'Foo bar' }] },
|
|
41
35
|
},
|
|
42
36
|
{
|
|
43
37
|
sql: SQL`insert into "public"."post_categories" ("post_id", "category_id")
|
|
@@ -28,16 +28,10 @@ test('upsert - exists', async () => {
|
|
|
28
28
|
response: { rows: [{ id: testUuid(1) }] },
|
|
29
29
|
},
|
|
30
30
|
{
|
|
31
|
-
sql: SQL`with "newData_" as
|
|
32
|
-
|
|
33
|
-
? :: text as "title",
|
|
34
|
-
"root_"."id"
|
|
35
|
-
from "public"."post" as "root_"
|
|
36
|
-
where "root_"."id" = ?) update "public"."post"
|
|
37
|
-
set "title" = "newData_"."title" from "newData_"
|
|
38
|
-
where "post"."id" = "newData_"."id"`,
|
|
31
|
+
sql: SQL`with "newData_" as (select ? :: text as "title", "root_"."title" as "title_old__", "root_"."id" from "public"."post" as "root_" where "root_"."id" = ?)
|
|
32
|
+
update "public"."post" set "title" = "newData_"."title" from "newData_" where "post"."id" = "newData_"."id" returning "title_old__"`,
|
|
39
33
|
parameters: ['Lorem', testUuid(1)],
|
|
40
|
-
response: {
|
|
34
|
+
response: { rows: [{ title_old__: 'Foo' }] },
|
|
41
35
|
},
|
|
42
36
|
{
|
|
43
37
|
sql: SQL`insert into "public"."post_categories" ("post_id", "category_id")
|
|
@@ -28,16 +28,10 @@ test('update', async () => {
|
|
|
28
28
|
response: { rows: [{ id: testUuid(1) }] },
|
|
29
29
|
},
|
|
30
30
|
{
|
|
31
|
-
sql: SQL`with "newData_" as
|
|
32
|
-
|
|
33
|
-
? :: text as "name",
|
|
34
|
-
"root_"."id"
|
|
35
|
-
from "public"."category" as "root_"
|
|
36
|
-
where "root_"."id" = ?) update "public"."category"
|
|
37
|
-
set "name" = "newData_"."name" from "newData_"
|
|
38
|
-
where "category"."id" = "newData_"."id"`,
|
|
31
|
+
sql: SQL`with "newData_" as (select ? :: text as "name", "root_"."name" as "name_old__", "root_"."id" from "public"."category" as "root_" where "root_"."id" = ?)
|
|
32
|
+
update "public"."category" set "name" = "newData_"."name" from "newData_" where "category"."id" = "newData_"."id" returning "name_old__"`,
|
|
39
33
|
parameters: ['Lorem', testUuid(1)],
|
|
40
|
-
response: {
|
|
34
|
+
response: { rows: [{ name_old__: 'Foo' }] },
|
|
41
35
|
},
|
|
42
36
|
{
|
|
43
37
|
sql: SQL`insert into "public"."post_categories" ("post_id", "category_id")
|
|
@@ -28,16 +28,10 @@ test('upsert - exists', async () => {
|
|
|
28
28
|
response: { rows: [{ id: testUuid(1) }] },
|
|
29
29
|
},
|
|
30
30
|
{
|
|
31
|
-
sql: SQL`with "newData_" as
|
|
32
|
-
|
|
33
|
-
? :: text as "name",
|
|
34
|
-
"root_"."id"
|
|
35
|
-
from "public"."category" as "root_"
|
|
36
|
-
where "root_"."id" = ?) update "public"."category"
|
|
37
|
-
set "name" = "newData_"."name" from "newData_"
|
|
38
|
-
where "category"."id" = "newData_"."id"`,
|
|
31
|
+
sql: SQL`with "newData_" as (select ? :: text as "name", "root_"."name" as "name_old__", "root_"."id" from "public"."category" as "root_" where "root_"."id" = ?)
|
|
32
|
+
update "public"."category" set "name" = "newData_"."name" from "newData_" where "category"."id" = "newData_"."id" returning "name_old__"`,
|
|
39
33
|
parameters: ['Lorem', testUuid(1)],
|
|
40
|
-
response: {
|
|
34
|
+
response: { rows: [{ name_old__: 'Foo' }] },
|
|
41
35
|
},
|
|
42
36
|
{
|
|
43
37
|
sql: SQL`insert into "public"."post_categories" ("post_id", "category_id")
|
|
@@ -28,17 +28,10 @@ test('connect', async () => {
|
|
|
28
28
|
response: { rows: [{ id: testUuid(1) }] },
|
|
29
29
|
},
|
|
30
30
|
{
|
|
31
|
-
sql: SQL`with "newData_" as
|
|
32
|
-
|
|
33
|
-
? :: uuid as "author_id",
|
|
34
|
-
"root_"."id",
|
|
35
|
-
"root_"."title"
|
|
36
|
-
from "public"."post" as "root_"
|
|
37
|
-
where "root_"."id" = ?) update "public"."post"
|
|
38
|
-
set "author_id" = "newData_"."author_id" from "newData_"
|
|
39
|
-
where "post"."id" = "newData_"."id"`,
|
|
31
|
+
sql: SQL`with "newData_" as (select ? :: uuid as "author_id", "root_"."author_id" as "author_id_old__", "root_"."id", "root_"."title" from "public"."post" as "root_" where "root_"."id" = ?)
|
|
32
|
+
update "public"."post" set "author_id" = "newData_"."author_id" from "newData_" where "post"."id" = "newData_"."id" returning "author_id_old__"`,
|
|
40
33
|
parameters: [testUuid(1), testUuid(2)],
|
|
41
|
-
response: {
|
|
34
|
+
response: { rows: [{ author_id_old__: testUuid(99) }] },
|
|
42
35
|
},
|
|
43
36
|
]),
|
|
44
37
|
],
|