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
|
||||
|
||||
schema "games" do
|
||||
field :board, :map
|
||||
field :turn, :string
|
||||
field :board, :map, default: Board.default()
|
||||
field :turn, :string, default: "white"
|
||||
|
||||
belongs_to :user, Chess.Auth.User
|
||||
belongs_to :opponent, Chess.Auth.User, references: :id
|
||||
@ -20,16 +20,6 @@ defmodule Chess.Store.Game do
|
||||
timestamps()
|
||||
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
|
||||
struct
|
||||
|> cast(params, required_attrs())
|
||||
@ -53,8 +43,4 @@ defmodule Chess.Store.Game do
|
||||
end
|
||||
|
||||
defp required_attrs, do: ~w[board turn user_id opponent_id]a
|
||||
|
||||
defp default_turn do
|
||||
"white"
|
||||
end
|
||||
end
|
||||
|
||||
@ -31,7 +31,7 @@ defmodule ChessWeb.GameController do
|
||||
end
|
||||
|
||||
def create(conn, %{"game" => %{"opponent_id" => opponent_id}}) do
|
||||
changeset = Game.create_changeset(
|
||||
changeset = Game.changeset(
|
||||
%Game{},
|
||||
%{
|
||||
user_id: current_user(conn).id,
|
||||
|
||||
@ -40,7 +40,7 @@ defmodule Chess.GameTest do
|
||||
user = create_user("link", "ilovezelda")
|
||||
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)
|
||||
|
||||
refute changeset.valid?
|
||||
|
||||
@ -12,7 +12,7 @@ defmodule Chess.Factory do
|
||||
end
|
||||
|
||||
def create_game_for(user, opponent) do
|
||||
Game.create_changeset(
|
||||
Game.changeset(
|
||||
%Game{},
|
||||
%{user_id: user.id, opponent_id: opponent.id}
|
||||
)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user