54 lines
1 KiB
Elixir
54 lines
1 KiB
Elixir
|
defmodule Pleroma.Repo.Migrations.FixMissingFollowingCount do
|
||
|
use Ecto.Migration
|
||
|
|
||
|
def up do
|
||
|
"""
|
||
|
UPDATE
|
||
|
users
|
||
|
SET
|
||
|
following_count = sub.count
|
||
|
FROM
|
||
|
(
|
||
|
SELECT
|
||
|
users.id AS sub_id
|
||
|
,COUNT (following_relationships.id)
|
||
|
FROM
|
||
|
following_relationships
|
||
|
,users
|
||
|
WHERE
|
||
|
users.id = following_relationships.follower_id
|
||
|
AND following_relationships.state = 'accept'
|
||
|
GROUP BY
|
||
|
users.id
|
||
|
) AS sub
|
||
|
WHERE
|
||
|
users.id = sub.sub_id
|
||
|
AND users.local = TRUE
|
||
|
;
|
||
|
"""
|
||
|
|> execute()
|
||
|
|
||
|
"""
|
||
|
UPDATE
|
||
|
users
|
||
|
SET
|
||
|
following_count = 0
|
||
|
WHERE
|
||
|
following_count IS NULL
|
||
|
"""
|
||
|
|> execute()
|
||
|
|
||
|
execute("ALTER TABLE users
|
||
|
ALTER COLUMN following_count SET DEFAULT 0,
|
||
|
ALTER COLUMN following_count SET NOT NULL
|
||
|
")
|
||
|
end
|
||
|
|
||
|
def down do
|
||
|
execute("ALTER TABLE users
|
||
|
ALTER COLUMN following_count DROP DEFAULT,
|
||
|
ALTER COLUMN following_count DROP NOT NULL
|
||
|
")
|
||
|
end
|
||
|
end
|