43 lines
982 B
Elixir
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
|