(dbOrTx: any, workflowId: string, parentId: string)
| 126 | } |
| 127 | |
| 128 | export async function updateSubflowNodeList(dbOrTx: any, workflowId: string, parentId: string) { |
| 129 | try { |
| 130 | // Get all child blocks of this parent |
| 131 | const childBlocks = await dbOrTx |
| 132 | .select({ id: workflowBlocks.id }) |
| 133 | .from(workflowBlocks) |
| 134 | .where( |
| 135 | and( |
| 136 | eq(workflowBlocks.workflowId, workflowId), |
| 137 | sql`${workflowBlocks.data}->>'parentId' = ${parentId}` |
| 138 | ) |
| 139 | ) |
| 140 | |
| 141 | const childNodeIds = childBlocks.map((block: any) => block.id) |
| 142 | |
| 143 | // Get current subflow config |
| 144 | const subflowData = await dbOrTx |
| 145 | .select({ config: workflowSubflows.config }) |
| 146 | .from(workflowSubflows) |
| 147 | .where(and(eq(workflowSubflows.id, parentId), eq(workflowSubflows.workflowId, workflowId))) |
| 148 | .limit(1) |
| 149 | |
| 150 | if (subflowData.length > 0) { |
| 151 | const updatedConfig = { |
| 152 | ...subflowData[0].config, |
| 153 | nodes: childNodeIds, |
| 154 | } |
| 155 | |
| 156 | await dbOrTx |
| 157 | .update(workflowSubflows) |
| 158 | .set({ |
| 159 | config: updatedConfig, |
| 160 | updatedAt: new Date(), |
| 161 | }) |
| 162 | .where(and(eq(workflowSubflows.id, parentId), eq(workflowSubflows.workflowId, workflowId))) |
| 163 | |
| 164 | logger.debug(`Updated subflow ${parentId} node list: [${childNodeIds.join(', ')}]`) |
| 165 | } |
| 166 | } catch (error) { |
| 167 | logger.error(`Error updating subflow node list for ${parentId}:`, error) |
| 168 | } |
| 169 | } |
| 170 | |
| 171 | export async function getWorkflowState(workflowId: string) { |
| 172 | try { |
no test coverage detected