@@ -8,6 +8,7 @@ defmodule CodeCorps.GitHub.Event.IssueComment do
88
99 alias CodeCorps . {
1010 Comment ,
11+ GithubRepo ,
1112 GitHub.Event.Common.RepoFinder ,
1213 GitHub.Event.Issues ,
1314 GitHub.Event.Issues.TaskSyncer ,
@@ -22,6 +23,7 @@ defmodule CodeCorps.GitHub.Event.IssueComment do
2223 { :error , :unexpected_action } |
2324 { :error , :unexpected_payload } |
2425 { :error , :repository_not_found } |
26+ { :error , :validation_error_on_inserting_issue_for_task } |
2527 { :error , :validation_error_on_inserting_user_for_task } |
2628 { :error , :multiple_github_users_matched_same_cc_user_for_task } |
2729 { :error , :validation_error_on_inserting_user_for_comment } |
@@ -60,12 +62,13 @@ defmodule CodeCorps.GitHub.Event.IssueComment do
6062 end
6163
6264 @ spec operational_multi ( map ) :: Multi . t
63- defp operational_multi ( % { "action" => action } = payload ) when action in ~w( created edited) do
65+ defp operational_multi ( % { "action" => action , "issue" => issue_payload } = payload ) when action in ~w( created edited) do
6466 Multi . new
6567 |> Multi . run ( :repo , fn _ -> RepoFinder . find_repo ( payload ) end )
66- |> Multi . run ( :issue_user , fn _ -> Issues.UserLinker . find_or_create_user ( payload ) end )
68+ |> Multi . run ( :issue , fn % { repo: % GithubRepo { } = github_repo } -> github_repo |> Issues.IssueLinker . create_or_update_issue ( issue_payload ) end )
69+ |> Multi . run ( :issue_user , fn % { issue: github_issue } -> github_issue |> Issues.UserLinker . find_or_create_user ( payload ) end )
6770 |> Multi . run ( :comment_user , fn _ -> IssueComment.UserLinker . find_or_create_user ( payload ) end )
68- |> Multi . run ( :tasks , fn % { repo: github_repo , issue_user: user } -> TaskSyncer . sync_all ( github_repo , user , payload ) end )
71+ |> Multi . run ( :tasks , fn % { issue: github_issue , issue_user: user } -> github_issue |> TaskSyncer . sync_all ( user , payload ) end )
6972 |> Multi . run ( :comments , fn % { tasks: tasks , comment_user: user } -> CommentSyncer . sync_all ( tasks , user , payload ) end )
7073 end
7174 defp operational_multi ( % { "action" => "deleted" } = payload ) do
@@ -80,6 +83,7 @@ defmodule CodeCorps.GitHub.Event.IssueComment do
8083 defp marshall_result ( { :error , :action , :unexpected_action , _steps } ) , do: { :error , :unexpected_action }
8184 defp marshall_result ( { :error , :repo , :unmatched_project , _steps } ) , do: { :ok , [ ] }
8285 defp marshall_result ( { :error , :repo , :unmatched_repository , _steps } ) , do: { :error , :repository_not_found }
86+ defp marshall_result ( { :error , :issue , % Ecto.Changeset { } , _steps } ) , do: { :error , :validation_error_on_inserting_issue_for_task }
8387 defp marshall_result ( { :error , :issue_user , % Ecto.Changeset { } , _steps } ) , do: { :error , :validation_error_on_inserting_user_for_task }
8488 defp marshall_result ( { :error , :issue_user , :multiple_users , _steps } ) , do: { :error , :multiple_github_users_matched_same_cc_user_for_task }
8589 defp marshall_result ( { :error , :comment_user , % Ecto.Changeset { } , _steps } ) , do: { :error , :validation_error_on_inserting_user_for_comment }
0 commit comments