diff options
Diffstat (limited to 'priv/repo/migrations')
| -rw-r--r-- | priv/repo/migrations/20220905011454_generate_unset_user_keys.exs | 28 | 
1 files changed, 28 insertions, 0 deletions
| diff --git a/priv/repo/migrations/20220905011454_generate_unset_user_keys.exs b/priv/repo/migrations/20220905011454_generate_unset_user_keys.exs new file mode 100644 index 000000000..43bc7100b --- /dev/null +++ b/priv/repo/migrations/20220905011454_generate_unset_user_keys.exs @@ -0,0 +1,28 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Repo.Migrations.GenerateUnsetUserKeys do +  use Ecto.Migration +  import Ecto.Query +  alias Pleroma.Keys +  alias Pleroma.Repo +  alias Pleroma.User + +  def change do +    query = +      from(u in User, +        where: u.local == true, +        where: is_nil(u.keys), +        select: u +      ) + +    Repo.stream(query) +    |> Enum.each(fn user -> +      with {:ok, pem} <- Keys.generate_rsa_pem() do +        Ecto.Changeset.cast(user, %{keys: pem}, [:keys]) +        |> Repo.update() +      end +    end) +  end +end | 
