Skip to content

Commit

Permalink
character controller roughed out.
Browse files Browse the repository at this point in the history
  • Loading branch information
matthewphilyaw committed Feb 17, 2016
1 parent d90cf93 commit 558852b
Show file tree
Hide file tree
Showing 2 changed files with 65 additions and 0 deletions.
60 changes: 60 additions & 0 deletions web/controllers/character_controller.ex
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
defmodule Yggdrasil.CharacterController do
use Yggdrasil.Web, :controller

alias Yggdrasil.Character

def index(conn, %{"filter" => %{"user_id" => user_id}}) do
# this should not happen, but could easily
# probably don't need to crash but rather return an error
^user_id = conn.assigns.user

chars = Repo.all from c in Character,
where: c.user_id == ^user_id,
select: c

render conn, :show, data: chars
end

def show(conn, %{"char_id" => char_id}) do
user_id = conn.assigns.user

# returns nil if not found
# need to sort out what we want here.
char = Repo.one from c in Character,
where: c.id == ^char_id and c.user_id == ^user_id,
select: c

render conn, :show, data: char
end

def create(conn, %{"data" => %{"attributes" => attributes}}) do
char = Character.changeset(%Character{}, attributes)

case Repo.insert(char) do
{:ok, new_char} ->
render conn, :show, data: new_char
{:error, err_changeset} ->
render conn, :errors, data: err_changeset
end
end

def delete(conn, %{"char_id" => char_id}) do
user_id = conn.assigns.user

# returns nil if not found
# need to sort out what we want here.
char = Repo.one from c in Character,
where: c.id == ^char_id and c.user_id == ^user_id,
select: c

case Repo.delete(char)do
{:ok, _char} ->
# http://jsonapi.org/format/#crud-deleting
conn
|> put_status(204)
|> send_resp
{:error, err_changeset} ->
render conn, :errors, data: err_changeset
end
end
end
5 changes: 5 additions & 0 deletions web/router.ex
Original file line number Diff line number Diff line change
Expand Up @@ -38,5 +38,10 @@ defmodule Yggdrasil.Router do
pipe_through :guardian

get "/games", GameController, :index

get "/characters", CharacterController, :index
get "/characters/:char_id", CharacterController, :show
post "/characters", CharacterController, :create
delete "/characters/:char_id", CharacterController, :delete
end
end

0 comments on commit 558852b

Please sign in to comment.