+ <.header>
+ Listing Items
+ <:actions>
+ <.button variant="primary" navigate={~p"/items/new"}>
+ <.icon name="hero-plus" /> New Item
+
+
+
+
+ <.table
+ id="items"
+ rows={@streams.items}
+ row_click={fn {_id, item} -> JS.navigate(~p"/items/#{item}") end}
+ >
+ <:col :let={{_id, item}} label="Name">{item.name}
+ <:col :let={{_id, item}} label="Description">{item.description}
+ <:col :let={{_id, item}} label="Info">{item.info}
+ <:col :let={{_id, item}} label="Amount">{item.amount}
+ <:col :let={{_id, item}} label="Factor">{item.factor}
+ <:col :let={{_id, item}} label="Type">{item.type}
+ <:action :let={{_id, item}}>
+
+ <.link navigate={~p"/items/#{item}"}>Show
+
+ <.link navigate={~p"/items/#{item}/edit"}>Edit
+
+ <:action :let={{id, item}}>
+ <.link
+ phx-click={JS.push("delete", value: %{id: item.id}) |> hide("##{id}")}
+ data-confirm="Are you sure?"
+ >
+ Delete
+
+
+
+
+ """
+ end
+
+ @impl true
+ def mount(_params, _session, socket) do
+ if connected?(socket) do
+ Items.subscribe_items(socket.assigns.current_scope)
+ end
+
+ {:ok,
+ socket
+ |> assign(:page_title, "Listing Items")
+ |> stream(:items, list_items(socket.assigns.current_scope))}
+ end
+
+ @impl true
+ def handle_event("delete", %{"id" => id}, socket) do
+ item = Items.get_item!(socket.assigns.current_scope, id)
+ {:ok, _} = Items.delete_item(socket.assigns.current_scope, item)
+
+ {:noreply, stream_delete(socket, :items, item)}
+ end
+
+ @impl true
+ def handle_info({type, %GenericRestServer.Items.Item{}}, socket)
+ when type in [:created, :updated, :deleted] do
+ {:noreply, stream(socket, :items, list_items(socket.assigns.current_scope), reset: true)}
+ end
+
+ defp list_items(current_scope) do
+ Items.list_items(current_scope)
+ end
+end
diff --git a/lib/generic_rest_server_web/live/item_live/show.ex b/lib/generic_rest_server_web/live/item_live/show.ex
new file mode 100644
index 0000000..5e906a4
--- /dev/null
+++ b/lib/generic_rest_server_web/live/item_live/show.ex
@@ -0,0 +1,69 @@
+defmodule GenericRestServerWeb.ItemLive.Show do
+ use GenericRestServerWeb, :live_view
+
+ alias GenericRestServer.Items
+
+ @impl true
+ def render(assigns) do
+ ~H"""
+