MCPcopy Index your code
hub / github.com/simstudioai/sim / deleteWorkflowGroup

Function deleteWorkflowGroup

apps/sim/lib/table/workflow-groups/service.ts:905–964  ·  view source on GitHub ↗
(
  data: DeleteWorkflowGroupData,
  requestId: string
)

Source from the content-addressed store, hash-verified

903 * group's `executions[groupId]` entry from every row.
904 */
905export async function deleteWorkflowGroup(
906 data: DeleteWorkflowGroupData,
907 requestId: string
908): Promise<TableDefinition> {
909 return withLockedTable(data.tableId, async (table, trx) => {
910 const schema = table.schema
911 const groups = schema.workflowGroups ?? []
912 const group = groups.find((g) => g.id === data.groupId)
913 if (!group) {
914 throw new Error(`Workflow group "${data.groupId}" not found`)
915 }
916
917 const removedColumnIds = new Set(group.outputs.map((o) => o.columnName))
918 // Removed group's output columns may be referenced as deps by sibling groups.
919 // Strip those refs so we don't leave dangling-column deps behind.
920 const nextGroups = groups
921 .filter((g) => g.id !== data.groupId)
922 .map((g) => stripGroupDeps(g, removedColumnIds))
923 const updatedSchema: TableSchema = {
924 ...schema,
925 columns: schema.columns.filter((c) => !removedColumnIds.has(getColumnId(c))),
926 workflowGroups: nextGroups,
927 }
928 const updatedColumnOrder = table.metadata?.columnOrder?.filter(
929 (id) => !removedColumnIds.has(id)
930 )
931 assertValidSchema(updatedSchema, updatedColumnOrder)
932
933 const updatedMetadata: TableMetadata | null =
934 updatedColumnOrder && table.metadata
935 ? { ...table.metadata, columnOrder: updatedColumnOrder }
936 : table.metadata
937 ? { ...table.metadata }
938 : null
939
940 const now = new Date()
941 await setTableTxTimeouts(trx, { statementMs: 60_000 })
942 await trx
943 .update(userTableDefinitions)
944 .set({ schema: updatedSchema, metadata: updatedMetadata, updatedAt: now })
945 .where(eq(userTableDefinitions.id, data.tableId))
946 for (const id of removedColumnIds) {
947 await trx.execute(
948 sql`UPDATE user_table_rows SET data = data - ${id}::text WHERE table_id = ${data.tableId} AND data ? ${id}::text`
949 )
950 }
951 await stripGroupExecutions(trx, data.tableId, [data.groupId])
952
953 logger.info(
954 `[${requestId}] Deleted workflow group "${data.groupId}" from table ${data.tableId}`
955 )
956
957 return {
958 ...table,
959 schema: updatedSchema,
960 metadata: updatedMetadata,
961 updatedAt: now,
962 }

Callers 2

executeFunction · 0.90
route.tsFile · 0.90

Calls 10

withLockedTableFunction · 0.90
stripGroupDepsFunction · 0.90
getColumnIdFunction · 0.90
assertValidSchemaFunction · 0.90
setTableTxTimeoutsFunction · 0.90
stripGroupExecutionsFunction · 0.90
infoMethod · 0.80
setMethod · 0.65
executeMethod · 0.65
eqFunction · 0.50

Tested by

no test coverage detected