Skip to content

Commit 2091676

Browse files
committed
add more tables, test helpers
add accounts test
1 parent 58ef2c5 commit 2091676

File tree

25 files changed

+186
-43
lines changed

25 files changed

+186
-43
lines changed

lib/algora/accounts/schemas/identity.ex

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ defmodule Algora.Accounts.Identity do
44

55
alias Algora.Accounts.Identity
66
alias Algora.Accounts.User
7+
alias Algora.Activities.Activity
78

89
@derive {Inspect, except: [:provider_token, :provider_meta]}
910
typed_schema "identities" do
@@ -15,10 +16,10 @@ defmodule Algora.Accounts.Identity do
1516
field :provider_id, :string
1617
field :provider_meta, :map
1718

18-
has_many :activities, {"identity_activities", Algora.Activities.Activity}, foreign_key: :assoc_id
19-
2019
belongs_to :user, User
2120

21+
has_many :activities, {"identity_activities", Activity}, foreign_key: :assoc_id, on_replace: :ignore
22+
2223
timestamps()
2324
end
2425

@@ -42,6 +43,7 @@ defmodule Algora.Accounts.Identity do
4243
:provider_name,
4344
:provider_id
4445
])
46+
|> Activity.put_activity(%Identity{}, %{type: :identity_created})
4547
|> generate_id()
4648
|> validate_required([:provider_token, :provider_email, :provider_name, :provider_id])
4749
|> validate_length(:provider_meta, max: 10_000)
@@ -68,6 +70,7 @@ defmodule Algora.Accounts.Identity do
6870
:provider_name,
6971
:provider_id
7072
])
73+
|> Activity.put_activity(%Identity{}, %{type: :identity_created})
7174
|> generate_id()
7275
|> validate_required([:provider_token, :provider_email, :provider_name, :provider_id])
7376
|> validate_length(:provider_meta, max: 10_000)

lib/algora/accounts/schemas/user.ex

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ defmodule Algora.Accounts.User do
44

55
alias Algora.Accounts.Identity
66
alias Algora.Accounts.User
7+
alias Algora.Activities.Activity
78
alias Algora.Bounties.Bounty
89
alias Algora.Contracts.Contract
910
alias Algora.MoneyUtils
@@ -85,7 +86,7 @@ defmodule Algora.Accounts.User do
8586
has_many :connected_installations, Installation, foreign_key: :connected_user_id
8687
has_many :contractor_contracts, Contract, foreign_key: :contractor_id
8788
has_many :client_contracts, Contract, foreign_key: :client_id
88-
has_many :activities, {"account_activities", Algora.Activities.Activity}, foreign_key: :assoc_id
89+
has_many :activities, {"user_activities", Activity}, foreign_key: :assoc_id, on_replace: :ignore
8990

9091
has_one :customer, Algora.Payments.Customer, foreign_key: :user_id
9192

lib/algora/activities/activities.ex

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,33 @@ defmodule Algora.Activities do
77
alias Algora.Repo
88

99
@tables [
10+
:identity_activities,
11+
:user_activities,
12+
:attempt_activities,
13+
:bonus_activities,
14+
:bounty_activities,
15+
:claim_activities,
16+
# :prize_pool_activities,
17+
:tip_activities,
18+
:message_activities,
19+
# :participant_activities,
20+
:thread_activities,
21+
# :comment_cursor_activities,
22+
:contract_activities,
23+
:timesheet_activities,
24+
# :event_cursor_activities,
25+
# :member_activities,
26+
# :org_activities,
1027
:account_activities,
11-
:contract_activities
28+
:customer_activities,
29+
:payment_method_activities,
30+
:platform_transaction_activities,
31+
# :transaction_activities,
32+
:project_activities,
33+
:review_activities,
34+
:installation_activities,
35+
:repository_activities,
36+
:ticket_activities
1237
]
1338

1439
def base_query do
@@ -52,7 +77,10 @@ defmodule Algora.Activities do
5277
end
5378

5479
def all(target) when is_map(target) do
55-
Repo.all(Ecto.assoc(target, :activities))
80+
target
81+
|> Ecto.assoc(:activities)
82+
|> order_by(desc: :inserted_at)
83+
|> Repo.all()
5684
end
5785

5886
def all do

lib/algora/activities/schemas/activity.ex

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ defmodule Algora.Activities.Activity do
1313
transaction_created
1414
transaction_failed
1515
transaction_processed
16+
17+
identity_created
1618
}a
1719

1820
typed_schema "activities" do

lib/algora/bounties/schemas/attempt.ex

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,14 @@ defmodule Algora.Bounties.Attempt do
22
@moduledoc false
33
use Algora.Schema
44

5+
alias Algora.Activities.Activity
6+
57
typed_schema "attempts" do
68
belongs_to :bounty, Algora.Bounties.Bounty
79
belongs_to :user, Algora.Accounts.User
810

11+
has_many :activities, {"attempt_activities", Activity}, foreign_key: :assoc_id, on_replace: :ignore
12+
913
timestamps()
1014
end
1115

lib/algora/bounties/schemas/bonus.ex

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,14 @@ defmodule Algora.Bounties.Bonus do
22
@moduledoc false
33
use Algora.Schema
44

5+
alias Algora.Activities.Activity
6+
57
typed_schema "bonuses" do
68
belongs_to :bounty, Algora.Bounties.Bounty
79
belongs_to :user, Algora.Accounts.User
810

11+
has_many :activities, {"bonus_activities", Algora.Activities.Activity}, foreign_key: :assoc_id
12+
913
timestamps()
1014
end
1115

lib/algora/bounties/schemas/bounty.ex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ defmodule Algora.Bounties.Bounty do
33
use Algora.Schema
44

55
alias Algora.Accounts.User
6+
alias Algora.Activities.Activity
67
alias Algora.Bounties.Bounty
78
alias Algora.Payments.Transaction
89

lib/algora/bounties/schemas/claim.ex

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ defmodule Algora.Bounties.Claim do
22
@moduledoc false
33
use Algora.Schema
44

5+
alias Algora.Activities.Activity
56
alias Algora.Bounties.Claim
67

78
@derive {Inspect, except: [:provider_meta]}
@@ -29,6 +30,8 @@ defmodule Algora.Bounties.Claim do
2930
belongs_to :user, Algora.Accounts.User
3031
# has_one :transaction, Algora.Payments.Transaction
3132

33+
has_many :activities, {"claim_activities", Activity}, foreign_key: :assoc_id, on_replace: :ignore
34+
3235
timestamps()
3336
end
3437

lib/algora/bounties/schemas/tip.ex

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ defmodule Algora.Bounties.Tip do
33
use Algora.Schema
44

55
alias Algora.Accounts.User
6+
alias Algora.Activities.Activity
67

78
typed_schema "tips" do
89
field :amount, Algora.Types.Money
@@ -14,6 +15,8 @@ defmodule Algora.Bounties.Tip do
1415
belongs_to :recipient, User
1516
has_many :transactions, Algora.Payments.Transaction
1617

18+
has_many :activities, {"tip_activities", Activity}, foreign_key: :assoc_id, on_replace: :ignore
19+
1720
timestamps()
1821
end
1922

lib/algora/chat/schemas/message.ex

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,16 @@ defmodule Algora.Chat.Message do
22
@moduledoc false
33
use Algora.Schema
44

5+
alias Algora.Activities.Activity
6+
57
typed_schema "messages" do
68
field :content, :string
79

810
belongs_to :thread, Algora.Chat.Thread
911
belongs_to :sender, Algora.Accounts.User
1012

13+
has_many :activities, {"message_activities", Activity}, foreign_key: :assoc_id, on_replace: :ignore
14+
1115
timestamps()
1216
end
1317

0 commit comments

Comments
 (0)