@@ -28,7 +28,14 @@ defmodule Lightning.ExportUtils do
2828 credential: [ :name , :owner ] ,
2929 workflow: [ :name , :jobs , :triggers , :edges ] ,
3030 job: [ :name , :adaptor , :credential , :globals , :body ] ,
31- trigger: [ :type , :cron_expression , :enabled , :kafka_configuration ] ,
31+ trigger: [
32+ :type ,
33+ :webhook_reply ,
34+ :cron_expression ,
35+ :cron_cursor_job ,
36+ :enabled ,
37+ :kafka_configuration
38+ ] ,
3239 edge: [
3340 :source_trigger ,
3441 :source_job ,
@@ -58,7 +65,7 @@ defmodule Lightning.ExportUtils do
5865
5966 % {
6067 # The identifier here for our YAML reducer will be the hyphenated name
61- id: hyphenate ( job . name ) ,
68+ id: job_key ( job ) ,
6269 name: job . name ,
6370 node_type: :job ,
6471 adaptor: job . adaptor ,
@@ -68,7 +75,7 @@ defmodule Lightning.ExportUtils do
6875 }
6976 end
7077
71- defp trigger_to_treenode ( trigger ) do
78+ defp trigger_to_treenode ( trigger , jobs ) do
7279 base = % {
7380 id: trigger . id ,
7481 enabled: trigger . enabled ,
@@ -79,7 +86,18 @@ defmodule Lightning.ExportUtils do
7986
8087 case trigger . type do
8188 :cron ->
82- Map . put ( base , :cron_expression , trigger . cron_expression )
89+ base
90+ |> Map . put ( :cron_expression , trigger . cron_expression )
91+ |> then ( fn cron ->
92+ if trigger . cron_cursor_job_id do
93+ cursor_job =
94+ Enum . find ( jobs , fn j -> j . id == trigger . cron_cursor_job_id end )
95+
96+ Map . put ( cron , :cron_cursor_job , cursor_job && job_key ( cursor_job ) )
97+ else
98+ cron
99+ end
100+ end )
83101
84102 :kafka ->
85103 kafka_config =
@@ -102,8 +120,12 @@ defmodule Lightning.ExportUtils do
102120
103121 Map . put ( base , :kafka_configuration , kafka_config )
104122
105- _ ->
106- base
123+ :webhook ->
124+ if trigger . webhook_reply do
125+ Map . put ( base , :webhook_reply , Atom . to_string ( trigger . webhook_reply ) )
126+ else
127+ base
128+ end
107129 end
108130 end
109131
@@ -113,7 +135,7 @@ defmodule Lightning.ExportUtils do
113135
114136 target_job = Enum . find ( jobs , fn j -> j . id == edge . target_job_id end )
115137 trigger_name = to_string ( source_trigger . type )
116- target_job_name = hyphenate ( target_job . name )
138+ target_job_name = job_key ( target_job )
117139
118140 % {
119141 name: "#{ trigger_name } ->#{ target_job_name } " ,
@@ -125,8 +147,8 @@ defmodule Lightning.ExportUtils do
125147 defp edge_to_treenode ( % { source_trigger_id: nil } = edge , _triggers , jobs ) do
126148 target_job = Enum . find ( jobs , fn j -> j . id == edge . target_job_id end )
127149 source_job = Enum . find ( jobs , fn j -> j . id == edge . source_job_id end )
128- source_job_name = hyphenate ( source_job . name )
129- target_job_name = hyphenate ( target_job . name )
150+ source_job_name = job_key ( source_job )
151+ target_job_name = job_key ( target_job )
130152
131153 % {
132154 name: "#{ source_job_name } ->#{ target_job_name } " ,
@@ -138,7 +160,7 @@ defmodule Lightning.ExportUtils do
138160 defp merge_edge_common_fields ( json , edge , target_job ) do
139161 json
140162 |> Map . merge ( % {
141- target_job: hyphenate ( target_job . name ) ,
163+ target_job: job_key ( target_job ) ,
142164 condition_type: edge . condition_type |> Atom . to_string ( ) ,
143165 enabled: edge . enabled ,
144166 node_type: :edge
@@ -348,6 +370,10 @@ defmodule Lightning.ExportUtils do
348370 }
349371 end
350372
373+ defp job_key ( job ) do
374+ hyphenate ( job . name )
375+ end
376+
351377 defp project_credential_key ( project_credential ) do
352378 hyphenate (
353379 "#{ project_credential . credential . user . email } #{ project_credential . credential . name } "
@@ -378,7 +404,7 @@ defmodule Lightning.ExportUtils do
378404 triggers =
379405 workflow . triggers
380406 |> Enum . sort_by ( & & 1 . inserted_at , NaiveDateTime )
381- |> Enum . map ( fn t -> trigger_to_treenode ( t ) end )
407+ |> Enum . map ( fn t -> trigger_to_treenode ( t , workflow . jobs ) end )
382408
383409 edges =
384410 workflow . edges
0 commit comments