UNPKG

@stryke/prisma-trpc-generator

Version:

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

49 lines (47 loc) 1.96 kB
import Transformer from "./transformer.mjs"; //#region src/zod/mongodb-helpers.ts function addMissingInputObjectTypesForMongoDbRawOpsAndQueries(modelOperations, outputObjectTypes, inputObjectTypes) { Transformer.rawOpsMap = resolveMongoDbRawOperations(modelOperations) ?? {}; const mongoDbRawQueryInputObjectTypes = resolveMongoDbRawQueryInputObjectTypes(outputObjectTypes); for (const mongoDbRawQueryInputType of mongoDbRawQueryInputObjectTypes) inputObjectTypes.push(mongoDbRawQueryInputType); } function resolveMongoDbRawOperations(modelOperations) { const rawOpsMap = {}; const rawOpsNames = [...new Set(modelOperations.reduce((result, current) => { Object.keys(current)?.forEach((key) => { if (key.includes("Raw")) result.push(key); }); return result; }, []))]; const modelNames = modelOperations.map((item) => item.model); rawOpsNames.forEach((opName) => { modelNames.forEach((modelName) => { const isFind = opName === "findRaw"; const opWithModel = `${opName.replace("Raw", "")}${modelName}Raw`; rawOpsMap[opWithModel] = isFind ? `${modelName}FindRawArgs` : `${modelName}AggregateRawArgs`; }); }); return rawOpsMap; } function resolveMongoDbRawQueryInputObjectTypes(outputObjectTypes) { return getMongoDbRawQueries(outputObjectTypes).map((item) => ({ name: item.name, constraints: { maxNumFields: null, minNumFields: null }, fields: item.args.map((arg) => ({ name: arg.name, isRequired: arg.isRequired, isNullable: arg.isNullable, inputTypes: arg.inputTypes })) })); } function getMongoDbRawQueries(outputObjectTypes) { return outputObjectTypes.filter((item) => item.name === "Query")?.[0].fields.filter((field) => field.name.includes("Raw")) ?? []; } const isMongodbRawOp = (name) => /find[\s\S]*?Raw/.test(name) || /aggregate[\s\S]*?Raw/.test(name); //#endregion export { addMissingInputObjectTypesForMongoDbRawOpsAndQueries, isMongodbRawOp }; //# sourceMappingURL=mongodb-helpers.mjs.map