From 4bdf4c185fed389d3704fbfed093d723af53a1ae Mon Sep 17 00:00:00 2001 From: Sarah Vaupel Date: Sat, 21 May 2022 02:58:40 +0200 Subject: [PATCH] chore(workflows): partially fix archived migration --- src/Model/Migration/Definitions.hs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Model/Migration/Definitions.hs b/src/Model/Migration/Definitions.hs index a3fe8cda7..7ceffa67a 100644 --- a/src/Model/Migration/Definitions.hs +++ b/src/Model/Migration/Definitions.hs @@ -103,7 +103,7 @@ data ManualMigration | Migration20210208StudyFeaturesRelevanceCachedUUIDs | Migration20210318CrontabSubmissionRatedNotification | Migration20210608SeparateTermActive - | Migration20220519WorkflowArchivation + | Migration20220521WorkflowArchivation deriving (Eq, Ord, Read, Show, Enum, Bounded, Generic, Typeable) deriving anyclass (Universe, Finite) @@ -1067,17 +1067,17 @@ customMigrations = mapF $ \case ALTER TABLE "term" DROP COLUMN "active"; |] - Migration20220519WorkflowArchivation -> do + Migration20220521WorkflowArchivation -> do now <- liftIO getCurrentTime whenM (and2M (tableExists "workflow_workflow") $ not <$> columnExists "workflow_workflow" "archived") $ do [executeQQ| ALTER TABLE "workflow_workflow" ADD "archived" timestamp with time zone; |] mArchiveAfter <- lift $ view _appWorkflowWorkflowArchiveAfter - let getWorkflows = [queryQQ| SELECT "workflow_workflow"."id", "workflow_workflow".("state"->>-1)::json->'time', "workflow_workflow".("state"->>-1)::json->'to', "shared_workflow_graph"."graph"->'nodes' FROM "workflow_workflow" INNER JOIN "shared_workflow_graph" ON "workflow_workflow"."graph" = "shared_workflow_graph"."hash"; |] - migrateArchived [ fromPersistValue -> Right (wwId :: WorkflowWorkflowId), fromPersistValue -> Right (wpTime :: UTCTime), fromPersistValue -> Right (wpTo :: WorkflowGraphNodeLabel), fromPersistValue -> Right (wGraph :: DBWorkflowGraph) ] = maybeT (return ()) $ do + let getWorkflows = [queryQQ| SELECT "workflow_workflow"."id", "workflow_workflow"."state"->-1->'time', "workflow_workflow"."state"->-1->'to', "shared_workflow_graph"."graph" FROM "workflow_workflow" INNER JOIN "shared_workflow_graph" ON "workflow_workflow"."graph" = "shared_workflow_graph"."hash"; |] + migrateArchived [ fromPersistValue -> Right (wwId :: WorkflowWorkflowId), fromPersistValue -> Right wpTime, fromPersistValue -> Right wpTo, fromPersistValue -> Right (wGraph :: DBWorkflowGraph) ] = maybeT (return ()) $ do archiveAfter <- hoistMaybe mArchiveAfter WGN{wgnFinal} <- hoistMaybe . Map.lookup wpTo $ wgNodes wGraph let wwArchived = const (max now $ archiveAfter `addUTCTime` wpTime) <$> wgnFinal - lift [executeQQ| UPDATE workflow_workflow SET archived = #{wwArchived} WHERE id = #{wwId} |] + lift [executeQQ| UPDATE "workflow_workflow" SET "archived" = #{wwArchived} WHERE "id" = #{wwId}; |] migrateArchived _ = return () in runConduit $ getWorkflows .| C.mapM_ migrateArchived