Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F41666708
refresh_counter_cache.ex
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Award Token
Flag For Later
Size
1 KB
Referenced Files
None
Subscribers
None
refresh_counter_cache.ex
View Options
# Pleroma: A lightweight social networking server
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only
defmodule
Mix.Tasks.Pleroma.RefreshCounterCache
do
@shortdoc
"Refreshes counter cache"
use
Mix.Task
alias
Pleroma.Activity
alias
Pleroma.CounterCache
alias
Pleroma.Repo
require
Logger
import
Ecto.Query
def
run
([])
do
Mix.Pleroma
.
start_pleroma
()
instances
=
Activity
|>
distinct
([
a
],
true
)
|>
select
([
a
],
fragment
(
"split_part(?, '/', 3)"
,
a
.
actor
))
|>
Repo
.
all
()
instances
|>
Enum
.
with_index
(
1
)
|>
Enum
.
each
(
fn
{
instance
,
i
}
->
counters
=
instance_counters
(
instance
)
CounterCache
.
set
(
instance
,
counters
)
Mix.Pleroma
.
shell_info
(
"[
#{
i
}
/
#{
length
(
instances
)
}
] Setting
#{
instance
}
counters:
#{
inspect
(
counters
)
}
"
)
end
)
Mix.Pleroma
.
shell_info
(
"Done"
)
end
defp
instance_counters
(
instance
)
do
counters
=
%{
"public"
=>
0
,
"unlisted"
=>
0
,
"private"
=>
0
,
"direct"
=>
0
}
Activity
|>
where
([
a
],
fragment
(
"(? ->> 'type'::text) = 'Create'"
,
a
.
data
))
|>
where
([
a
],
fragment
(
"split_part(?, '/', 3) = ?"
,
a
.
actor
,
^
instance
))
|>
select
(
[
a
],
{
fragment
(
"activity_visibility(?, ?, ?)"
,
a
.
actor
,
a
.
recipients
,
a
.
data
),
count
(
a
.
id
)}
)
|>
group_by
(
[
a
],
fragment
(
"activity_visibility(?, ?, ?)"
,
a
.
actor
,
a
.
recipients
,
a
.
data
)
)
|>
Repo
.
all
(
timeout
:
:timer
.
minutes
(
30
))
|>
Enum
.
reduce
(
counters
,
fn
{
visibility
,
count
},
acc
->
Map
.
put
(
acc
,
visibility
,
count
)
end
)
end
end
File Metadata
Details
Attached
Mime Type
text/x-ruby
Expires
Sun, Feb 15, 5:45 AM (13 h, 56 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
690142
Default Alt Text
refresh_counter_cache.ex (1 KB)
Attached To
Mode
rPUBE pleroma-upstream
Attached
Detach File
Event Timeline
Log In to Comment