Skip to content

Commit 60fb93f

Browse files
committed
Send all users during PubSub to reduce db calls
1 parent 901120c commit 60fb93f

File tree

2 files changed

+9
-9
lines changed

2 files changed

+9
-9
lines changed

lib/password_example/user.ex

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,10 @@ defmodule PasswordExample.User do
1919
|> Repo.insert()
2020
end
2121

22+
def get_all do
23+
Repo.all(User)
24+
end
25+
2226
def get_by_name_and_password(name, password) do
2327
user = Repo.get_by(User, name: name)
2428
if valid_password?(user, password), do: user
@@ -84,6 +88,6 @@ defmodule PasswordExample.User do
8488
end
8589

8690
def users_changed do
87-
Phoenix.PubSub.broadcast(PasswordExample.PubSub, @topic, :changed)
91+
Phoenix.PubSub.broadcast(PasswordExample.PubSub, @topic, {:users_changed, get_all()})
8892
end
8993
end
Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,14 @@
11
defmodule PasswordExampleWeb.UsersTableComponent do
22
use PasswordExampleWeb, :live_component
3-
alias PasswordExample.{Repo, User}
3+
alias PasswordExample.User
44

55
@impl true
66
def mount(socket) do
77
if connected?(socket), do: User.subscribe()
8-
{:ok, assign(socket, users: get_all_users())}
8+
{:ok, assign(socket, users: User.get_all())}
99
end
1010

11-
def handle_info(:changed) do
12-
{:noreply, users: get_all_users()}
13-
end
14-
15-
defp get_all_users() do
16-
Repo.all(User)
11+
def handle_info({:users_changed, users}) do
12+
{:noreply, users: users}
1713
end
1814
end

0 commit comments

Comments
 (0)