Statistics: log Ash errors instead of returning 0/nil silently
This commit is contained in:
parent
e2c636fbf8
commit
c3b2abe380
1 changed files with 43 additions and 14 deletions
|
|
@ -10,6 +10,8 @@ defmodule Mv.Statistics do
|
||||||
require Ash.Query
|
require Ash.Query
|
||||||
import Ash.Expr
|
import Ash.Expr
|
||||||
|
|
||||||
|
require Logger
|
||||||
|
|
||||||
alias Mv.Membership.Member
|
alias Mv.Membership.Member
|
||||||
alias Mv.MembershipFees
|
alias Mv.MembershipFees
|
||||||
alias Mv.MembershipFees.MembershipFeeCycle
|
alias Mv.MembershipFees.MembershipFeeCycle
|
||||||
|
|
@ -30,9 +32,15 @@ defmodule Mv.Statistics do
|
||||||
|> Ash.Query.limit(1)
|
|> Ash.Query.limit(1)
|
||||||
|
|
||||||
case Ash.read_one(query, opts) do
|
case Ash.read_one(query, opts) do
|
||||||
{:ok, nil} -> nil
|
{:ok, nil} ->
|
||||||
{:ok, member} -> member.join_date.year
|
nil
|
||||||
{:error, _} -> nil
|
|
||||||
|
{:ok, member} ->
|
||||||
|
member.join_date.year
|
||||||
|
|
||||||
|
{:error, reason} ->
|
||||||
|
Logger.warning("Statistics.first_join_year failed: #{inspect(reason)}")
|
||||||
|
nil
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -46,8 +54,12 @@ defmodule Mv.Statistics do
|
||||||
|> Ash.Query.filter(expr(is_nil(exit_date)))
|
|> Ash.Query.filter(expr(is_nil(exit_date)))
|
||||||
|
|
||||||
case Ash.count(query, opts) do
|
case Ash.count(query, opts) do
|
||||||
{:ok, count} -> count
|
{:ok, count} ->
|
||||||
{:error, _} -> 0
|
count
|
||||||
|
|
||||||
|
{:error, reason} ->
|
||||||
|
Logger.warning("Statistics.active_member_count failed: #{inspect(reason)}")
|
||||||
|
0
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -61,8 +73,12 @@ defmodule Mv.Statistics do
|
||||||
|> Ash.Query.filter(expr(not is_nil(exit_date)))
|
|> Ash.Query.filter(expr(not is_nil(exit_date)))
|
||||||
|
|
||||||
case Ash.count(query, opts) do
|
case Ash.count(query, opts) do
|
||||||
{:ok, count} -> count
|
{:ok, count} ->
|
||||||
{:error, _} -> 0
|
count
|
||||||
|
|
||||||
|
{:error, reason} ->
|
||||||
|
Logger.warning("Statistics.inactive_member_count failed: #{inspect(reason)}")
|
||||||
|
0
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -79,8 +95,12 @@ defmodule Mv.Statistics do
|
||||||
|> Ash.Query.filter(expr(join_date >= ^first_day and join_date <= ^last_day))
|
|> Ash.Query.filter(expr(join_date >= ^first_day and join_date <= ^last_day))
|
||||||
|
|
||||||
case Ash.count(query, opts) do
|
case Ash.count(query, opts) do
|
||||||
{:ok, count} -> count
|
{:ok, count} ->
|
||||||
{:error, _} -> 0
|
count
|
||||||
|
|
||||||
|
{:error, reason} ->
|
||||||
|
Logger.warning("Statistics.joins_by_year failed: #{inspect(reason)}")
|
||||||
|
0
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -97,8 +117,12 @@ defmodule Mv.Statistics do
|
||||||
|> Ash.Query.filter(expr(exit_date >= ^first_day and exit_date <= ^last_day))
|
|> Ash.Query.filter(expr(exit_date >= ^first_day and exit_date <= ^last_day))
|
||||||
|
|
||||||
case Ash.count(query, opts) do
|
case Ash.count(query, opts) do
|
||||||
{:ok, count} -> count
|
{:ok, count} ->
|
||||||
{:error, _} -> 0
|
count
|
||||||
|
|
||||||
|
{:error, reason} ->
|
||||||
|
Logger.warning("Statistics.exits_by_year failed: #{inspect(reason)}")
|
||||||
|
0
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -129,8 +153,12 @@ defmodule Mv.Statistics do
|
||||||
|> Keyword.put(:domain, MembershipFees)
|
|> Keyword.put(:domain, MembershipFees)
|
||||||
|
|
||||||
case Ash.read(query, opts_for_read) do
|
case Ash.read(query, opts_for_read) do
|
||||||
{:ok, cycles} -> cycle_totals_from_cycles(cycles)
|
{:ok, cycles} ->
|
||||||
{:error, _} -> zero_cycle_totals()
|
cycle_totals_from_cycles(cycles)
|
||||||
|
|
||||||
|
{:error, reason} ->
|
||||||
|
Logger.warning("Statistics.cycle_totals_by_year failed: #{inspect(reason)}")
|
||||||
|
zero_cycle_totals()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -201,7 +229,8 @@ defmodule Mv.Statistics do
|
||||||
{:ok, cycles} ->
|
{:ok, cycles} ->
|
||||||
Enum.reduce(cycles, Decimal.new(0), fn c, acc -> Decimal.add(acc, c.amount) end)
|
Enum.reduce(cycles, Decimal.new(0), fn c, acc -> Decimal.add(acc, c.amount) end)
|
||||||
|
|
||||||
{:error, _} ->
|
{:error, reason} ->
|
||||||
|
Logger.warning("Statistics.open_amount_total failed: #{inspect(reason)}")
|
||||||
Decimal.new(0)
|
Decimal.new(0)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue