From 035dc9eb5763f89f5d9464375b377719078f052d Mon Sep 17 00:00:00 2001 From: Juhani Kumara Date: Sun, 19 May 2024 19:14:19 +0300 Subject: [PATCH] feat: export the schemas with ZodObject type in a backwards-compatible manner As suggested by owenr88 in Issue #88 --- src/transformer.ts | 79 +++++++++++++++++++++++++++++++++++----------- 1 file changed, 61 insertions(+), 18 deletions(-) diff --git a/src/transformer.ts b/src/transformer.ts index 07a3aab..891325e 100644 --- a/src/transformer.ts +++ b/src/transformer.ts @@ -73,7 +73,10 @@ export default class Transformer { const { name, values } = enumType; await writeFileSafely( - path.join(Transformer.outputPath, `schemas/enums/${toPascalCase(name)}.schema.ts`), + path.join( + Transformer.outputPath, + `schemas/enums/${toPascalCase(name)}.schema.ts`, + ), `${this.generateImportZodStatement()}\n${this.generateExportSchemaStatement( `${toPascalCase(name)}`, `z.enum(${JSON.stringify(values)})`, @@ -87,7 +90,12 @@ export default class Transformer { } generateExportSchemaStatement(name: string, schema: string) { - return `export const ${toPascalCase(name)}Schema = ${schema}`; + const prefix = toPascalCase(name); + const exportStatements = [ + `export const ${prefix}Schema: z.ZodType = ${schema};`, + `export const ${prefix}ObjectSchema = ${schema};`, + ]; + return exportStatements.join('\n'); } async generateObjectSchema() { @@ -313,7 +321,7 @@ export default class Transformer { const end = `export const ${toPascalCase(exportName)}ObjectSchema = Schema`; return ` // @ts-ignore - const Schema: z.ZodType = ${schema};\n\n ${end}`; + const Schema = ${schema};\n\n ${end}`; } addFinalWrappers({ zodStringFields }: { zodStringFields: string[] }) { @@ -392,7 +400,7 @@ export default class Transformer { checkIsModelQueryType(type: string) { const modelQueryTypeSuffixToQueryName: Record = { FindManyArgs: 'findMany', - }; + }; for (const modelQueryType of ['FindManyArgs']) { if (type.includes(modelQueryType)) { const modelQueryTypeSuffixIndex = type.indexOf(modelQueryType); @@ -485,7 +493,10 @@ export default class Transformer { `import { ${toPascalCase(modelName)}WhereUniqueInputObjectSchema } from './objects/${toPascalCase(modelName)}WhereUniqueInput.schema'`, ]; await writeFileSafely( - path.join(Transformer.outputPath, `schemas/${toPascalCase(findUnique)}.schema.ts`), + path.join( + Transformer.outputPath, + `schemas/${toPascalCase(findUnique)}.schema.ts`, + ), `${this.generateImportStatements( imports, )}${this.generateExportSchemaStatement( @@ -507,7 +518,10 @@ export default class Transformer { `import { ${toPascalCase(modelName)}ScalarFieldEnumSchema } from './enums/${toPascalCase(modelName)}ScalarFieldEnum.schema'`, ]; await writeFileSafely( - path.join(Transformer.outputPath, `schemas/${toPascalCase(findFirst)}.schema.ts`), + path.join( + Transformer.outputPath, + `schemas/${toPascalCase(findFirst)}.schema.ts`, + ), `${this.generateImportStatements( imports, )}${this.generateExportSchemaStatement( @@ -528,7 +542,10 @@ export default class Transformer { ]; await writeFileSafely( - path.join(Transformer.outputPath, `schemas/${toPascalCase(formatFindManyName(findMany))}.schema.ts`), + path.join( + Transformer.outputPath, + `schemas/${toPascalCase(formatFindManyName(findMany))}.schema.ts`, + ), `${this.generateImportStatements( imports, )}${this.generateExportSchemaStatement( @@ -546,7 +563,10 @@ export default class Transformer { `import { ${toPascalCase(modelName)}UncheckedCreateInputObjectSchema } from './objects/${toPascalCase(modelName)}UncheckedCreateInput.schema'`, ]; await writeFileSafely( - path.join(Transformer.outputPath, `schemas/${toPascalCase(createOne)}.schema.ts`), + path.join( + Transformer.outputPath, + `schemas/${toPascalCase(createOne)}.schema.ts`, + ), `${this.generateImportStatements( imports, )}${this.generateExportSchemaStatement( @@ -561,7 +581,10 @@ export default class Transformer { `import { ${toPascalCase(modelName)}CreateManyInputObjectSchema } from './objects/${toPascalCase(modelName)}CreateManyInput.schema'`, ]; await writeFileSafely( - path.join(Transformer.outputPath, `schemas/${toPascalCase(createMany)}.schema.ts`), + path.join( + Transformer.outputPath, + `schemas/${toPascalCase(createMany)}.schema.ts`, + ), `${this.generateImportStatements( imports, )}${this.generateExportSchemaStatement( @@ -583,7 +606,10 @@ export default class Transformer { `import { ${toPascalCase(modelName)}WhereUniqueInputObjectSchema } from './objects/${toPascalCase(modelName)}WhereUniqueInput.schema'`, ]; await writeFileSafely( - path.join(Transformer.outputPath, `schemas/${toPascalCase(deleteOne)}.schema.ts`), + path.join( + Transformer.outputPath, + `schemas/${toPascalCase(deleteOne)}.schema.ts`, + ), `${this.generateImportStatements( imports, )}${this.generateExportSchemaStatement( @@ -598,7 +624,10 @@ export default class Transformer { `import { ${toPascalCase(modelName)}WhereInputObjectSchema } from './objects/${toPascalCase(modelName)}WhereInput.schema'`, ]; await writeFileSafely( - path.join(Transformer.outputPath, `schemas/${toPascalCase(deleteMany)}.schema.ts`), + path.join( + Transformer.outputPath, + `schemas/${toPascalCase(deleteMany)}.schema.ts`, + ), `${this.generateImportStatements( imports, )}${this.generateExportSchemaStatement( @@ -617,7 +646,10 @@ export default class Transformer { `import { ${toPascalCase(modelName)}WhereUniqueInputObjectSchema } from './objects/${toPascalCase(modelName)}WhereUniqueInput.schema'`, ]; await writeFileSafely( - path.join(Transformer.outputPath, `schemas/${toPascalCase(updateOne)}.schema.ts`), + path.join( + Transformer.outputPath, + `schemas/${toPascalCase(updateOne)}.schema.ts`, + ), `${this.generateImportStatements( imports, )}${this.generateExportSchemaStatement( @@ -633,7 +665,10 @@ export default class Transformer { `import { ${toPascalCase(modelName)}WhereInputObjectSchema } from './objects/${toPascalCase(modelName)}WhereInput.schema'`, ]; await writeFileSafely( - path.join(Transformer.outputPath, `schemas/${toPascalCase(updateMany)}.schema.ts`), + path.join( + Transformer.outputPath, + `schemas/${toPascalCase(updateMany)}.schema.ts`, + ), `${this.generateImportStatements( imports, )}${this.generateExportSchemaStatement( @@ -654,7 +689,10 @@ export default class Transformer { `import { ${toPascalCase(modelName)}UncheckedUpdateInputObjectSchema } from './objects/${toPascalCase(modelName)}UncheckedUpdateInput.schema'`, ]; await writeFileSafely( - path.join(Transformer.outputPath, `schemas/${toPascalCase(upsertOne)}.schema.ts`), + path.join( + Transformer.outputPath, + `schemas/${toPascalCase(upsertOne)}.schema.ts`, + ), `${this.generateImportStatements( imports, )}${this.generateExportSchemaStatement( @@ -713,7 +751,10 @@ export default class Transformer { } await writeFileSafely( - path.join(Transformer.outputPath, `schemas/${toPascalCase(aggregate)}.schema.ts`), + path.join( + Transformer.outputPath, + `schemas/${toPascalCase(aggregate)}.schema.ts`, + ), `${this.generateImportStatements( imports, )}${this.generateExportSchemaStatement( @@ -733,7 +774,10 @@ export default class Transformer { `import { ${toPascalCase(modelName)}ScalarFieldEnumSchema } from './enums/${toPascalCase(modelName)}ScalarFieldEnum.schema'`, ]; await writeFileSafely( - path.join(Transformer.outputPath, `schemas/${toPascalCase(groupBy)}.schema.ts`), + path.join( + Transformer.outputPath, + `schemas/${toPascalCase(groupBy)}.schema.ts`, + ), `${this.generateImportStatements( imports, )}${this.generateExportSchemaStatement( @@ -743,8 +787,7 @@ export default class Transformer { ); } } catch (error) { - console.log('error', error) - + console.log('error', error); } } }