Skip to content

Commit

Permalink
feat: export the schemas with ZodObject type in a backwards-compatibl…
Browse files Browse the repository at this point in the history
…e manner

As suggested by owenr88 in Issue omar-dulaimi#88
  • Loading branch information
jkumara committed May 19, 2024
1 parent 35c7ff2 commit 035dc9e
Showing 1 changed file with 61 additions and 18 deletions.
79 changes: 61 additions & 18 deletions src/transformer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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)})`,
Expand All @@ -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<Prisma.${prefix}> = ${schema};`,
`export const ${prefix}ObjectSchema = ${schema};`,
];
return exportStatements.join('\n');
}

async generateObjectSchema() {
Expand Down Expand Up @@ -313,7 +321,7 @@ export default class Transformer {
const end = `export const ${toPascalCase(exportName)}ObjectSchema = Schema`;
return `
// @ts-ignore
const Schema: z.ZodType<Prisma.${toPascalCase(name)}> = ${schema};\n\n ${end}`;
const Schema = ${schema};\n\n ${end}`;
}

addFinalWrappers({ zodStringFields }: { zodStringFields: string[] }) {
Expand Down Expand Up @@ -392,7 +400,7 @@ export default class Transformer {
checkIsModelQueryType(type: string) {
const modelQueryTypeSuffixToQueryName: Record<string, string> = {
FindManyArgs: 'findMany',
};
};
for (const modelQueryType of ['FindManyArgs']) {
if (type.includes(modelQueryType)) {
const modelQueryTypeSuffixIndex = type.indexOf(modelQueryType);
Expand Down Expand Up @@ -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(
Expand All @@ -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(
Expand All @@ -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(
Expand All @@ -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(
Expand All @@ -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(
Expand All @@ -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(
Expand All @@ -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(
Expand All @@ -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(
Expand All @@ -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(
Expand All @@ -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(
Expand Down Expand Up @@ -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(
Expand All @@ -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(
Expand All @@ -743,8 +787,7 @@ export default class Transformer {
);
}
} catch (error) {
console.log('error', error)

console.log('error', error);
}
}
}
Expand Down

0 comments on commit 035dc9e

Please sign in to comment.