{"version":3,"file":"ref-fetch.mjs","names":[],"sources":["../../../../../src/libs/collection/custom-fields/utils/ref-fetch.ts"],"sourcesContent":["import type {\n\tDocumentVersionType,\n\tFieldTypes,\n\tLucidBrickTableName,\n\tServiceFn,\n} from \"../../../../types.js\";\nimport type { MediaPropsT } from \"../../../formatters/media.js\";\nimport type { UserPropT } from \"../../../formatters/users.js\";\nimport type { BrickQueryResponse } from \"../../../repositories/document-bricks.js\";\nimport type { CollectionSchemaTable } from \"../../schema/types.js\";\n\nexport type FieldRefRelation = {\n\ttable: string;\n\tvalues: Set<unknown>;\n};\n\nexport type FieldRefVersionTypeResolver = (input: {\n\tfieldType: FieldTypes;\n\ttable: string;\n\tcollectionKey?: string;\n}) => Exclude<DocumentVersionType, \"revision\">;\n\nexport type FieldRefFetchInput = {\n\trelations: FieldRefRelation[];\n\tversionType: Exclude<DocumentVersionType, \"revision\">;\n\tresolveVersionType?: FieldRefVersionTypeResolver;\n};\n\nexport type FieldRefFetchOutput = {\n\trows: Array<MediaPropsT> | Array<UserPropT> | Array<BrickQueryResponse>;\n\tmeta?: {\n\t\trelation?: {\n\t\t\tfieldsSchemaByCollection: Record<\n\t\t\t\tstring,\n\t\t\t\tCollectionSchemaTable<LucidBrickTableName>\n\t\t\t>;\n\t\t};\n\t};\n};\n\nexport type FieldRefFetchPlan<T extends FieldTypes = FieldTypes> = {\n\tfieldType: T;\n\trun: ServiceFn<[], FieldRefFetchOutput>;\n};\n\nexport type FieldRefFetchPlanInput<T extends FieldTypes = FieldTypes> = {\n\tfieldType: T;\n\trelations: FieldRefRelation[];\n\tversionType: Exclude<DocumentVersionType, \"revision\">;\n\tresolveVersionType?: FieldRefVersionTypeResolver;\n\tfetchRefs: ServiceFn<[FieldRefFetchInput], FieldRefFetchOutput>;\n};\n\nexport const createFieldRefFetchPlan = <T extends FieldTypes>(\n\tinput: FieldRefFetchPlanInput<T>,\n): FieldRefFetchPlan<T> | null => {\n\tif (input.relations.length === 0) return null;\n\n\treturn {\n\t\tfieldType: input.fieldType,\n\t\trun: (context) =>\n\t\t\tinput.fetchRefs(context, {\n\t\t\t\trelations: input.relations,\n\t\t\t\tversionType: input.versionType,\n\t\t\t\tresolveVersionType: input.resolveVersionType,\n\t\t\t}),\n\t};\n};\n"],"mappings":"AAqDA,MAAa,EACZ,GAEI,EAAM,UAAU,SAAW,EAAU,KAElC,CACN,UAAW,EAAM,UACjB,IAAM,GACL,EAAM,UAAU,EAAS,CACxB,UAAW,EAAM,UACjB,YAAa,EAAM,YACnB,mBAAoB,EAAM,kBAC3B,CAAC,CACH"}