diff options
| -rw-r--r-- | priv/repo/migrations/20191128153944_fix_missing_following_count.exs | 53 | 
1 files changed, 53 insertions, 0 deletions
diff --git a/priv/repo/migrations/20191128153944_fix_missing_following_count.exs b/priv/repo/migrations/20191128153944_fix_missing_following_count.exs new file mode 100644 index 000000000..3236de7a4 --- /dev/null +++ b/priv/repo/migrations/20191128153944_fix_missing_following_count.exs @@ -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  | 
