From 75f5d2ad7f7a3c5c471235d4008f44ca967e6cc1 Mon Sep 17 00:00:00 2001 From: Rui Oliveira <70754369+ruioliveira02@users.noreply.github.com> Date: Sun, 27 Aug 2023 19:38:32 +0100 Subject: [PATCH] feat: add anonymize users task (#338) * Anonimize users * fix: suggestions --- lib/mix/tasks/anonymize_users.ex | 45 ++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 lib/mix/tasks/anonymize_users.ex diff --git a/lib/mix/tasks/anonymize_users.ex b/lib/mix/tasks/anonymize_users.ex new file mode 100644 index 000000000..115de95a4 --- /dev/null +++ b/lib/mix/tasks/anonymize_users.ex @@ -0,0 +1,45 @@ +defmodule Mix.Tasks.Anonymize.Users do + @moduledoc """ + Task to anonymize users + """ + use Mix.Task + import Ecto.Query, warn: false + + alias Safira.Accounts.{Attendee, User} + alias Safira.Repo + + def run(_args) do + Mix.Task.run("app.start") + users = Enum.shuffle(Repo.all(User)) + + for {user, index} <- Enum.with_index(users) do + anonymize_user(user, index + 1) + end + end + + defp anonymize_user(%User{} = user, index) do + attendee = + Attendee + |> where([a], a.user_id == ^user.id) + |> Repo.one() + + if not is_nil(attendee) do + attendee + |> Attendee.changeset(%{ + name: "Attendee #{index}", + nickname: "attendee#{index}", + avatar: nil, + cv: nil + }) + |> Repo.update!() + end + + user + |> User.changeset(%{ + email: "user#{index}@seium.org", + password: "password1234", + password_confirmation: "password1234" + }) + |> Repo.update!() + end +end