- @spec multi_set_unread_count(Multi.t(), User.t(), String.t()) :: Multi.t()
- def multi_set_unread_count(multi, %User{} = user, "notifications") do
- multi
- |> Multi.run(:counters, fn _repo, _changes ->
- {:ok, Repo.one(Pleroma.Notification.notifications_info_query(user))}
- end)
- |> Multi.insert(
- :marker,
- fn %{counters: attrs} ->
- Marker
- |> struct(attrs)
- |> Ecto.Changeset.change()
- end,
- returning: true,
- on_conflict: {:replace, [:last_read_id, :unread_count]},
- conflict_target: [:user_id, :timeline]
- )
- end
-
- def multi_set_unread_count(multi, _, _), do: multi
-