Skip to content

Commit 507cd67

Browse files
authored
fix: transform mapping for trigger data (wraft#177)
1 parent 014e6e6 commit 507cd67

3 files changed

Lines changed: 43 additions & 7 deletions

File tree

lib/wraft_doc/forms/forms.ex

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -615,6 +615,26 @@ defmodule WraftDoc.Forms do
615615
end)
616616
end
617617

618+
@spec transform_trigger_data_by_mapping(FormMapping.t(), map()) :: map() | {:error, String.t()}
619+
def transform_trigger_data_by_mapping(
620+
%FormMapping{mapping: mappings} = _form_mapping,
621+
data
622+
) do
623+
mappings
624+
|> transform_mappings
625+
|> transform_trigger_data(data)
626+
|> Enum.into(%{})
627+
end
628+
629+
defp transform_trigger_data(mappings, data) do
630+
Enum.flat_map(mappings, fn {content_type_field_name, form_field_name} ->
631+
case Map.get(data, form_field_name) do
632+
nil -> []
633+
value -> [{content_type_field_name, value}]
634+
end
635+
end)
636+
end
637+
618638
@doc """
619639
Align form fields
620640
"""

lib/wraft_doc/logic_pipeline/pipeline_runner.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ defmodule WraftDoc.PipelineRunner do
7272
try do
7373
transformed_data =
7474
case data["trigger_type"] do
75-
"webhook" -> data
75+
"webhook" -> Forms.transform_trigger_data_by_mapping(form_mapping, data)
7676
_ -> Forms.transform_data_by_mapping(form_mapping, data)
7777
end
7878

lib/wraft_doc/workers/bulk_worker.ex

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,11 @@ defmodule WraftDoc.Workers.BulkWorker do
106106
@spec handle_exceptions(tuple(), User.t()) :: any()
107107
defp handle_exceptions(
108108
{:error,
109-
%PipelineError{error: :form_mapping_not_complete, input: trigger, stage: stage}},
109+
%PipelineError{
110+
error: :form_mapping_not_complete,
111+
input: %{trigger: trigger},
112+
stage: stage
113+
}},
110114
_current_user
111115
) do
112116
state = TriggerHistory.states()[:failed]
@@ -140,7 +144,8 @@ defmodule WraftDoc.Workers.BulkWorker do
140144
end
141145

142146
defp handle_exceptions(
143-
{:error, %PipelineError{error: :pipeline_not_found, input: trigger, stage: stage}},
147+
{:error,
148+
%PipelineError{error: :pipeline_not_found, input: %{trigger: trigger}, stage: stage}},
144149
_current_user
145150
) do
146151
state = TriggerHistory.states()[:failed]
@@ -175,7 +180,8 @@ defmodule WraftDoc.Workers.BulkWorker do
175180
end
176181

177182
defp handle_exceptions(
178-
{:error, %PipelineError{error: :instance_failed, input: trigger, stage: stage}},
183+
{:error,
184+
%PipelineError{error: :instance_failed, input: %{trigger: trigger}, stage: stage}},
179185
_current_user
180186
) do
181187
state = TriggerHistory.states()[:failed]
@@ -210,7 +216,11 @@ defmodule WraftDoc.Workers.BulkWorker do
210216

211217
defp handle_exceptions(
212218
{:error,
213-
%PipelineError{error: %DownloadError{message: message}, input: trigger, stage: stage}},
219+
%PipelineError{
220+
error: %DownloadError{message: message},
221+
input: %{trigger: trigger},
222+
stage: stage
223+
}},
214224
_current_user
215225
) do
216226
state = TriggerHistory.states()[:failed]
@@ -245,7 +255,11 @@ defmodule WraftDoc.Workers.BulkWorker do
245255

246256
defp handle_exceptions(
247257
{:error,
248-
%PipelineError{error: %InvalidJsonError{message: message}, input: trigger, stage: stage}},
258+
%PipelineError{
259+
error: %InvalidJsonError{message: message},
260+
input: %{trigger: trigger},
261+
stage: stage
262+
}},
249263
_current_user
250264
) do
251265
state = TriggerHistory.states()[:failed]
@@ -400,7 +414,7 @@ defmodule WraftDoc.Workers.BulkWorker do
400414
end
401415

402416
defp handle_exceptions(
403-
{:error, %PipelineError{error: e, input: trigger, stage: stage}},
417+
{:error, %PipelineError{error: e, input: %{trigger: trigger}, stage: stage}},
404418
_current_user
405419
) do
406420
state = TriggerHistory.states()[:failed]
@@ -413,6 +427,8 @@ defmodule WraftDoc.Workers.BulkWorker do
413427
message: msg,
414428
stage: stage
415429
})
430+
431+
trigger
416432
end
417433

418434
# Update state and error of a trigger history

0 commit comments

Comments
 (0)