From dd942cab8534a85e7d83233c5eda52048e9bcbbd Mon Sep 17 00:00:00 2001 From: Kevin De Porre Date: Wed, 26 Jun 2024 15:56:38 +0200 Subject: [PATCH 1/3] Remove DAL and generator --- .../workflows/clients_typescript_tests.yml | 2 - .github/workflows/generator_tests.yml | 63 - clients/typescript/package.json | 6 +- .../src/client/conversions/converter.ts | 65 + .../src/client/conversions/index.ts | 3 +- .../src/client/conversions/input.ts | 337 +- .../src/client/conversions/postgres.ts | 23 +- .../src/client/conversions/sqlite.ts | 23 +- .../client/execution/nonTransactionalDB.ts | 10 +- .../src/client/execution/transactionalDB.ts | 10 +- clients/typescript/src/client/index.ts | 4 +- .../src/client/input/createInput.ts | 12 - .../src/client/input/deleteInput.ts | 11 - .../typescript/src/client/input/findInput.ts | 22 - .../src/client/input/inputNarrowing.ts | 102 - .../src/client/input/updateInput.ts | 16 - .../src/client/input/upsertInput.ts | 15 - .../typescript/src/client/model/builder.ts | 370 - clients/typescript/src/client/model/client.ts | 86 +- clients/typescript/src/client/model/index.ts | 11 +- clients/typescript/src/client/model/model.ts | 223 - clients/typescript/src/client/model/schema.ts | 87 +- clients/typescript/src/client/model/table.ts | 1581 +- .../typescript/src/client/model/transforms.ts | 64 +- .../src/client/output/batchPayload.ts | 3 - .../src/client/util/continuationHelpers.ts | 19 - .../typescript/src/client/util/functions.ts | 24 + clients/typescript/src/client/util/hkt.ts | 30 - .../typescript/src/client/util/relations.ts | 13 +- clients/typescript/src/client/util/types.ts | 46 - .../src/client/validation/errors/messages.ts | 5 - .../src/client/validation/validation.ts | 74 - clients/typescript/src/satellite/client.ts | 3 +- clients/typescript/src/satellite/oplog.ts | 8 +- clients/typescript/src/util/types.ts | 4 +- .../test/client/conversions/input.test.ts | 629 - .../test/client/conversions/sqlite.test.ts | 360 +- .../typescript/test/client/generated/index.ts | 3621 +---- .../test/client/generated/prismaClient.d.ts | 10737 ------------ .../typescript/test/client/model/builder.ts | 693 - .../typescript/test/client/model/datatype.ts | 954 +- .../test/client/model/pglite/builder.test.ts | 4 - .../test/client/model/pglite/datatype.test.ts | 15 +- .../client/model/postgres/builder.test.ts | 4 - .../client/model/postgres/datatype.test.ts | 15 +- .../test/client/model/shapes.test.ts | 45 +- .../test/client/model/sqlite/builder.test.ts | 4 - .../test/client/model/sqlite/datatype.test.ts | 15 +- .../test/client/model/table.errors.test.ts | 1100 +- .../test/client/model/table.test.ts | 1706 +- .../test/client/model/transforms.test.ts | 49 +- .../test/client/notifications.test.ts | 207 - .../test/client/util/functions.test.ts | 18 + .../test/client/util/relations.test.ts | 85 +- .../example-typing-usage/better-sqlite3.ts | 7 +- .../test/example-typing-usage/expo-sqlite.ts | 7 +- .../typescript/test/frameworks/react.test.tsx | 98 +- .../typescript/test/frameworks/vuejs.test.ts | 64 +- .../typescript/test/satellite/client.test.ts | 33 +- clients/typescript/test/satellite/common.ts | 8 +- .../test/satellite/serialization.ts | 42 +- components/cli/package.json | 2 - .../cli/src/client/generateTestClient.ts | 119 - components/cli/src/migrations/builder.ts | 10 +- components/cli/src/migrations/migrate.ts | 548 +- components/cli/src/util/serialize.ts | 7 +- .../cli/test/migrations/builder.test.ts | 45 +- .../migrations/migrate.generation.test.ts | 223 - .../cli/test/migrations/migrate.test.ts | 116 +- components/drivers/src/util/types.ts | 9 +- components/toolbar/test/api.test.ts | 11 - components/toolbar/test/generated/index.ts | 8299 +--------- e2e/satellite_client/Dockerfile | 1 - e2e/satellite_client/package.json | 4 +- e2e/satellite_client/src/client.ts | 560 +- .../src/generated/client/index.ts | 3643 +---- .../src/generated/client/prismaClient.d.ts | 13428 ---------------- e2e/satellite_client/src/prisma/schema.prisma | 99 - .../03.16_node_satellite_can_sync_uuids.lux | 20 - generator/.eslintrc.json | 16 - generator/.gitignore | 8 - generator/.npmignore | 10 - generator/.prettierignore | 10 - generator/.prettierrc.json | 4 - generator/CHANGELOG.md | 70 - generator/Makefile | 8 - generator/README.md | 1257 -- generator/bin.js | 2 - generator/package.json | 59 - generator/src/bin.ts | 2 - generator/src/classes/directoryHelper.ts | 56 - generator/src/classes/extendedDMMF.ts | 71 - .../src/classes/extendedDMMFDatamodel.ts | 49 - generator/src/classes/extendedDMMFEnum.ts | 27 - .../extendedDMMFField/extendedDMMFField.ts | 157 - .../extendedDMMFFieldArrayValidatorString.ts | 109 - .../extendedDMMFFieldBase.ts | 117 - .../extendedDMMFFieldCustomValidatorString.ts | 44 - .../extendedDMMFFieldDefaultValidators.ts | 77 - .../extendedDMMFFieldOmitField.ts | 100 - .../extendedDMMFFieldValidatorCustomErrors.ts | 89 - .../extendedDMMFFieldValidatorMap.ts | 330 - .../extendedDMMFFieldValidatorMatch.ts | 43 - .../extendedDMMFFieldValidatorPattern.ts | 93 - .../extendedDMMFFieldValidatorString.ts | 41 - .../extendedDMMFFieldValidatorType.ts | 137 - .../extendedDMMFFieldZodType.ts | 90 - .../src/classes/extendedDMMFField/index.ts | 1 - .../src/classes/extendedDMMFInputType.ts | 252 - generator/src/classes/extendedDMMFMappings.ts | 23 - generator/src/classes/extendedDMMFModel.ts | 295 - .../src/classes/extendedDMMFOutputType.ts | 188 - generator/src/classes/extendedDMMFSchema.ts | 158 - .../src/classes/extendedDMMFSchemaArg.ts | 177 - .../classes/extendedDMMFSchemaArgInputType.ts | 121 - .../src/classes/extendedDMMFSchemaEnum.ts | 32 - .../src/classes/extendedDMMFSchemaField.ts | 467 - generator/src/classes/fileWriter.ts | 139 - generator/src/classes/formattedNames.ts | 25 - generator/src/classes/index.ts | 16 - generator/src/constants/index.ts | 2 - generator/src/constants/objectMaps.ts | 228 - generator/src/constants/regex.ts | 77 - .../src/functions/contentWriters/index.ts | 18 - .../src/functions/contentWriters/writeArgs.ts | 51 - .../contentWriters/writeCountArgs.ts | 40 - .../contentWriters/writeCountSelect.ts | 42 - .../contentWriters/writeCustomEnum.ts | 33 - .../contentWriters/writeDecimalJsLike.ts | 24 - .../contentWriters/writeDecimalJsLikeList.ts | 24 - .../functions/contentWriters/writeInclude.ts | 53 - .../contentWriters/writeInputJsonValue.ts | 38 - .../contentWriters/writeInputObjectType.ts | 204 - .../writeIsValidDecimalInput.ts | 48 - .../contentWriters/writeJsonValue.ts | 36 - .../contentWriters/writeModelFields.ts | 38 - .../contentWriters/writeModelOrType.ts | 345 - .../contentWriters/writeNullableJsonValue.ts | 29 - .../contentWriters/writeOutputObjectType.ts | 146 - .../contentWriters/writePrismaEnum.ts | 37 - .../functions/contentWriters/writeSelect.ts | 75 - .../contentWriters/writeTransformJsonNull.ts | 22 - generator/src/functions/fieldWriters/index.ts | 12 - .../src/functions/fieldWriters/writeJsDoc.ts | 11 - .../functions/fieldWriters/writeModelBytes.ts | 15 - .../fieldWriters/writeModelCustomValidator.ts | 16 - .../fieldWriters/writeModelDecimal.ts | 28 - .../functions/fieldWriters/writeModelEnum.ts | 15 - .../fieldWriters/writeModelFieldAdditions.ts | 38 - .../functions/fieldWriters/writeModelJson.ts | 13 - .../fieldWriters/writeModelRelation.ts | 32 - .../fieldWriters/writeModelScalar.ts | 36 - .../fieldWriters/writeNonScalarType.ts | 32 - .../functions/fieldWriters/writeScalarType.ts | 152 - .../fieldWriters/writeSpecialType.ts | 101 - generator/src/functions/index.ts | 13 - .../writeTableSchemas.ts | 307 - .../functions/writeMultiFileArgTypeFiles.ts | 80 - .../functions/writeMultiFileInputTypeFiles.ts | 163 - .../src/functions/writeMultiFileModelFiles.ts | 40 - .../writeSingleFileArgTypeStatements.ts | 24 - .../writeSingleFileEnumStatements.ts | 25 - .../writeSingleFileHelperStatements.ts | 50 - .../writeSingleFileImportStatements.ts | 37 - .../writeSingleFileIncludeSelectStatements.ts | 45 - .../writeSingleFileInputTypeStatements.ts | 22 - .../writeSingleFileModelStatements.ts | 22 - .../writeSingleFileTypeStatements.ts | 28 - generator/src/generateMultipleFiles.ts | 26 - generator/src/generateSingleFile.ts | 27 - generator/src/generator.ts | 57 - generator/src/generatorHandler.ts | 28 - .../src/schemas/generatorConfigSchema.ts | 84 - generator/src/schemas/index.ts | 1 - generator/src/types.ts | 177 - generator/src/utils/getAllBoolCombinations.ts | 24 - .../src/utils/getPrismaClientOutputPath.ts | 39 - generator/src/utils/getPrismaDbProvider.ts | 15 - generator/src/utils/getStringVariants.ts | 64 - generator/src/utils/index.ts | 5 - generator/src/utils/schemaParser.ts | 86 - generator/src/utils/skipGenerator.ts | 27 - .../extendedDMMF.prisma | 13 - .../extendedDMMF.test.ts | 31 - .../extendedDMMFField.prisma | 30 - .../extendedDMMFField.test.ts | 461 - .../extendedDMMFModel.prisma | 13 - .../extendedDMMFModel.test.ts | 23 - .../cases/testValidators/custom.prisma | 13 - .../cases/testValidators/custom.test.ts | 22 - .../classes/cases/testValidators/date.prisma | 22 - .../classes/cases/testValidators/date.test.ts | 59 - .../cases/testValidators/number.prisma | 41 - .../cases/testValidators/number.test.ts | 172 - .../cases/testValidators/string.prisma | 44 - .../cases/testValidators/string.test.ts | 193 - .../validatorErrors/invalidCustomError.prisma | 13 - .../invalidCustomError.test.ts | 13 - .../validatorErrors/invalidPrismaType.prisma | 14 - .../validatorErrors/invalidPrismaType.test.ts | 13 - .../cases/validatorErrors/invalidType.prisma | 14 - .../cases/validatorErrors/invalidType.test.ts | 11 - .../validatorErrors/invalidValidator.prisma | 14 - .../validatorErrors/invalidValidator.test.ts | 13 - .../invalidValidatorKey.prisma | 14 - .../invalidValidatorKey.test.ts | 13 - .../invalidValidatorText.prisma | 14 - .../invalidValidatorText.test.ts | 13 - .../extendedDMMFField.test.ts | 1590 -- ...endedDMMFFieldArrayValidatorString.test.ts | 156 - .../extendedDMMFFieldBase.test.ts | 46 - ...ndedDMMFFieldCustomValidatorString.test.ts | 40 - ...extendedDMMFFieldDefaultValidators.test.ts | 42 - .../extendedDMMFFieldOmitField.test.ts | 122 - ...ndedDMMFFieldValidatorCustomErrors.test.ts | 44 - .../extendedDMMFFieldValidatorMap.test.ts | 931 -- .../extendedDMMFFieldValidatorMatch.test.ts | 88 - .../extendedDMMFFieldValidatorPattern.test.ts | 77 - .../extendedDMMFFieldValidatorString.test.ts | 44 - .../extendedDMMFFieldValidatorType.test.ts | 66 - .../extendedDMMFFieldZodType.test.ts | 44 - .../test/classes/extendedDMMFField/setup.ts | 43 - generator/test/constants/regex.test.ts | 152 - generator/test/functions/withRelations.prisma | 19 - .../test/functions/withoutRelations.prisma | 12 - .../writeSingleFileImportStatements.test.ts | 42 - generator/test/testUtils/fileWriter.ts | 21 - generator/test/testUtils/index.ts | 2 - generator/test/testUtils/loadDMMF.ts | 23 - .../test/utils/getAllBoolCombinations.test.ts | 54 - .../test/utils/getStringVariants.test.ts | 35 - generator/tsconfig.json | 40 - generator/vite.config.ts | 10 - pnpm-lock.yaml | 3259 +--- pnpm-workspace.yaml | 1 - 235 files changed, 1323 insertions(+), 66612 deletions(-) delete mode 100644 .github/workflows/generator_tests.yml delete mode 100644 clients/typescript/src/client/input/createInput.ts delete mode 100644 clients/typescript/src/client/input/deleteInput.ts delete mode 100644 clients/typescript/src/client/input/findInput.ts delete mode 100644 clients/typescript/src/client/input/inputNarrowing.ts delete mode 100644 clients/typescript/src/client/input/updateInput.ts delete mode 100644 clients/typescript/src/client/input/upsertInput.ts delete mode 100644 clients/typescript/src/client/output/batchPayload.ts delete mode 100644 clients/typescript/src/client/util/continuationHelpers.ts delete mode 100644 clients/typescript/src/client/util/hkt.ts delete mode 100644 clients/typescript/src/client/util/types.ts delete mode 100644 clients/typescript/src/client/validation/errors/messages.ts delete mode 100644 clients/typescript/test/client/conversions/input.test.ts delete mode 100644 clients/typescript/test/client/generated/prismaClient.d.ts delete mode 100644 clients/typescript/test/client/model/builder.ts delete mode 100644 clients/typescript/test/client/model/pglite/builder.test.ts delete mode 100644 clients/typescript/test/client/model/postgres/builder.test.ts delete mode 100644 clients/typescript/test/client/model/sqlite/builder.test.ts create mode 100644 clients/typescript/test/client/util/functions.test.ts delete mode 100644 components/cli/src/client/generateTestClient.ts delete mode 100644 components/cli/test/migrations/migrate.generation.test.ts delete mode 100644 e2e/satellite_client/src/generated/client/prismaClient.d.ts delete mode 100644 e2e/satellite_client/src/prisma/schema.prisma delete mode 100644 generator/.eslintrc.json delete mode 100644 generator/.gitignore delete mode 100644 generator/.npmignore delete mode 100644 generator/.prettierignore delete mode 100644 generator/.prettierrc.json delete mode 100644 generator/CHANGELOG.md delete mode 100644 generator/Makefile delete mode 100644 generator/README.md delete mode 100755 generator/bin.js delete mode 100644 generator/package.json delete mode 100644 generator/src/bin.ts delete mode 100644 generator/src/classes/directoryHelper.ts delete mode 100644 generator/src/classes/extendedDMMF.ts delete mode 100644 generator/src/classes/extendedDMMFDatamodel.ts delete mode 100644 generator/src/classes/extendedDMMFEnum.ts delete mode 100644 generator/src/classes/extendedDMMFField/extendedDMMFField.ts delete mode 100644 generator/src/classes/extendedDMMFField/extendedDMMFFieldArrayValidatorString.ts delete mode 100644 generator/src/classes/extendedDMMFField/extendedDMMFFieldBase.ts delete mode 100644 generator/src/classes/extendedDMMFField/extendedDMMFFieldCustomValidatorString.ts delete mode 100644 generator/src/classes/extendedDMMFField/extendedDMMFFieldDefaultValidators.ts delete mode 100644 generator/src/classes/extendedDMMFField/extendedDMMFFieldOmitField.ts delete mode 100644 generator/src/classes/extendedDMMFField/extendedDMMFFieldValidatorCustomErrors.ts delete mode 100644 generator/src/classes/extendedDMMFField/extendedDMMFFieldValidatorMap.ts delete mode 100644 generator/src/classes/extendedDMMFField/extendedDMMFFieldValidatorMatch.ts delete mode 100644 generator/src/classes/extendedDMMFField/extendedDMMFFieldValidatorPattern.ts delete mode 100644 generator/src/classes/extendedDMMFField/extendedDMMFFieldValidatorString.ts delete mode 100644 generator/src/classes/extendedDMMFField/extendedDMMFFieldValidatorType.ts delete mode 100644 generator/src/classes/extendedDMMFField/extendedDMMFFieldZodType.ts delete mode 100644 generator/src/classes/extendedDMMFField/index.ts delete mode 100644 generator/src/classes/extendedDMMFInputType.ts delete mode 100644 generator/src/classes/extendedDMMFMappings.ts delete mode 100644 generator/src/classes/extendedDMMFModel.ts delete mode 100644 generator/src/classes/extendedDMMFOutputType.ts delete mode 100644 generator/src/classes/extendedDMMFSchema.ts delete mode 100644 generator/src/classes/extendedDMMFSchemaArg.ts delete mode 100644 generator/src/classes/extendedDMMFSchemaArgInputType.ts delete mode 100644 generator/src/classes/extendedDMMFSchemaEnum.ts delete mode 100644 generator/src/classes/extendedDMMFSchemaField.ts delete mode 100644 generator/src/classes/fileWriter.ts delete mode 100644 generator/src/classes/formattedNames.ts delete mode 100644 generator/src/classes/index.ts delete mode 100644 generator/src/constants/index.ts delete mode 100644 generator/src/constants/objectMaps.ts delete mode 100644 generator/src/constants/regex.ts delete mode 100644 generator/src/functions/contentWriters/index.ts delete mode 100644 generator/src/functions/contentWriters/writeArgs.ts delete mode 100644 generator/src/functions/contentWriters/writeCountArgs.ts delete mode 100644 generator/src/functions/contentWriters/writeCountSelect.ts delete mode 100644 generator/src/functions/contentWriters/writeCustomEnum.ts delete mode 100644 generator/src/functions/contentWriters/writeDecimalJsLike.ts delete mode 100644 generator/src/functions/contentWriters/writeDecimalJsLikeList.ts delete mode 100644 generator/src/functions/contentWriters/writeInclude.ts delete mode 100644 generator/src/functions/contentWriters/writeInputJsonValue.ts delete mode 100644 generator/src/functions/contentWriters/writeInputObjectType.ts delete mode 100644 generator/src/functions/contentWriters/writeIsValidDecimalInput.ts delete mode 100644 generator/src/functions/contentWriters/writeJsonValue.ts delete mode 100644 generator/src/functions/contentWriters/writeModelFields.ts delete mode 100644 generator/src/functions/contentWriters/writeModelOrType.ts delete mode 100644 generator/src/functions/contentWriters/writeNullableJsonValue.ts delete mode 100644 generator/src/functions/contentWriters/writeOutputObjectType.ts delete mode 100644 generator/src/functions/contentWriters/writePrismaEnum.ts delete mode 100644 generator/src/functions/contentWriters/writeSelect.ts delete mode 100644 generator/src/functions/contentWriters/writeTransformJsonNull.ts delete mode 100644 generator/src/functions/fieldWriters/index.ts delete mode 100644 generator/src/functions/fieldWriters/writeJsDoc.ts delete mode 100644 generator/src/functions/fieldWriters/writeModelBytes.ts delete mode 100644 generator/src/functions/fieldWriters/writeModelCustomValidator.ts delete mode 100644 generator/src/functions/fieldWriters/writeModelDecimal.ts delete mode 100644 generator/src/functions/fieldWriters/writeModelEnum.ts delete mode 100644 generator/src/functions/fieldWriters/writeModelFieldAdditions.ts delete mode 100644 generator/src/functions/fieldWriters/writeModelJson.ts delete mode 100644 generator/src/functions/fieldWriters/writeModelRelation.ts delete mode 100644 generator/src/functions/fieldWriters/writeModelScalar.ts delete mode 100644 generator/src/functions/fieldWriters/writeNonScalarType.ts delete mode 100644 generator/src/functions/fieldWriters/writeScalarType.ts delete mode 100644 generator/src/functions/fieldWriters/writeSpecialType.ts delete mode 100644 generator/src/functions/index.ts delete mode 100644 generator/src/functions/tableDescriptionWriters/writeTableSchemas.ts delete mode 100644 generator/src/functions/writeMultiFileArgTypeFiles.ts delete mode 100644 generator/src/functions/writeMultiFileInputTypeFiles.ts delete mode 100644 generator/src/functions/writeMultiFileModelFiles.ts delete mode 100644 generator/src/functions/writeSingleFileArgTypeStatements.ts delete mode 100644 generator/src/functions/writeSingleFileEnumStatements.ts delete mode 100644 generator/src/functions/writeSingleFileHelperStatements.ts delete mode 100644 generator/src/functions/writeSingleFileImportStatements.ts delete mode 100644 generator/src/functions/writeSingleFileIncludeSelectStatements.ts delete mode 100644 generator/src/functions/writeSingleFileInputTypeStatements.ts delete mode 100644 generator/src/functions/writeSingleFileModelStatements.ts delete mode 100644 generator/src/functions/writeSingleFileTypeStatements.ts delete mode 100644 generator/src/generateMultipleFiles.ts delete mode 100644 generator/src/generateSingleFile.ts delete mode 100644 generator/src/generator.ts delete mode 100644 generator/src/generatorHandler.ts delete mode 100644 generator/src/schemas/generatorConfigSchema.ts delete mode 100644 generator/src/schemas/index.ts delete mode 100644 generator/src/types.ts delete mode 100644 generator/src/utils/getAllBoolCombinations.ts delete mode 100644 generator/src/utils/getPrismaClientOutputPath.ts delete mode 100644 generator/src/utils/getPrismaDbProvider.ts delete mode 100644 generator/src/utils/getStringVariants.ts delete mode 100644 generator/src/utils/index.ts delete mode 100644 generator/src/utils/schemaParser.ts delete mode 100644 generator/src/utils/skipGenerator.ts delete mode 100644 generator/test/classes/cases/testCustomClassProperties/extendedDMMF.prisma delete mode 100644 generator/test/classes/cases/testCustomClassProperties/extendedDMMF.test.ts delete mode 100644 generator/test/classes/cases/testCustomClassProperties/extendedDMMFField.prisma delete mode 100644 generator/test/classes/cases/testCustomClassProperties/extendedDMMFField.test.ts delete mode 100644 generator/test/classes/cases/testCustomClassProperties/extendedDMMFModel.prisma delete mode 100644 generator/test/classes/cases/testCustomClassProperties/extendedDMMFModel.test.ts delete mode 100644 generator/test/classes/cases/testValidators/custom.prisma delete mode 100644 generator/test/classes/cases/testValidators/custom.test.ts delete mode 100644 generator/test/classes/cases/testValidators/date.prisma delete mode 100644 generator/test/classes/cases/testValidators/date.test.ts delete mode 100644 generator/test/classes/cases/testValidators/number.prisma delete mode 100644 generator/test/classes/cases/testValidators/number.test.ts delete mode 100644 generator/test/classes/cases/testValidators/string.prisma delete mode 100644 generator/test/classes/cases/testValidators/string.test.ts delete mode 100644 generator/test/classes/cases/validatorErrors/invalidCustomError.prisma delete mode 100644 generator/test/classes/cases/validatorErrors/invalidCustomError.test.ts delete mode 100644 generator/test/classes/cases/validatorErrors/invalidPrismaType.prisma delete mode 100644 generator/test/classes/cases/validatorErrors/invalidPrismaType.test.ts delete mode 100644 generator/test/classes/cases/validatorErrors/invalidType.prisma delete mode 100644 generator/test/classes/cases/validatorErrors/invalidType.test.ts delete mode 100644 generator/test/classes/cases/validatorErrors/invalidValidator.prisma delete mode 100644 generator/test/classes/cases/validatorErrors/invalidValidator.test.ts delete mode 100644 generator/test/classes/cases/validatorErrors/invalidValidatorKey.prisma delete mode 100644 generator/test/classes/cases/validatorErrors/invalidValidatorKey.test.ts delete mode 100644 generator/test/classes/cases/validatorErrors/invalidValidatorText.prisma delete mode 100644 generator/test/classes/cases/validatorErrors/invalidValidatorText.test.ts delete mode 100644 generator/test/classes/extendedDMMFField/extendedDMMFField.test.ts delete mode 100644 generator/test/classes/extendedDMMFField/extendedDMMFFieldArrayValidatorString.test.ts delete mode 100644 generator/test/classes/extendedDMMFField/extendedDMMFFieldBase.test.ts delete mode 100644 generator/test/classes/extendedDMMFField/extendedDMMFFieldCustomValidatorString.test.ts delete mode 100644 generator/test/classes/extendedDMMFField/extendedDMMFFieldDefaultValidators.test.ts delete mode 100644 generator/test/classes/extendedDMMFField/extendedDMMFFieldOmitField.test.ts delete mode 100644 generator/test/classes/extendedDMMFField/extendedDMMFFieldValidatorCustomErrors.test.ts delete mode 100644 generator/test/classes/extendedDMMFField/extendedDMMFFieldValidatorMap.test.ts delete mode 100644 generator/test/classes/extendedDMMFField/extendedDMMFFieldValidatorMatch.test.ts delete mode 100644 generator/test/classes/extendedDMMFField/extendedDMMFFieldValidatorPattern.test.ts delete mode 100644 generator/test/classes/extendedDMMFField/extendedDMMFFieldValidatorString.test.ts delete mode 100644 generator/test/classes/extendedDMMFField/extendedDMMFFieldValidatorType.test.ts delete mode 100644 generator/test/classes/extendedDMMFField/extendedDMMFFieldZodType.test.ts delete mode 100644 generator/test/classes/extendedDMMFField/setup.ts delete mode 100644 generator/test/constants/regex.test.ts delete mode 100644 generator/test/functions/withRelations.prisma delete mode 100644 generator/test/functions/withoutRelations.prisma delete mode 100644 generator/test/functions/writeSingleFileImportStatements.test.ts delete mode 100644 generator/test/testUtils/fileWriter.ts delete mode 100644 generator/test/testUtils/index.ts delete mode 100644 generator/test/testUtils/loadDMMF.ts delete mode 100644 generator/test/utils/getAllBoolCombinations.test.ts delete mode 100644 generator/test/utils/getStringVariants.test.ts delete mode 100644 generator/tsconfig.json delete mode 100644 generator/vite.config.ts diff --git a/.github/workflows/clients_typescript_tests.yml b/.github/workflows/clients_typescript_tests.yml index 1134ccb566..1cea9ee19f 100644 --- a/.github/workflows/clients_typescript_tests.yml +++ b/.github/workflows/clients_typescript_tests.yml @@ -63,8 +63,6 @@ jobs: with: node-version: ${{ matrix.node-version }} cache: pnpm - - name: Build Generator - run: make build_generator - name: Install run: make deps - name: Build diff --git a/.github/workflows/generator_tests.yml b/.github/workflows/generator_tests.yml deleted file mode 100644 index 5a127a9553..0000000000 --- a/.github/workflows/generator_tests.yml +++ /dev/null @@ -1,63 +0,0 @@ -name: Generator / Tests - -on: - push: - branches: - - main - pull_request: - paths: - - "pnpm-lock.yaml" - - "generator/**" - -defaults: - run: - working-directory: generator - -jobs: - verify_formatting: - name: Check formatting & linting - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: pnpm/action-setup@v4 - with: - version: 9 - - uses: actions/setup-node@v4 - with: - node-version: 22 - cache: pnpm - - run: make deps - - run: pnpm run check-styleguide - check_types: - name: Check types - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: pnpm/action-setup@v4 - with: - version: 9 - - uses: actions/setup-node@v4 - with: - node-version: 22 - cache: pnpm - - run: make deps - - run: pnpm run build - test: - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - node-version: [18, 20, 22] - steps: - - uses: actions/checkout@v4 - - uses: pnpm/action-setup@v4 - with: - version: 9 - - uses: actions/setup-node@v4 - with: - node-version: ${{ matrix.node-version }} - cache: pnpm - - name: Install - run: make deps - - name: Run tests - run: make tests diff --git a/clients/typescript/package.json b/clients/typescript/package.json index 9a54410ef7..3d2c20b0b5 100644 --- a/clients/typescript/package.json +++ b/clients/typescript/package.json @@ -199,7 +199,7 @@ "long": "^5.2.0", "object.hasown": "^1.1.2", "ohash": "^1.1.2", - "prisma": "4.8.1", + "prompts": "^2.4.2", "protobufjs": "^7.1.1", "squel": "^5.13.0", "text-encoder-lite": "^2.0.0", @@ -252,7 +252,6 @@ "vue-tsc": "^1.8.27" }, "peerDependencies": { - "prisma": "4.8.1", "react": ">= 16.8.0", "react-dom": ">= 16.8.0", "react-native": ">= 0.68.0", @@ -264,9 +263,6 @@ "expo-sqlite": { "optional": true }, - "prisma": { - "optional": true - }, "react": { "optional": true }, diff --git a/clients/typescript/src/client/conversions/converter.ts b/clients/typescript/src/client/conversions/converter.ts index ea763750ff..a5ad34368b 100644 --- a/clients/typescript/src/client/conversions/converter.ts +++ b/clients/typescript/src/client/conversions/converter.ts @@ -1,3 +1,5 @@ +import { Row } from '../../util' +import { TableSchema } from '../model' import { PgType } from './types' export interface Converter { @@ -7,12 +9,48 @@ export interface Converter { * @param pgType The Postgres type of the column in which to store the value. */ encode(v: any, pgType: PgType): any + /** + * Encodes the provided row for storing in the database. + * @param row The row to encode + * @param tableSchema The schema of the table for this row. + */ + encodeRow( + row: Record, + tableSchema: Pick + ): Row + /** + * Encodes the provided rows for storing in the database. + * @param rows The rows to encode + * @param tableSchema The schema of the table for these rows. + */ + encodeRows( + rows: Array>, + tableSchema: Pick + ): Array /** * Decodes the provided value from the database. * @param v The value to decode. * @param pgType The Postgres type of the column from which to decode the value. */ decode(v: any, pgType: PgType): any + /** + * Decodes the provided row from the database. + * @param row The row to decode + * @param tableSchema The schema of the table for this row. + */ + decodeRow = Record>( + row: Record, + tableSchema: Pick + ): T + /** + * Decodes the provided rows from the database. + * @param rows The rows to decode + * @param tableSchema The schema of the table for these rows. + */ + decodeRows = Record>( + rows: Array>, + tableSchema: Pick + ): Array } /** @@ -26,3 +64,30 @@ export interface Converter { export function isDataObject(v: unknown): boolean { return v instanceof Date || typeof v === 'bigint' || ArrayBuffer.isView(v) } + +export function mapRow = Record>( + row: Record, + tableSchema: Pick, + f: (v: any, pgType: PgType) => any +): T { + const mappedRow = {} as T + + for (const [key, value] of Object.entries(row)) { + const pgType = tableSchema.fields[key] + const mappedValue = + pgType === undefined + ? value // it's an unknown column, leave it as is + : f(value, pgType) + mappedRow[key as keyof T] = mappedValue + } + + return mappedRow +} + +export function mapRows = Record>( + rows: Array>, + tableSchema: Pick, + f: (v: any, pgType: PgType) => any +): T[] { + return rows.map((row) => mapRow(row, tableSchema, f)) +} diff --git a/clients/typescript/src/client/conversions/index.ts b/clients/typescript/src/client/conversions/index.ts index a5bdfa14dc..de95ad9b79 100644 --- a/clients/typescript/src/client/conversions/index.ts +++ b/clients/typescript/src/client/conversions/index.ts @@ -1,3 +1,4 @@ -export { postgresConverter } from './postgres' +export type { Converter } from './converter' export { sqliteConverter } from './sqlite' +export { postgresConverter } from './postgres' export { PgBasicType } from './types' diff --git a/clients/typescript/src/client/conversions/input.ts b/clients/typescript/src/client/conversions/input.ts index dcd5f5dae3..d2ff45c5b1 100644 --- a/clients/typescript/src/client/conversions/input.ts +++ b/clients/typescript/src/client/conversions/input.ts @@ -1,9 +1,5 @@ -import mapValues from 'lodash.mapvalues' -import { FieldName, Fields } from '../model/schema' +import { Fields } from '../model/schema' import { Converter, isDataObject } from './converter' -import { InvalidArgumentError } from '../validation/errors/invalidArgumentError' -import { mapObject } from '../util/functions' -import { PgType } from './types' import { isObject } from '../../util' export enum Transformation { @@ -11,311 +7,6 @@ export enum Transformation { Decode, // decode values from SQLite/Postgres to JS } -type UpdateInput = { data: object; where: object } -type UpdateManyInput = { data: object; where?: object } -type CreateInput = { data: object } -type CreateManyInput = { data: Array } -type WhereUniqueInput = { where: object } -type WhereInput = { where?: object } - -type Swap = Omit & - Pick - -export class InputTransformer { - constructor(public converter: Converter) {} - - /** - * Takes the data input of a `create` operation and - * converts the JS values to their corresponding SQLite/PG values. - * e.g. JS `Date` objects are converted into strings. - * @param i The validated input of the `create` operation. - * @param fields The table's fields. - * @returns The transformed input. - */ - transformCreate( - i: T, - fields: Fields - ): Swap { - return { - ...i, - data: transformFields(i.data, fields, this.converter), - } - } - - /** - * Takes the data input of a `createMany` operation and - * converts the JS values to their corresponding SQLite/PG values. - * e.g. JS `Date` objects are converted into strings. - * @param i The validated input of the `createMany` operation. - * @param fields The table's fields. - * @returns The transformed input. - */ - transformCreateMany( - i: T, - fields: Fields - ): Swap { - return { - ...i, - data: i.data.map((o) => transformFields(o, fields, this.converter)), - } - } - - /** - * Takes the data input of an `update` operation and - * converts the JS values to their corresponding SQLite/PG values. - * e.g. JS `Date` objects are converted into strings. - * @param i The validated input of the `update` operation. - * @param fields The table's fields. - * @returns The transformed input. - */ - transformUpdate( - i: T, - fields: Fields - ): Swap { - return { - ...i, - data: transformFields(i.data, fields, this.converter), - where: this.transformWhere(i.where, fields), - } - } - - /** - * Takes the data input of an `updateMany` operation and - * converts the JS values to their corresponding SQLite/PG values. - * @param i The validated input of the `updateMany` operation. - * @param fields The table's fields. - * @returns The transformed input. - */ - transformUpdateMany( - i: T, - fields: Fields - ): UpdateManyInput { - const whereObj = this.transformWhereInput(i, fields) - return { - ...whereObj, - data: transformFields(i.data, fields, this.converter), - } - } - - /** - * Takes the data input of a `delete` operation and - * converts the JS values to their corresponding SQLite/PG values. - */ - transformDelete = this.transformWhereUniqueInput - - /** - * Takes the data input of a `deleteMany` operation and - * converts the JS values to their corresponding SQLite/PG values. - * @param i The validated input of the `deleteMany` operation. - * @param fields The table's fields. - * @returns The transformed input. - */ - transformDeleteMany = this.transformWhereInput - - /** - * Takes the data input of a `findUnique` operation and - * converts the JS values to their corresponding SQLite/PG values. - */ - transformFindUnique = this.transformWhereUniqueInput - - /** - * Takes the data input of a `findFirst` or `findMany` operation and - * converts the JS values to their corresponding SQLite/PG values. - */ - transformFindNonUnique = this.transformWhereInput - - /** - * Takes the data input of an operation containing a required `where` clause and - * converts the JS values of the `where` clause to their corresponding SQLite/PG values. - * @param i The validated input of the `where` clause. - * @param fields The table's fields. - * @returns The transformed input. - */ - transformWhereUniqueInput( - i: T, - fields: Fields - ): Swap { - return { - ...i, - where: this.transformWhere(i.where, fields), - } - } - - /** - * Takes the data input of an operation containing an optional `where` clause and - * converts the JS values of the `where` clause to their corresponding SQLite/PG values. - * @param i The validated input of the `where` clause. - * @param fields The table's fields. - * @returns The transformed input. - */ - transformWhereInput( - i: T, - fields: Fields - ): Swap { - const whereObj = i.where - ? { where: this.transformWhere(i.where, fields) } - : {} - return { - ...i, - ...whereObj, - } - } - - transformWhere(o: object, fields: Fields): object { - const transformedFields = this.transformWhereFields(o, fields) - const transformedBooleanConnectors = this.transformBooleanConnectors( - o, - fields - ) - return { - ...o, - ...transformedFields, - ...transformedBooleanConnectors, - } - } - - transformBooleanConnectors( - o: { - AND?: object | object[] - OR?: object | object[] - NOT?: object | object[] - }, - fields: Fields - ): object { - // Within a `where` object, boolean connectors AND/OR/NOT will contain - // a nested `where` object or an array of nested `where` objects - // if it is a single `where` object we wrap it in an array - // and we map `transformWhere` to recursively handle all nested objects - const makeArray = (v: any) => (Array.isArray(v) ? v : [v]) - const andObj = o.AND - ? { AND: makeArray(o.AND).map((x) => this.transformWhere(x, fields)) } - : {} - const orObj = o.OR - ? { OR: makeArray(o.OR).map((x) => this.transformWhere(x, fields)) } - : {} - const notObj = o.NOT - ? { NOT: makeArray(o.NOT).map((x) => this.transformWhere(x, fields)) } - : {} - - // we use spread syntax such that the filter is not included if it is undefined - // we cannot set it to undefined because then it appears in `hasOwnProperty` - // and the query builder will try to write `undefined` to the database. - return { - ...andObj, - ...orObj, - ...notObj, - } - } - - /** - * Iterates over the properties of a `where` object - * in order to transform the values to SQLite/PG compatible values - * based on additional type information about the fields. - * @param o The `where` object to transform. - * @param fields Type information about the fields. - * @returns A `where` object with the values converted to SQLite/PG. - */ - transformWhereFields(o: object, fields: Fields): object { - // only transform fields that are part of this table and not related fields - // as those will be transformed later when the query on the related field is processed. - const objWithoutRelatedFields = keepTableFieldsOnly(o, fields) - const transformedObj = mapObject( - objWithoutRelatedFields, - (field, value) => { - // each field can be the value itself or an object containing filters like `lt`, `gt`, etc. - return this.transformFieldsAllowingFilters(field, value, fields) - } - ) - - return { - ...o, - ...transformedObj, - } - } - - /** - * Transforms a value that may contain filters. - * e.g. `where` clauses of a query allow to pass a value directly or an object containing filters. - * If it is an object of filters, we need to transform the values that are nested in those filters. - * @param field The name of the field we are transforming. - * @param value The value for that field. - * @param fields Type information about the fields of this table. - * @returns The transformed value. - */ - transformFieldsAllowingFilters( - field: FieldName, - value: any, - fields: Fields - ): any { - const pgType = fields[field] - - if (!pgType) throw new InvalidArgumentError(`Unknown field ${field}`) - - if (isFilterObject(value)) { - // transform the values that are nested in those filters - return this.transformFilterObject(field, value, pgType, fields) - } - - return this.converter.encode(value, pgType) - } - - /** - * Transforms an object containing filters - * @example For example: - * ``` - * { - * lt: Date('2023-09-12'), - * notIn: [ Date('2023-09-09'), Date('2023-09-01') ], - * not: { - * lt: Date('2022-09-01') - * } - * } - * ``` - * @param field The name of the field we are transforming. - * @param o The object containing the filters. - * @param pgType Type of this field. - * @param fields Type information about the fields of this table. - * @returns A transformed filter object. - */ - transformFilterObject( - field: FieldName, - o: any, - pgType: PgType, - fields: Fields - ) { - const simpleFilters = new Set(['equals', 'lt', 'lte', 'gt', 'gte']) // filters whose value is an optional value of type `pgType` - const arrayFilters = new Set(['in', 'notIn']) // filters whose value is an optional array of values of type `pgType` - - // Handle the simple filters - const simpleFilterObj = filterKeys(o, simpleFilters) - const transformedSimpleFilterObj = mapValues(simpleFilterObj, (v: any) => - this.converter.encode(v, pgType) - ) - - // Handle the array filters - const arrayFilterObj = filterKeys(o, arrayFilters) - const transformedArrayFilterObj = mapValues(arrayFilterObj, (arr) => - arr.map((v: any) => this.converter.encode(v, pgType)) - ) - - // Handle `not` filter - // `not` is a special one as it accepts a value or a nested object of filters - // hence it is just like the properties of a `where` object which accept values or filters - const notFilterObj = filterKeys(o, new Set(['not'])) - const transformedNotFilterObj = mapValues(notFilterObj, (v) => { - // each field can be the value itself or an object containing filters like `lt`, `gt`, etc. - return this.transformFieldsAllowingFilters(field, v, fields) - }) - - return { - ...o, - ...transformedSimpleFilterObj, - ...transformedArrayFilterObj, - ...transformedNotFilterObj, - } - } -} - /** * Iterates over the properties of the object `o` * in order to transform their values to SQLite/PG compatible values @@ -354,29 +45,3 @@ export function isFilterObject(value: any): boolean { // if it is an object it can only be a data object or a filter object return isObject(value) && !isDataObject(value) } - -/** - * Filters out all properties that are not fields (i.e. columns) of this table. - * e.g. it removes related fields or filters like `lt`, `equals`, etc. - * @param o The object to filter. - * @param fields The fields of the table to which this object belongs. - * @returns A filtered object. - */ -function keepTableFieldsOnly(o: object, fields: Fields) { - return filterKeys(o, { - ...fields, - has: (x) => Object.hasOwn(fields, x), - }) -} - -/** - * Filters the object to retain only keys that are in `keys`. - * @param o The object to filter. - * @param keys Object that allows checking if a key is present. - * @returns A filtered object. - */ -function filterKeys(o: object, keys: { has: (x: string) => boolean }) { - return Object.fromEntries( - Object.entries(o).filter((entry) => keys.has(entry[0])) - ) -} diff --git a/clients/typescript/src/client/conversions/postgres.ts b/clients/typescript/src/client/conversions/postgres.ts index 1048c8a216..b5e6626a6e 100644 --- a/clients/typescript/src/client/conversions/postgres.ts +++ b/clients/typescript/src/client/conversions/postgres.ts @@ -1,8 +1,9 @@ import { InvalidArgumentError } from '../validation/errors/invalidArgumentError' -import { Converter } from './converter' +import { Converter, mapRow, mapRows } from './converter' import { deserialiseDate, serialiseDate } from './datatypes/date' import { isJsonNull } from './datatypes/json' import { PgBasicType, PgDateType, PgType } from './types' +import { TableSchema } from '../model/schema' /** * This module takes care of converting TypeScript values to a Postgres storeable value and back. @@ -11,7 +12,7 @@ import { PgBasicType, PgDateType, PgType } from './types' * Currently, no conversions are needed for the data types we support. */ -function toPostgres(v: any, pgType: PgType): any { +export function toPostgres(v: any, pgType: PgType): any { if (v === null) { // don't transform null values return v @@ -52,7 +53,7 @@ function toPostgres(v: any, pgType: PgType): any { } } -function fromPostgres(v: any, pgType: PgType): any { +export function fromPostgres(v: any, pgType: PgType): any { if (v === null) { // don't transform null values return v @@ -97,5 +98,21 @@ function fromPostgres(v: any, pgType: PgType): any { export const postgresConverter: Converter = { encode: toPostgres, + encodeRow: = Record>( + row: Record, + tableSchema: TableSchema + ) => mapRow(row, tableSchema, toPostgres), + encodeRows: = Record>( + rows: Array>, + tableSchema: TableSchema + ) => mapRows(rows, tableSchema, toPostgres), decode: fromPostgres, + decodeRow: = Record>( + row: Record, + tableSchema: TableSchema + ) => mapRow(row, tableSchema, fromPostgres), + decodeRows: = Record>( + rows: Array>, + tableSchema: TableSchema + ) => mapRows(rows, tableSchema, fromPostgres), } diff --git a/clients/typescript/src/client/conversions/sqlite.ts b/clients/typescript/src/client/conversions/sqlite.ts index 3dcc06293f..942a32fb90 100644 --- a/clients/typescript/src/client/conversions/sqlite.ts +++ b/clients/typescript/src/client/conversions/sqlite.ts @@ -1,10 +1,11 @@ import { InvalidArgumentError } from '../validation/errors/invalidArgumentError' -import { Converter } from './converter' +import { Converter, mapRow, mapRows } from './converter' import { deserialiseBoolean, serialiseBoolean } from './datatypes/boolean' import { deserialiseBlob, serialiseBlob } from './datatypes/blob' import { deserialiseDate, serialiseDate } from './datatypes/date' import { deserialiseJSON, serialiseJSON } from './datatypes/json' import { PgBasicType, PgDateType, PgType, isPgDateType } from './types' +import { TableSchema } from '../model/schema' /** * This module takes care of converting TypeScript values for Postgres-specific types to a SQLite storeable value and back. @@ -14,7 +15,7 @@ import { PgBasicType, PgDateType, PgType, isPgDateType } from './types' * When reading from the SQLite database, the string can be parsed back into a `Date` object. */ -function toSqlite(v: any, pgType: PgType): any { +export function toSqlite(v: any, pgType: PgType): any { if (v === null) { // don't transform null values return v @@ -49,7 +50,7 @@ function toSqlite(v: any, pgType: PgType): any { } } -function fromSqlite(v: any, pgType: PgType): any { +export function fromSqlite(v: any, pgType: PgType): any { if (v === null) { // don't transform null values return v @@ -93,5 +94,21 @@ function fromSqlite(v: any, pgType: PgType): any { export const sqliteConverter: Converter = { encode: toSqlite, + encodeRow: = Record>( + row: Record, + tableSchema: TableSchema + ) => mapRow(row, tableSchema, toSqlite), + encodeRows: = Record>( + rows: Array>, + tableSchema: TableSchema + ) => mapRows(rows, tableSchema, toSqlite), decode: fromSqlite, + decodeRow: = Record>( + row: Record, + tableSchema: TableSchema + ) => mapRow(row, tableSchema, fromSqlite), + decodeRows: = Record>( + rows: Array>, + tableSchema: TableSchema + ) => mapRows(rows, tableSchema, fromSqlite), } diff --git a/clients/typescript/src/client/execution/nonTransactionalDB.ts b/clients/typescript/src/client/execution/nonTransactionalDB.ts index c94df8eaa7..2ace959703 100644 --- a/clients/typescript/src/client/execution/nonTransactionalDB.ts +++ b/clients/typescript/src/client/execution/nonTransactionalDB.ts @@ -3,7 +3,6 @@ import { QueryBuilder } from 'squel' import { DB } from './db' import * as z from 'zod' import { Row, Statement } from '../../util' -import { Transformation, transformFields } from '../conversions/input' import { Fields } from '../model/schema' import { Converter } from '../conversions/converter' @@ -59,12 +58,9 @@ export class NonTransactionalDB implements DB { // convert SQLite/PG values back to JS values // and then parse the transformed object // with the Zod schema to validate it - const transformedRow = transformFields( - row, - this._fields, - this._converter, - Transformation.Decode - ) + const transformedRow = this._converter.decodeRow(row, { + fields: this._fields, + }) return schema.parse(transformedRow) }) successCallback(this, objects) diff --git a/clients/typescript/src/client/execution/transactionalDB.ts b/clients/typescript/src/client/execution/transactionalDB.ts index 95336be29b..47f322f7f6 100644 --- a/clients/typescript/src/client/execution/transactionalDB.ts +++ b/clients/typescript/src/client/execution/transactionalDB.ts @@ -4,7 +4,6 @@ import { DB } from './db' import * as z from 'zod' import { Row, Statement } from '../../util' import { Fields } from '../model/schema' -import { Transformation, transformFields } from '../conversions/input' import { Converter } from '../conversions/converter' export class TransactionalDB implements DB { @@ -52,12 +51,9 @@ export class TransactionalDB implements DB { // convert SQLite/PG values back to JS values // and then parse the transformed object // with the Zod schema to validate it - const transformedRow = transformFields( - row, - this._fields, - this._converter, - Transformation.Decode - ) + const transformedRow = this._converter.decodeRow(row, { + fields: this._fields, + }) return schema.parse(transformedRow) }) successCallback( diff --git a/clients/typescript/src/client/index.ts b/clients/typescript/src/client/index.ts index 0c66b1e1d1..bed1d3774e 100644 --- a/clients/typescript/src/client/index.ts +++ b/clients/typescript/src/client/index.ts @@ -1,3 +1,3 @@ -export type { TableName, AnyTable, AnyTableSchema } from './model' -export { type DbSchema, createDbDescription } from './util/relations' +export type { TableName } from './model' +export { type MinimalDbSchema, createDbDescription } from './util/relations' export * from './conversions' diff --git a/clients/typescript/src/client/input/createInput.ts b/clients/typescript/src/client/input/createInput.ts deleted file mode 100644 index 654bda9d20..0000000000 --- a/clients/typescript/src/client/input/createInput.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { NarrowCreateData, NarrowInclude, NarrowSelect } from './inputNarrowing' - -export interface CreateInput { - data: NarrowCreateData - select?: NarrowSelect - include?: NarrowInclude -} - -export interface DeleteManyInput { - where?: NarrowWhere -} diff --git a/clients/typescript/src/client/input/findInput.ts b/clients/typescript/src/client/input/findInput.ts deleted file mode 100644 index 7c32eaa579..0000000000 --- a/clients/typescript/src/client/input/findInput.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { - NarrowInclude, - NarrowOrderBy, - NarrowSelect, - NarrowWhere, -} from './inputNarrowing' - -export interface FindInput { - where?: NarrowWhere - select?: NarrowSelect - include?: NarrowInclude -} diff --git a/clients/typescript/src/client/input/inputNarrowing.ts b/clients/typescript/src/client/input/inputNarrowing.ts deleted file mode 100644 index aea2bda96c..0000000000 --- a/clients/typescript/src/client/input/inputNarrowing.ts +++ /dev/null @@ -1,102 +0,0 @@ -import { Removed, RemovedType } from '../util/types' - -/* - * This file defines types that are used - * to narrow the Prisma-generated types - * to contain only the features that are supported. - */ - -/** - * Narrows the type of create data to remove unsupported properties. - */ -export type NarrowCreateData = Removed< - T, - | 'connectOrCreate' - | 'createMany' - | 'connect' - | 'upsert' - | 'set' - | 'disconnect' - | 'delete' - | 'update' - | 'updateMany' - | 'deleteMany' -> - -export type NarrowUpdateData = Removed< - T, - | 'create' - | 'connectOrCreate' - | 'createMany' - | 'connect' - | 'upsert' - | 'set' - | 'disconnect' - | 'delete' - | 'deleteMany' -> - -export type NarrowUpsertCreate = Removed< - T, - 'connectOrCreate' | 'createMany' | 'connect' -> - -/** - * Narrows the type of update data to remove unsupported properties. - */ -export type NarrowUpdateManyData = Removed< - T, - 'set' | 'increment' | 'decrement' | 'multiply' | 'divide' -> - -type StripPrimitives = T extends object ? T : never // strips primitives from union types -type OnlyPrimitives = StripPrimitives extends never ? T : never // contains only primitives if nothing is left after stripping all primitives -type StripRelationFields = T extends object // filter out object properties - ? T extends (infer V)[] // if it is an array of type V[] - ? StripRelationFields[] // recursively filter out object properties in the type of the elements V - : { - // otherwise it is an object - // remove properties whose type contains an object, - // e.g. author?: boolean | UserArgs - // is a relation property and UserArgs is an object, - // so we remove such properties - [K in keyof T]: OnlyPrimitives - } - : T - -/** - * Narrow include types to remove the unsupported `_count` and `cursor` properties. - */ -export type NarrowInclude = Removed - -/** - * Narrows select types to remove the unsupported `_count` and `cursor` properties - * but also related fields as we do not yet support selecting related objects. - */ -export type NarrowSelect = NarrowInclude> -// TODO: remove `StripRelationFields` once we support selecting related objects - -/** - * Narrows where types by removing the unsupported relational filters - * and removing Prisma's `QueryMode` because it is used for case-insensitive search - * (cf. https://www.prisma.io/docs/concepts/components/prisma-client/filtering-and-sorting#case-insensitive-filtering) - * but that is not supported at the moment because of differences between SQLite and Postgres. - */ -export type NarrowWhere = RemovedType< - Removed, - 'mode', - 'default' | 'insensitive' | undefined -> - -export type NarrowOrderBy = StripRelationFields - -/** - * Narrows the type of create arguments to remove unsupported properties. - */ -/* -type NarrowCreateArgs> = { - select?: NarrowSelect - include?: NarrowSelect - data: NarrowCreateData -} - */ diff --git a/clients/typescript/src/client/input/updateInput.ts b/clients/typescript/src/client/input/updateInput.ts deleted file mode 100644 index 407c1d9663..0000000000 --- a/clients/typescript/src/client/input/updateInput.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { FindUniqueInput } from './findInput' -import { - NarrowUpdateData, - NarrowUpdateManyData, - NarrowWhere, -} from './inputNarrowing' - -export interface UpdateInput - extends FindUniqueInput { - data: NarrowUpdateManyData> -} - -export interface UpdateManyInput { - data: NarrowUpdateManyData - where?: NarrowWhere -} diff --git a/clients/typescript/src/client/input/upsertInput.ts b/clients/typescript/src/client/input/upsertInput.ts deleted file mode 100644 index 04101551c3..0000000000 --- a/clients/typescript/src/client/input/upsertInput.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { - NarrowInclude, - NarrowSelect, - NarrowUpdateData, - NarrowUpdateManyData, - NarrowUpsertCreate, -} from './inputNarrowing' - -export interface UpsertInput { - select?: NarrowSelect