putzplan/lib/putzplan/pub_sub.ex

43 lines
982 B
Elixir

defmodule Putzplan.PubSub do
@tasks_topic "tasks"
def subscribe_completed(id) do
Phoenix.PubSub.subscribe(__MODULE__, get_topic(id))
end
def subscribe_tasks do
Phoenix.PubSub.subscribe(__MODULE__, @tasks_topic)
end
def upsert_task(task) do
Phoenix.PubSub.broadcast!(__MODULE__, @tasks_topic, {:upsert, task})
end
def delete_task(task) do
Phoenix.PubSub.broadcast!(__MODULE__, @tasks_topic, {:delete, task})
end
def update_task_by_id(id) do
Phoenix.PubSub.broadcast!(__MODULE__, @tasks_topic, {:update, id})
end
def upsert_completed_task(completed_task) do
Phoenix.PubSub.broadcast!(
__MODULE__,
get_topic(completed_task.tasks.id),
{:upsert, completed_task}
)
end
def delete_completed_task(completed_task) do
Phoenix.PubSub.broadcast!(
__MODULE__,
get_topic(completed_task.tasks.id),
{:delete, completed_task}
)
end
defp get_topic(id) do
"completed:" <> id
end
end