mirror of
https://github.com/danbee/chess
synced 2025-03-04 08:39:06 +00:00
Better way of setting defaults
This commit is contained in:
parent
d982d19713
commit
a8bb242385
@ -11,8 +11,8 @@ defmodule Chess.Store.Game do
|
|||||||
alias Chess.Store.Game
|
alias Chess.Store.Game
|
||||||
|
|
||||||
schema "games" do
|
schema "games" do
|
||||||
field :board, :map
|
field :board, :map, default: Board.default()
|
||||||
field :turn, :string
|
field :turn, :string, default: "white"
|
||||||
|
|
||||||
belongs_to :user, Chess.Auth.User
|
belongs_to :user, Chess.Auth.User
|
||||||
belongs_to :opponent, Chess.Auth.User, references: :id
|
belongs_to :opponent, Chess.Auth.User, references: :id
|
||||||
@ -20,16 +20,6 @@ defmodule Chess.Store.Game do
|
|||||||
timestamps()
|
timestamps()
|
||||||
end
|
end
|
||||||
|
|
||||||
def create_changeset(struct, params \\ %{}) do
|
|
||||||
struct
|
|
||||||
|> cast(params, required_attrs())
|
|
||||||
|> foreign_key_constraint(:user_id)
|
|
||||||
|> foreign_key_constraint(:opponent_id)
|
|
||||||
|> put_change(:board, Board.default())
|
|
||||||
|> put_change(:turn, default_turn())
|
|
||||||
|> validate_required(required_attrs())
|
|
||||||
end
|
|
||||||
|
|
||||||
def changeset(struct, params \\ %{}) do
|
def changeset(struct, params \\ %{}) do
|
||||||
struct
|
struct
|
||||||
|> cast(params, required_attrs())
|
|> cast(params, required_attrs())
|
||||||
@ -53,8 +43,4 @@ defmodule Chess.Store.Game do
|
|||||||
end
|
end
|
||||||
|
|
||||||
defp required_attrs, do: ~w[board turn user_id opponent_id]a
|
defp required_attrs, do: ~w[board turn user_id opponent_id]a
|
||||||
|
|
||||||
defp default_turn do
|
|
||||||
"white"
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|||||||
@ -31,7 +31,7 @@ defmodule ChessWeb.GameController do
|
|||||||
end
|
end
|
||||||
|
|
||||||
def create(conn, %{"game" => %{"opponent_id" => opponent_id}}) do
|
def create(conn, %{"game" => %{"opponent_id" => opponent_id}}) do
|
||||||
changeset = Game.create_changeset(
|
changeset = Game.changeset(
|
||||||
%Game{},
|
%Game{},
|
||||||
%{
|
%{
|
||||||
user_id: current_user(conn).id,
|
user_id: current_user(conn).id,
|
||||||
|
|||||||
@ -40,7 +40,7 @@ defmodule Chess.GameTest do
|
|||||||
user = create_user("link", "ilovezelda")
|
user = create_user("link", "ilovezelda")
|
||||||
opponent = create_user("zelda", "ganonsucks")
|
opponent = create_user("zelda", "ganonsucks")
|
||||||
|
|
||||||
attrs = %{user_id: user.id, opponent_id: opponent.id}
|
attrs = %{board: nil, user_id: user.id, opponent_id: opponent.id}
|
||||||
changeset = Game.changeset(%Game{}, attrs)
|
changeset = Game.changeset(%Game{}, attrs)
|
||||||
|
|
||||||
refute changeset.valid?
|
refute changeset.valid?
|
||||||
|
|||||||
@ -12,7 +12,7 @@ defmodule Chess.Factory do
|
|||||||
end
|
end
|
||||||
|
|
||||||
def create_game_for(user, opponent) do
|
def create_game_for(user, opponent) do
|
||||||
Game.create_changeset(
|
Game.changeset(
|
||||||
%Game{},
|
%Game{},
|
||||||
%{user_id: user.id, opponent_id: opponent.id}
|
%{user_id: user.id, opponent_id: opponent.id}
|
||||||
)
|
)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user