Browse Source

Migrations: Set users.following_count to NOT NULL

Also set following_count for local users to the correct value and for remote
users to 0.
feature/compile_get
lain 4 years ago
parent
commit
f0bdbe3f61
1 changed files with 53 additions and 0 deletions
  1. +53
    -0
      priv/repo/migrations/20191128153944_fix_missing_following_count.exs

+ 53
- 0
priv/repo/migrations/20191128153944_fix_missing_following_count.exs View File

@@ -0,0 +1,53 @@
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

Loading…
Cancel
Save