@ladislaogarcia/prisma-zod-generator
Version:
Prisma 2+ generator to emit Zod schemas from your Prisma schema
70 lines • 2.86 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.addMissingInputObjectTypesForModelArgs = void 0;
const getPrismaVersion_1 = __importDefault(require("../utils/getPrismaVersion"));
const model_helpers_1 = require("./model-helpers");
function addMissingInputObjectTypesForModelArgs(inputObjectTypes, models, isGenerateSelect, isGenerateInclude) {
const modelArgsInputObjectTypes = generateModelArgsInputObjectTypes(models, isGenerateSelect, isGenerateInclude);
for (const modelArgsInputObjectType of modelArgsInputObjectTypes) {
inputObjectTypes.push(modelArgsInputObjectType);
}
}
exports.addMissingInputObjectTypesForModelArgs = addMissingInputObjectTypesForModelArgs;
function getModelArgsTypeName(modelName) {
const modelArgsPrepend = getPrismaVersion_1.default && getPrismaVersion_1.default >= 6 ? 'Default' : '';
return `${modelName}${modelArgsPrepend}Args`;
}
function generateModelArgsInputObjectTypes(models, isGenerateSelect, isGenerateInclude) {
const modelArgsInputObjectTypes = [];
for (const model of models) {
const { name: modelName } = model;
const fields = [];
if (isGenerateSelect) {
const selectField = {
name: 'select',
isRequired: false,
isNullable: false,
inputTypes: [
{
isList: false,
type: `${modelName}Select`,
location: 'inputObjectTypes',
namespace: 'prisma',
},
],
};
fields.push(selectField);
}
const hasRelationToAnotherModel = (0, model_helpers_1.checkModelHasModelRelation)(model);
if (isGenerateInclude && hasRelationToAnotherModel) {
const includeField = {
name: 'include',
isRequired: false,
isNullable: false,
inputTypes: [
{
isList: false,
type: `${modelName}Include`,
location: 'inputObjectTypes',
namespace: 'prisma',
},
],
};
fields.push(includeField);
}
const modelArgsInputObjectType = {
name: getModelArgsTypeName(modelName),
constraints: {
maxNumFields: null,
minNumFields: null,
},
fields,
};
modelArgsInputObjectTypes.push(modelArgsInputObjectType);
}
return modelArgsInputObjectTypes;
}
//# sourceMappingURL=modelArgs-helpers.js.map