Skip to content

Commit c66feca

Browse files
committed
feat: add Workspace.update_ticket_from_github/4
1 parent 2ee0519 commit c66feca

File tree

2 files changed

+16
-2
lines changed

2 files changed

+16
-2
lines changed

lib/algora/workspace/schemas/ticket.ex

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,11 @@ defmodule Algora.Workspace.Ticket do
3636
|> generate_id()
3737
end
3838

39-
def github_changeset(meta, repo) do
39+
def github_changeset(ticket \\ %Ticket{}, meta, repo) do
4040
params = %{
41+
provider: "github",
4142
provider_id: to_string(meta["id"]),
43+
provider_meta: meta,
4244
type: if(meta["pull_request"], do: :pull_request, else: :issue),
4345
title: meta["title"],
4446
description: meta["body"],
@@ -50,9 +52,11 @@ defmodule Algora.Workspace.Ticket do
5052
merged_at: get_in(meta, ["pull_request", "merged_at"])
5153
}
5254

53-
%Ticket{provider: "github", provider_meta: meta}
55+
ticket
5456
|> cast(params, [
57+
:provider,
5558
:provider_id,
59+
:provider_meta,
5660
:type,
5761
:title,
5862
:description,

lib/algora/workspace/workspace.ex

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,16 @@ defmodule Algora.Workspace do
110110
end
111111
end
112112

113+
def update_ticket_from_github(token, owner, repo, number) do
114+
with ticket when not is_nil(ticket) <- get_ticket(owner, repo, number),
115+
{:ok, issue} <- Github.get_issue(token, owner, repo, number),
116+
{:ok, repository} <- ensure_repository(token, owner, repo) do
117+
ticket
118+
|> Ticket.github_changeset(issue, repository)
119+
|> Repo.update()
120+
end
121+
end
122+
113123
def ensure_repository(token, owner, repo) do
114124
repository_query =
115125
from(r in Repository,

0 commit comments

Comments
 (0)