MCPcopy
hub / github.com/simstudioai/sim / persistMigratedBlocks

Function persistMigratedBlocks

packages/workflow-persistence/src/load.ts:183–217  ·  view source on GitHub ↗
(
  workflowId: string,
  originalBlocks: Record<string, BlockState>,
  migratedBlocks: Record<string, BlockState>,
  blockUpdatedAtById: Record<string, Date | null> = {}
)

Source from the content-addressed store, hash-verified

181}
182
183export async function persistMigratedBlocks(
184 workflowId: string,
185 originalBlocks: Record<string, BlockState>,
186 migratedBlocks: Record<string, BlockState>,
187 blockUpdatedAtById: Record<string, Date | null> = {}
188): Promise<void> {
189 try {
190 for (const [blockId, block] of Object.entries(migratedBlocks)) {
191 if (block !== originalBlocks[blockId]) {
192 const hasExpectedUpdatedAt = Object.hasOwn(blockUpdatedAtById, blockId)
193 const expectedUpdatedAt = blockUpdatedAtById[blockId]
194 const whereClause = hasExpectedUpdatedAt
195 ? and(
196 eq(workflowBlocks.id, blockId),
197 eq(workflowBlocks.workflowId, workflowId),
198 expectedUpdatedAt === null
199 ? isNull(workflowBlocks.updatedAt)
200 : eq(workflowBlocks.updatedAt, expectedUpdatedAt)
201 )
202 : and(eq(workflowBlocks.id, blockId), eq(workflowBlocks.workflowId, workflowId))
203
204 await db
205 .update(workflowBlocks)
206 .set({
207 subBlocks: block.subBlocks,
208 data: block.data,
209 updatedAt: new Date(),
210 })
211 .where(whereClause)
212 }
213 }
214 } catch (err) {
215 logger.warn('Failed to persist block migrations', { workflowId, error: err })
216 }
217}

Callers 1

Calls 3

setMethod · 0.65
warnMethod · 0.65
eqFunction · 0.50

Tested by

no test coverage detected