import type { CollectionConfig } from 'payload' import type { NestedDocsPluginConfig } from '../types.js' export const getParents = async ( req: any, pluginConfig: NestedDocsPluginConfig, collection: CollectionConfig, doc: Record, docs: Array> = [], ): Promise>> => { const parentSlug = pluginConfig?.parentFieldSlug || 'parent' const parent = doc[parentSlug] let retrievedParent if (parent) { // If not auto-populated, and we have an ID if (typeof parent === 'string' || typeof parent === 'number') { retrievedParent = await req.payload.findByID({ id: parent, collection: collection.slug, depth: 0, disableErrors: true, req, }) } // If auto-populated if (typeof parent === 'object') { retrievedParent = parent } if (retrievedParent) { if (retrievedParent[parentSlug]) { return getParents(req, pluginConfig, collection, retrievedParent, [ retrievedParent, ...docs, ]) } return [retrievedParent, ...docs] } } return docs }