{"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"}