{"version":3,"file":"validate-input.mjs","names":["constants"],"sources":["../../../../../../src/libs/collection/custom-fields/fields/relation/validate-input.ts"],"sourcesContent":["import constants from \"../../../../../constants/constants.js\";\nimport type {\n\tLucidDocumentTableName,\n\tServiceContext,\n} from \"../../../../../types.js\";\nimport logger from \"../../../../logger/index.js\";\nimport DocumentsRepository from \"../../../../repositories/documents.js\";\nimport buildTableName from \"../../../helpers/build-table-name.js\";\nimport type { FieldRelationValidationInput } from \"../../types.js\";\nimport type { RelationValidationData } from \"./types.js\";\n\n/**\n * Validate document input data\n */\nconst validateRelationInputData = async (\n\tcontext: ServiceContext,\n\tinput: FieldRelationValidationInput,\n): Promise<RelationValidationData[]> => {\n\tconst allDocuments: RelationValidationData[] = [];\n\ttry {\n\t\t//* create queries for each collection key\n\t\tconst promises = Object.entries(input).map(([collectionKey, ids]) => {\n\t\t\tif (ids.length === 0) return Promise.resolve([]);\n\n\t\t\tconst uniqueIds = [...new Set(ids)];\n\t\t\treturn fetchDocumentsFromCollection(context, collectionKey, uniqueIds);\n\t\t});\n\n\t\tconst results = await Promise.all(promises);\n\t\tfor (const documents of results) allDocuments.push(...documents);\n\t\treturn allDocuments;\n\t} catch (_err) {\n\t\tlogger.error({\n\t\t\tscope: constants.logScopes.validation,\n\t\t\tmessage: \"Failed to fetch documents for field validation\",\n\t\t});\n\t\treturn [];\n\t}\n};\n\n/**\n * Fetch documents from a specific collection\n */\nconst fetchDocumentsFromCollection = async (\n\tcontext: ServiceContext,\n\tcollectionKey: string,\n\tids: number[],\n): Promise<RelationValidationData[]> => {\n\tif (ids.length === 0) return [];\n\n\ttry {\n\t\tconst tableNameRes = buildTableName<LucidDocumentTableName>(\n\t\t\t\"document\",\n\t\t\t{\n\t\t\t\tcollection: collectionKey,\n\t\t\t},\n\t\t\tcontext.config.db.config.tableNameByteLimit,\n\t\t);\n\t\tif (tableNameRes.error) {\n\t\t\tlogger.error({\n\t\t\t\tscope: constants.logScopes.validation,\n\t\t\t\tmessage: \"Failed to fetch collection documents for field validation\",\n\t\t\t\tdata: {\n\t\t\t\t\tcollection: collectionKey,\n\t\t\t\t},\n\t\t\t});\n\t\t\treturn [];\n\t\t}\n\n\t\tconst Document = new DocumentsRepository(\n\t\t\tcontext.db.client,\n\t\t\tcontext.config.db,\n\t\t);\n\n\t\tconst documentIdRes = await Document.selectMultipleValidationIds(\n\t\t\t{\n\t\t\t\tids,\n\t\t\t\ttenantKey: context.request.tenantKey,\n\t\t\t\tvalidation: {\n\t\t\t\t\tenabled: true,\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\ttableName: tableNameRes.data.name,\n\t\t\t},\n\t\t);\n\t\tif (documentIdRes.error) {\n\t\t\tlogger.error({\n\t\t\t\tscope: constants.logScopes.validation,\n\t\t\t\tmessage: \"Failed to fetch collection documents for field validation\",\n\t\t\t\tdata: {\n\t\t\t\t\tcollection: collectionKey,\n\t\t\t\t},\n\t\t\t});\n\t\t\treturn [];\n\t\t}\n\n\t\treturn documentIdRes.data.map((doc) => ({\n\t\t\tid: doc.id,\n\t\t\tcollection_key: collectionKey,\n\t\t}));\n\t} catch (_err) {\n\t\tlogger.error({\n\t\t\tscope: constants.logScopes.validation,\n\t\t\tmessage: \"Failed to fetch collection documents for field validation\",\n\t\t\tdata: {\n\t\t\t\tcollection: collectionKey,\n\t\t\t},\n\t\t});\n\t\treturn [];\n\t}\n};\n\nexport default validateRelationInputData;\n"],"mappings":"6MAcA,MAAM,EAA4B,MACjC,EACA,IACuC,CACvC,IAAM,EAAyC,CAAC,EAChD,GAAI,CAEH,IAAM,EAAW,OAAO,QAAQ,CAAK,CAAC,CAAC,KAAK,CAAC,EAAe,KAAS,CACpE,GAAI,EAAI,SAAW,EAAG,OAAO,QAAQ,QAAQ,CAAC,CAAC,EAE/C,IAAM,EAAY,CAAC,GAAG,IAAI,IAAI,CAAG,CAAC,EAClC,OAAO,EAA6B,EAAS,EAAe,CAAS,CACtE,CAAC,EAEK,EAAU,MAAM,QAAQ,IAAI,CAAQ,EAC1C,IAAK,IAAM,KAAa,EAAS,EAAa,KAAK,GAAG,CAAS,EAC/D,OAAO,CACR,MAAe,CAKd,OAJA,EAAO,MAAM,CACZ,MAAOA,EAAU,UAAU,WAC3B,QAAS,gDACV,CAAC,EACM,CAAC,CACT,CACD,EAKM,EAA+B,MACpC,EACA,EACA,IACuC,CACvC,GAAI,EAAI,SAAW,EAAG,MAAO,CAAC,EAE9B,GAAI,CACH,IAAM,EAAe,EACpB,WACA,CACC,WAAY,CACb,EACA,EAAQ,OAAO,GAAG,OAAO,kBAC1B,EACA,GAAI,EAAa,MAQhB,OAPA,EAAO,MAAM,CACZ,MAAOA,EAAU,UAAU,WAC3B,QAAS,4DACT,KAAM,CACL,WAAY,CACb,CACD,CAAC,EACM,CAAC,EAQT,IAAM,EAAgB,MAAM,IALP,EACpB,EAAQ,GAAG,OACX,EAAQ,OAAO,EAGmB,CAAC,CAAC,4BACpC,CACC,MACA,UAAW,EAAQ,QAAQ,UAC3B,WAAY,CACX,QAAS,EACV,CACD,EACA,CACC,UAAW,EAAa,KAAK,IAC9B,CACD,EAYA,OAXI,EAAc,OACjB,EAAO,MAAM,CACZ,MAAOA,EAAU,UAAU,WAC3B,QAAS,4DACT,KAAM,CACL,WAAY,CACb,CACD,CAAC,EACM,CAAC,GAGF,EAAc,KAAK,IAAK,IAAS,CACvC,GAAI,EAAI,GACR,eAAgB,CACjB,EAAE,CACH,MAAe,CAQd,OAPA,EAAO,MAAM,CACZ,MAAOA,EAAU,UAAU,WAC3B,QAAS,4DACT,KAAM,CACL,WAAY,CACb,CACD,CAAC,EACM,CAAC,CACT,CACD"}