prisma-zod-generator
Version:
Prisma 2+ generator to emit Zod schemas from your Prisma schema
56 lines • 3.18 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.addMissingInputObjectTypes = addMissingInputObjectTypes;
exports.resolveAddMissingInputObjectTypeOptions = resolveAddMissingInputObjectTypeOptions;
const transformer_1 = __importDefault(require("../transformer"));
const aggregate_helpers_1 = require("./aggregate-helpers");
const include_helpers_1 = require("./include-helpers");
const modelArgs_helpers_1 = require("./modelArgs-helpers");
const mongodb_helpers_1 = require("./mongodb-helpers");
const select_helpers_1 = require("./select-helpers");
const whereUniqueInput_helpers_1 = require("./whereUniqueInput-helpers");
function addMissingInputObjectTypes(inputObjectTypes, outputObjectTypes, models, modelOperations, dataSourceProvider, options) {
// TODO: remove once Prisma fix this issue: https://github.com/prisma/prisma/issues/14900
if (dataSourceProvider === 'mongodb') {
(0, mongodb_helpers_1.addMissingInputObjectTypesForMongoDbRawOpsAndQueries)(modelOperations, outputObjectTypes, inputObjectTypes);
}
// Filter out fieldRefTypes from input types to avoid generating non-existent schemas
filterFieldRefTypes(inputObjectTypes);
(0, aggregate_helpers_1.addMissingInputObjectTypesForAggregate)(inputObjectTypes, outputObjectTypes);
if (options.isGenerateSelect) {
(0, select_helpers_1.addMissingInputObjectTypesForSelect)(inputObjectTypes, outputObjectTypes, models);
transformer_1.default.setIsGenerateSelect(true);
}
if (options.isGenerateSelect || options.isGenerateInclude) {
(0, modelArgs_helpers_1.addMissingInputObjectTypesForModelArgs)(inputObjectTypes, models, options.isGenerateSelect, options.isGenerateInclude);
}
if (options.isGenerateInclude) {
(0, include_helpers_1.addMissingInputObjectTypesForInclude)(inputObjectTypes, models, options.isGenerateSelect);
transformer_1.default.setIsGenerateInclude(true);
}
(0, whereUniqueInput_helpers_1.changeOptionalToRequiredFields)(inputObjectTypes);
}
function filterFieldRefTypes(inputObjectTypes) {
// Filter out fieldRefTypes from input types following zod-prisma-types approach
// This prevents generation of non-existent FieldRefInput schemas
for (const inputType of inputObjectTypes) {
const fields = inputType.fields;
for (const field of fields) {
if (field.inputTypes.some((inputType) => inputType.location === 'fieldRefTypes')) {
// Replace the entire inputTypes array with just the first input type
// This removes the fieldRefTypes reference while preserving functionality
field.inputTypes = [field.inputTypes[0]];
}
}
}
}
function resolveAddMissingInputObjectTypeOptions(generatorConfigOptions) {
return {
isGenerateSelect: generatorConfigOptions.isGenerateSelect === 'true',
isGenerateInclude: generatorConfigOptions.isGenerateInclude === 'true',
};
}
//# sourceMappingURL=helpers.js.map