UNPKG

@stryke/prisma-trpc-generator

Version:

A fork of the prisma-trpc-generator code to work in ESM with Prisma v6.

128 lines (126 loc) 4.1 kB
const require_model_helpers = require('./model-helpers.cjs'); //#region src/zod/select-helpers.ts function addMissingInputObjectTypesForSelect(inputObjectTypes, outputObjectTypes, models) { const modelCountOutputTypes = getModelCountOutputTypes(outputObjectTypes); const generatedInputObjectTypes = [ generateModelCountOutputTypeSelectInputObjectTypes(modelCountOutputTypes), generateModelCountOutputTypeArgsInputObjectTypes(modelCountOutputTypes), generateModelSelectInputObjectTypes(models) ].flat(); for (const inputObjectType of generatedInputObjectTypes) inputObjectTypes.push(inputObjectType); } function getModelCountOutputTypes(outputObjectTypes) { return outputObjectTypes.filter(({ name }) => name.includes("CountOutputType")); } function generateModelCountOutputTypeSelectInputObjectTypes(modelCountOutputTypes) { const modelCountOutputTypeSelectInputObjectTypes = []; for (const modelCountOutputType of modelCountOutputTypes) { const { name: modelCountOutputTypeName, fields: modelCountOutputTypeFields } = modelCountOutputType; const modelCountOutputTypeSelectInputObjectType = { name: `${modelCountOutputTypeName}Select`, constraints: { maxNumFields: null, minNumFields: null }, fields: modelCountOutputTypeFields.map(({ name }) => ({ name, isRequired: false, isNullable: false, inputTypes: [{ isList: false, type: `Boolean`, location: "scalar" }] })) }; modelCountOutputTypeSelectInputObjectTypes.push(modelCountOutputTypeSelectInputObjectType); } return modelCountOutputTypeSelectInputObjectTypes; } function generateModelCountOutputTypeArgsInputObjectTypes(modelCountOutputTypes) { const modelCountOutputTypeArgsInputObjectTypes = []; for (const modelCountOutputType of modelCountOutputTypes) { const { name: modelCountOutputTypeName } = modelCountOutputType; const modelCountOutputTypeArgsInputObjectType = { name: `${modelCountOutputTypeName}DefaultArgs`, constraints: { maxNumFields: null, minNumFields: null }, fields: [{ name: "select", isRequired: false, isNullable: false, inputTypes: [{ isList: false, type: `${modelCountOutputTypeName}Select`, location: "inputObjectTypes", namespace: "prisma" }] }] }; modelCountOutputTypeArgsInputObjectTypes.push(modelCountOutputTypeArgsInputObjectType); } return modelCountOutputTypeArgsInputObjectTypes; } function generateModelSelectInputObjectTypes(models) { const modelSelectInputObjectTypes = []; for (const model of models) { const { name: modelName, fields: modelFields } = model; const fields = []; for (const modelField of modelFields) { const { name: modelFieldName, isList, type } = modelField; const isRelationField = require_model_helpers.checkIsModelRelationField(modelField); const field = { name: modelFieldName, isRequired: false, isNullable: false, inputTypes: [{ isList: false, type: "Boolean", location: "scalar" }] }; if (isRelationField) { const schemaArgInputType = { isList: false, type: isList ? `${type}FindManyArgs` : `${type}DefaultArgs`, location: "inputObjectTypes", namespace: "prisma" }; field.inputTypes.push(schemaArgInputType); } fields.push(field); } if (require_model_helpers.checkModelHasManyModelRelation(model)) { const _countField = { name: "_count", isRequired: false, isNullable: false, inputTypes: [{ isList: false, type: "Boolean", location: "scalar" }, { isList: false, type: `${modelName}CountOutputTypeDefaultArgs`, location: "inputObjectTypes", namespace: "prisma" }] }; fields.push(_countField); } const modelSelectInputObjectType = { name: `${modelName}Select`, constraints: { maxNumFields: null, minNumFields: null }, fields }; modelSelectInputObjectTypes.push(modelSelectInputObjectType); } return modelSelectInputObjectTypes; } //#endregion exports.addMissingInputObjectTypesForSelect = addMissingInputObjectTypesForSelect;