UNPKG

@stryke/prisma-trpc-generator

Version:

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

1 lines 4.54 kB
{"version":3,"file":"mongodb-helpers.mjs","names":[],"sources":["../../src/zod/mongodb-helpers.ts"],"sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Stryke\n\n This code was released as part of the Stryke project. Stryke\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/stryke.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/stryke\n Documentation: https://docs.stormsoftware.com/projects/stryke\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\nimport type { DMMF } from \"@prisma/generator-helper\";\nimport Transformer from \"./transformer\";\n\nexport function addMissingInputObjectTypesForMongoDbRawOpsAndQueries(\n modelOperations: DMMF.ModelMapping[],\n outputObjectTypes: DMMF.OutputType[],\n inputObjectTypes: DMMF.InputType[]\n) {\n const rawOpsMap = resolveMongoDbRawOperations(modelOperations);\n Transformer.rawOpsMap = rawOpsMap ?? {};\n\n const mongoDbRawQueryInputObjectTypes =\n resolveMongoDbRawQueryInputObjectTypes(outputObjectTypes);\n for (const mongoDbRawQueryInputType of mongoDbRawQueryInputObjectTypes) {\n inputObjectTypes.push(mongoDbRawQueryInputType);\n }\n}\n\nfunction resolveMongoDbRawOperations(modelOperations: DMMF.ModelMapping[]) {\n const rawOpsMap: { [name: string]: string } = {};\n const rawOpsNames = [\n ...new Set(\n modelOperations.reduce<string[]>((result, current) => {\n const keys = Object.keys(current);\n keys?.forEach(key => {\n if (key.includes(\"Raw\")) {\n result.push(key);\n }\n });\n return result;\n }, [])\n )\n ];\n\n const modelNames = modelOperations.map(item => item.model);\n\n rawOpsNames.forEach(opName => {\n modelNames.forEach(modelName => {\n const isFind = opName === \"findRaw\";\n const opWithModel = `${opName.replace(\"Raw\", \"\")}${modelName}Raw`;\n rawOpsMap[opWithModel] = isFind\n ? `${modelName}FindRawArgs`\n : `${modelName}AggregateRawArgs`;\n });\n });\n\n return rawOpsMap;\n}\n\nfunction resolveMongoDbRawQueryInputObjectTypes(\n outputObjectTypes: DMMF.OutputType[]\n) {\n const mongoDbRawQueries = getMongoDbRawQueries(outputObjectTypes);\n const mongoDbRawQueryInputObjectTypes = mongoDbRawQueries.map(item => ({\n name: item.name,\n constraints: {\n maxNumFields: null,\n minNumFields: null\n },\n fields: item.args.map(arg => ({\n name: arg.name,\n isRequired: arg.isRequired,\n isNullable: arg.isNullable,\n inputTypes: arg.inputTypes\n }))\n }));\n\n return mongoDbRawQueryInputObjectTypes;\n}\n\nfunction getMongoDbRawQueries(outputObjectTypes: DMMF.OutputType[]) {\n const queryOutputTypes = outputObjectTypes.filter(\n item => item.name === \"Query\"\n );\n\n const mongodbRawQueries =\n queryOutputTypes?.[0]!.fields.filter(field => field.name.includes(\"Raw\")) ??\n [];\n\n return mongodbRawQueries;\n}\n\nexport const isMongodbRawOp = (name: string) =>\n /find[\\s\\S]*?Raw/.test(name) || /aggregate[\\s\\S]*?Raw/.test(name);\n"],"mappings":";;;AAqBA,SAAgB,qDACd,iBACA,mBACA,kBACA;AAEA,aAAY,YADM,4BAA4B,gBACb,IAAI,EAAE;CAEvC,MAAM,kCACJ,uCAAuC,kBAAkB;AAC3D,MAAK,MAAM,4BAA4B,gCACrC,kBAAiB,KAAK,yBAAyB;;AAInD,SAAS,4BAA4B,iBAAsC;CACzE,MAAM,YAAwC,EAAE;CAChD,MAAM,cAAc,CAClB,GAAG,IAAI,IACL,gBAAgB,QAAkB,QAAQ,YAAY;AAEpD,EADa,OAAO,KAAK,QACrB,EAAE,SAAQ,QAAO;AACnB,OAAI,IAAI,SAAS,MAAM,CACrB,QAAO,KAAK,IAAI;IAElB;AACF,SAAO;IACN,EAAE,CAAC,CACP,CACF;CAED,MAAM,aAAa,gBAAgB,KAAI,SAAQ,KAAK,MAAM;AAE1D,aAAY,SAAQ,WAAU;AAC5B,aAAW,SAAQ,cAAa;GAC9B,MAAM,SAAS,WAAW;GAC1B,MAAM,cAAc,GAAG,OAAO,QAAQ,OAAO,GAAG,GAAG,UAAU;AAC7D,aAAU,eAAe,SACrB,GAAG,UAAU,eACb,GAAG,UAAU;IACjB;GACF;AAEF,QAAO;;AAGT,SAAS,uCACP,mBACA;AAgBA,QAf0B,qBAAqB,kBACU,CAAC,KAAI,UAAS;EACrE,MAAM,KAAK;EACX,aAAa;GACX,cAAc;GACd,cAAc;GACf;EACD,QAAQ,KAAK,KAAK,KAAI,SAAQ;GAC5B,MAAM,IAAI;GACV,YAAY,IAAI;GAChB,YAAY,IAAI;GAChB,YAAY,IAAI;GACjB,EAAE;EACJ,EAEqC;;AAGxC,SAAS,qBAAqB,mBAAsC;AASlE,QARyB,kBAAkB,QACzC,SAAQ,KAAK,SAAS,QAIN,GAAG,GAAI,OAAO,QAAO,UAAS,MAAM,KAAK,SAAS,MAAM,CAAC,IACzE,EAAE;;AAKN,MAAa,kBAAkB,SAC7B,kBAAkB,KAAK,KAAK,IAAI,uBAAuB,KAAK,KAAK"}