Skip to content

Commit 13086e6

Browse files
committed
fix: take community bounties into account in org-level queries
1 parent b0ffb52 commit 13086e6

File tree

2 files changed

+24
-17
lines changed

2 files changed

+24
-17
lines changed

lib/algora/accounts/accounts.ex

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -87,19 +87,23 @@ defmodule Algora.Accounts do
8787

8888
filter_org_id =
8989
if org_id = criteria[:org_id],
90-
do: dynamic([linked_transaction: lt], lt.user_id == ^org_id),
90+
do: dynamic([linked_transaction: ltx, repository: r], ltx.user_id == ^org_id or r.user_id == ^org_id),
9191
else: true
9292

9393
earnings_query =
94-
from t in Transaction,
95-
where: t.type == :credit and t.status == :succeeded,
96-
left_join: lt in assoc(t, :linked_transaction),
94+
from tx in Transaction,
95+
where: tx.type == :credit and tx.status == :succeeded,
96+
left_join: ltx in assoc(tx, :linked_transaction),
9797
as: :linked_transaction,
98+
left_join: b in assoc(tx, :bounty),
99+
left_join: t in assoc(b, :ticket),
100+
left_join: r in assoc(t, :repository),
101+
as: :repository,
98102
where: ^filter_org_id,
99-
group_by: t.user_id,
103+
group_by: tx.user_id,
100104
select: %{
101-
user_id: t.user_id,
102-
total_earned: sum(t.net_amount)
105+
user_id: tx.user_id,
106+
total_earned: sum(tx.net_amount)
103107
}
104108

105109
bounties_query =

lib/algora/bounties/bounties.ex

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -951,7 +951,7 @@ defmodule Algora.Bounties do
951951
from([b] in query, where: b.ticket_id == ^ticket_id)
952952

953953
{:owner_id, owner_id}, query ->
954-
from([b] in query, where: b.owner_id == ^owner_id)
954+
from([b, r: r] in query, where: b.owner_id == ^owner_id or r.user_id == ^owner_id)
955955

956956
{:status, status}, query ->
957957
from([b] in query, where: b.status == ^status)
@@ -1051,21 +1051,24 @@ defmodule Algora.Bounties do
10511051

10521052
open_bounties_query =
10531053
from b in Bounty,
1054-
join: u in assoc(b, :owner),
10551054
join: t in assoc(b, :ticket),
1056-
where: u.id == ^org_id,
1055+
left_join: r in assoc(t, :repository),
1056+
where: b.owner_id == ^org_id or r.user_id == ^org_id,
10571057
where: b.status == :open,
10581058
# TODO: persist state as separate field
10591059
where: fragment("(?->>'state' != 'closed')", t.provider_meta)
10601060

10611061
rewards_query =
1062-
from t in Transaction,
1063-
where: t.type == :credit,
1064-
where: t.status == :succeeded,
1065-
join: lt in assoc(t, :linked_transaction),
1066-
where: lt.type == :debit,
1067-
where: lt.status == :succeeded,
1068-
where: lt.user_id == ^org_id
1062+
from tx in Transaction,
1063+
where: tx.type == :credit,
1064+
where: tx.status == :succeeded,
1065+
join: ltx in assoc(tx, :linked_transaction),
1066+
left_join: b in assoc(tx, :bounty),
1067+
left_join: t in assoc(b, :ticket),
1068+
left_join: r in assoc(t, :repository),
1069+
where: ltx.type == :debit,
1070+
where: ltx.status == :succeeded,
1071+
where: ltx.user_id == ^org_id or r.user_id == ^org_id
10691072

10701073
rewarded_bounties_query = rewards_query |> where([t], not is_nil(t.bounty_id)) |> distinct(:bounty_id)
10711074
rewarded_tips_query = rewards_query |> where([t], not is_nil(t.tip_id)) |> distinct(:tip_id)

0 commit comments

Comments
 (0)