* clean api 2 * the rest * clean tests * stop_after_if test * unbox `modules: Vec<FlowModule>` in `ForloopFlow` * migrate * initFlow stop_after_if_expr and skip_if_stopped * s/migrateInitTransform/migrateFlowModule I didn't read the name before... oops * sql migration for openflow changes * fix frontend migration code Co-authored-by: sqwishy <somebody@froghat.ca>
57 lines
1.8 KiB
PL/PgSQL
57 lines
1.8 KiB
PL/PgSQL
-- https://github.com/windmill-labs/windmill/pull/491
|
|
CREATE FUNCTION migrate_flow(flow jsonb)
|
|
RETURNS jsonb
|
|
AS $$
|
|
DECLARE module jsonb;
|
|
i integer := 0;
|
|
BEGIN
|
|
if flow->'value'?'modules' THEN
|
|
flow = JSONB_SET(flow, ARRAY['modules'], flow->'value'->'modules') - 'value';
|
|
END IF;
|
|
|
|
FOR module IN SELECT JSONB_ARRAY_ELEMENTS(flow->'modules') LOOP
|
|
flow = JSONB_SET(flow, ARRAY['modules', i::text], migrate_flow_module(module));
|
|
i = i + 1;
|
|
END LOOP;
|
|
|
|
RETURN flow;
|
|
END;
|
|
$$ LANGUAGE plpgsql;
|
|
|
|
CREATE FUNCTION migrate_flow_module(module jsonb)
|
|
RETURNS jsonb
|
|
AS $$
|
|
BEGIN
|
|
IF module?'input_transform' AND module->'input_transform' != 'null'::jsonb THEN
|
|
module = JSONB_SET(module, ARRAY['input_transforms'], module->'input_transform')
|
|
- 'input_transform';
|
|
END IF;
|
|
|
|
IF module?'stop_after_if_expr' AND module->'stop_after_if_expr' != 'null'::jsonb THEN
|
|
IF NOT module?'stop_after_if' THEN
|
|
module = JSONB_SET(module, ARRAY['stop_after_if'], '{}'::jsonb);
|
|
END IF;
|
|
module = JSONB_SET(module, ARRAY['stop_after_if', 'expr'], module->'stop_after_if_expr')
|
|
- 'stop_after_if_expr';
|
|
END IF;
|
|
|
|
IF module?'skip_if_stopped' AND module->'skip_if_stopped' != 'null'::jsonb THEN
|
|
IF NOT module?'stop_after_if' THEN
|
|
module = JSONB_SET(module, ARRAY['stop_after_if'], '{}'::jsonb);
|
|
END IF;
|
|
module = JSONB_SET(module, ARRAY['stop_after_if', 'skip_if_stopped'], module->'skip_if_stopped')
|
|
- 'skip_if_stopped';
|
|
END IF;
|
|
|
|
if module->'value'->>'type' = 'forloopflow' THEN
|
|
module = JSONB_SET(module, ARRAY['value'], migrate_flow(module->'value'));
|
|
END IF;
|
|
|
|
RETURN module;
|
|
END;
|
|
$$ LANGUAGE plpgsql;
|
|
|
|
UPDATE flow SET value = migrate_flow(value);
|
|
|
|
DROP FUNCTION migrate_flow_module, migrate_flow;
|