defmodule BrightWeb.StreamController do use BrightWeb, :controller alias Bright.Streams alias Bright.Streams.Stream def index(conn, _params) do streams = Streams.list_streams() render(conn, :index, streams: streams) end def new(conn, _params) do changeset = Streams.change_stream(%Stream{}) render(conn, :new, changeset: changeset) end def create(conn, %{"stream" => stream_params}) do case Streams.create_stream(stream_params) do {:ok, stream} -> conn |> put_flash(:info, "Stream created successfully.") |> redirect(to: ~p"/streams/#{stream}") {:error, %Ecto.Changeset{} = changeset} -> render(conn, :new, changeset: changeset) end end def show(conn, %{"id" => id}) do stream = id |> Streams.get_stream!() |> Streams.inc_page_views() render(conn, :show, stream: stream) end def edit(conn, %{"id" => id}) do stream = Streams.get_stream!(id) changeset = Streams.change_stream(stream) render(conn, :edit, stream: stream, changeset: changeset) end def update(conn, %{"id" => id, "stream" => stream_params}) do stream = Streams.get_stream!(id) case Streams.update_stream(stream, stream_params) do {:ok, stream} -> conn |> put_flash(:info, "Stream updated successfully.") |> redirect(to: ~p"/streams/#{stream}") {:error, %Ecto.Changeset{} = changeset} -> render(conn, :edit, stream: stream, changeset: changeset) end end def delete(conn, %{"id" => id}) do stream = Streams.get_stream!(id) {:ok, _stream} = Streams.delete_stream(stream) conn |> put_flash(:info, "Stream deleted successfully.") |> redirect(to: ~p"/streams") end end