MCPcopy Create free account
hub / github.com/FlowiseAI/Flowise / getUpsertDetails

Function getUpsertDetails

packages/ui/src/utils/genericHelper.js:708–762  ·  view source on GitHub ↗
(nodes, edges)

Source from the content-addressed store, hash-verified

706}
707
708export const getUpsertDetails = (nodes, edges) => {
709 const vsNodes = nodes.filter(
710 (node) =>
711 node.data.category === 'Vector Stores' && !node.data.label.includes('Upsert') && !node.data.label.includes('Load Existing')
712 )
713 const vsNodeIds = vsNodes.map((vs) => vs.data.id)
714
715 const upsertNodes = []
716 const seenVsNodeIds = []
717 for (const edge of edges) {
718 if (vsNodeIds.includes(edge.source) || vsNodeIds.includes(edge.target)) {
719 const vsNode = vsNodes.find((node) => node.data.id === edge.source || node.data.id === edge.target)
720 if (!vsNode || seenVsNodeIds.includes(vsNode.data.id)) continue
721 seenVsNodeIds.push(vsNode.data.id)
722
723 // Found Vector Store Node, proceed to find connected Document Loader node
724 let connectedDocs = []
725
726 if (vsNode.data.inputs.document) connectedDocs = [...new Set(vsNode.data.inputs.document)]
727
728 if (connectedDocs.length) {
729 const innerNodes = [vsNode]
730
731 if (vsNode.data.inputs.embeddings) {
732 const embeddingsId = vsNode.data.inputs.embeddings.replace(/{{|}}/g, '').split('.')[0]
733 innerNodes.push(nodes.find((node) => node.data.id === embeddingsId))
734 }
735
736 if (vsNode.data.inputs.recordManager) {
737 const recordManagerId = vsNode.data.inputs.recordManager.replace(/{{|}}/g, '').split('.')[0]
738 innerNodes.push(nodes.find((node) => node.data.id === recordManagerId))
739 }
740
741 for (const doc of connectedDocs) {
742 const docId = doc.replace(/{{|}}/g, '').split('.')[0]
743 const docNode = nodes.find((node) => node.data.id === docId)
744 if (docNode) innerNodes.push(docNode)
745
746 // Found Document Loader Node, proceed to find connected Text Splitter node
747 if (docNode && docNode.data.inputs.textSplitter) {
748 const textSplitterId = docNode.data.inputs.textSplitter.replace(/{{|}}/g, '').split('.')[0]
749 const textSplitterNode = nodes.find((node) => node.data.id === textSplitterId)
750 if (textSplitterNode) innerNodes.push(textSplitterNode)
751 }
752 }
753
754 upsertNodes.push({
755 vectorNode: vsNode,
756 nodes: innerNodes.reverse()
757 })
758 }
759 }
760 }
761 return upsertNodes
762}
763
764export const rearrangeToolsOrdering = (newValues, sourceNodeId) => {
765 // RequestsGet and RequestsPost have to be in order before other tools

Callers 2

checkIfUpsertAvailableFunction · 0.90
VectorStoreDialogFunction · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected