nodeinfo: report activeMonth and activeHalfyear users fields

This commit is contained in:
Alibek Omarov 2021-11-15 16:58:25 +01:00 committed by Gitea
parent 4d341f51e1
commit 04aca335aa
3 changed files with 12 additions and 7 deletions

View file

@ -2474,8 +2474,8 @@ defmodule Pleroma.User do
|> update_and_set_cache() |> update_and_set_cache()
end end
def active_user_count(weeks \\ 4) do def active_user_count(days \\ 30) do
active_after = Timex.shift(NaiveDateTime.utc_now(), weeks: -weeks) active_after = Timex.shift(NaiveDateTime.utc_now(), days: -days)
__MODULE__ __MODULE__
|> where([u], u.last_active_at >= ^active_after) |> where([u], u.last_active_at >= ^active_after)

View file

@ -35,7 +35,9 @@ defmodule Pleroma.Web.Nodeinfo.Nodeinfo do
openRegistrations: Config.get([:instance, :registrations_open]), openRegistrations: Config.get([:instance, :registrations_open]),
usage: %{ usage: %{
users: %{ users: %{
total: Map.get(stats, :user_count, 0) total: Map.get(stats, :user_count, 0),
activeMonth: Pleroma.User.active_user_count(30),
activeHalfyear: Pleroma.User.active_user_count(180)
}, },
localPosts: Map.get(stats, :status_count, 0) localPosts: Map.get(stats, :status_count, 0)
}, },

View file

@ -2410,13 +2410,16 @@ defmodule Pleroma.UserTest do
test "active_user_count/1" do test "active_user_count/1" do
insert(:user) insert(:user)
insert(:user, %{local: false}) insert(:user, %{local: false})
insert(:user, %{last_active_at: Timex.shift(NaiveDateTime.utc_now(), weeks: -5)})
insert(:user, %{last_active_at: Timex.shift(NaiveDateTime.utc_now(), weeks: -3)})
insert(:user, %{last_active_at: NaiveDateTime.utc_now()}) insert(:user, %{last_active_at: NaiveDateTime.utc_now()})
insert(:user, %{last_active_at: Timex.shift(NaiveDateTime.utc_now(), days: -15)})
insert(:user, %{last_active_at: Timex.shift(NaiveDateTime.utc_now(), weeks: -6)})
insert(:user, %{last_active_at: Timex.shift(NaiveDateTime.utc_now(), months: -7)})
insert(:user, %{last_active_at: Timex.shift(NaiveDateTime.utc_now(), years: -2)})
assert User.active_user_count() == 2 assert User.active_user_count() == 2
assert User.active_user_count(6) == 3 assert User.active_user_count(180) == 3
assert User.active_user_count(1) == 1 assert User.active_user_count(365) == 4
assert User.active_user_count(1000) == 5
end end
describe "pins" do describe "pins" do