@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
JavaScript
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