summaryrefslogtreecommitdiff
path: root/priv/repo/migrations/20200406100225_users_add_emoji.exs
diff options
context:
space:
mode:
authorHaelwenn (lanodan) Monnier <contact@hacktivis.me>2020-04-03 13:03:32 +0200
committerHaelwenn (lanodan) Monnier <contact@hacktivis.me>2020-04-10 06:20:02 +0200
commit9172d719ccbf84d55236007d329fc880db69fe42 (patch)
tree2c0a21c074339edc6af99d7b72219fe27dcb50d9 /priv/repo/migrations/20200406100225_users_add_emoji.exs
parent62656ab259cec1a8585abecf45096b283fa4c60a (diff)
downloadpleroma-9172d719ccbf84d55236007d329fc880db69fe42.tar.gz
pleroma-9172d719ccbf84d55236007d329fc880db69fe42.zip
profile emojis in User.emoji instead of source_data
Diffstat (limited to 'priv/repo/migrations/20200406100225_users_add_emoji.exs')
-rw-r--r--priv/repo/migrations/20200406100225_users_add_emoji.exs35
1 files changed, 35 insertions, 0 deletions
diff --git a/priv/repo/migrations/20200406100225_users_add_emoji.exs b/priv/repo/migrations/20200406100225_users_add_emoji.exs
new file mode 100644
index 000000000..d0254c170
--- /dev/null
+++ b/priv/repo/migrations/20200406100225_users_add_emoji.exs
@@ -0,0 +1,35 @@
+defmodule Pleroma.Repo.Migrations.UsersPopulateEmoji do
+ use Ecto.Migration
+
+ import Ecto.Query
+
+ alias Pleroma.User
+ alias Pleroma.Repo
+
+ def up do
+ execute("ALTER TABLE users ALTER COLUMN emoji SET DEFAULT '{}'::jsonb")
+ execute("UPDATE users SET emoji = DEFAULT WHERE emoji = '[]'::jsonb")
+
+ from(u in User)
+ |> select([u], struct(u, [:id, :ap_id, :source_data]))
+ |> Repo.stream()
+ |> Enum.each(fn user ->
+ emoji =
+ user.source_data
+ |> Map.get("tag", [])
+ |> Enum.filter(fn %{"type" => t} -> t == "Emoji" end)
+ |> Enum.reduce(%{}, fn %{"icon" => %{"url" => url}, "name" => name}, acc ->
+ Map.put(acc, String.trim(name, ":"), url)
+ end)
+
+ user
+ |> Ecto.Changeset.cast(%{emoji: emoji}, [:emoji])
+ |> Repo.update()
+ end)
+ end
+
+ def down do
+ execute("ALTER TABLE users ALTER COLUMN emoji SET DEFAULT '[]'::jsonb")
+ execute("UPDATE users SET emoji = DEFAULT WHERE emoji = '{}'::jsonb")
+ end
+end