Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Pleroma
pleroma
Commits
0f722a8c
Commit
0f722a8c
authored
Jan 20, 2018
by
lain
Browse files
Stats: Make less crashy and improve query.
parent
2ed17541
Pipeline
#507
failed with stage
in 2 minutes and 30 seconds
Changes
1
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
lib/pleroma/stats.ex
View file @
0f722a8c
...
...
@@ -5,7 +5,7 @@ defmodule Pleroma.Stats do
def
start_link
do
agent
=
Agent
.
start_link
(
fn
->
{[],
%{}}
end
,
name:
__MODULE__
)
schedule_update
()
spawn
(
fn
->
schedule_update
()
end
)
agent
end
...
...
@@ -18,23 +18,22 @@ def get_peers do
end
def
schedule_update
do
update_stats
()
spawn
(
fn
->
Process
.
sleep
(
1000
*
60
*
60
*
1
)
# 1 hour
schedule_update
()
end
)
update_stats
()
end
def
update_stats
do
peers
=
from
(
u
in
Pleroma
.
User
,
select:
fragment
(
"?->'host'"
,
u
.
info
),
select:
fragment
(
"
distinct
?->'host'"
,
u
.
info
),
where:
u
.
local
!=
^
true
)
|>
Repo
.
all
()
|>
Enum
.
uniq
()
|>
Repo
.
all
()
domain_count
=
Enum
.
count
(
peers
)
status_query
=
from
p
in
Activity
,
where:
p
.
local
==
^
true
,
where:
fragment
(
"?->'object'->>'type' = ?"
,
p
.
data
,
^
"Note"
)
status_count
=
Repo
.
aggregate
(
status_query
,
:count
,
:id
)
status_query
=
from
(
u
in
User
.
local_user_query
,
select:
fragment
(
"sum((?->>'note_count')::int)"
,
u
.
info
))
status_count
=
Repo
.
one
(
status_query
)
|>
IO
.
inspect
user_count
=
Repo
.
aggregate
(
User
.
local_user_query
,
:count
,
:id
)
Agent
.
update
(
__MODULE__
,
fn
_
->
{
peers
,
%{
domain_count:
domain_count
,
status_count:
status_count
,
user_count:
user_count
}}
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment