1
0
mirror of https://github.com/danbee/chess synced 2025-03-04 08:39:06 +00:00

Make changeset function responsible for the move

This commit is contained in:
Daniel Barber 2018-05-04 22:41:27 +02:00
parent e831297fb8
commit caa68d41f8
Signed by: danbarber
GPG Key ID: 931D8112E0103DD8
3 changed files with 7 additions and 9 deletions

View File

@ -35,7 +35,11 @@ defmodule Chess.Store.Game do
|> foreign_key_constraint(:opponent_id) |> foreign_key_constraint(:opponent_id)
end end
def move_changeset(struct, params \\ %{}) do def move_changeset(struct, move_params) do
params = %{
board: Board.move_piece(struct.board, move_params),
}
struct struct
|> cast(params, required_attrs()) |> cast(params, required_attrs())
|> validate_king_in_check(struct, params) |> validate_king_in_check(struct, params)

View File

@ -38,11 +38,7 @@ defmodule ChessWeb.GameChannel do
|> Game.for_user_id() |> Game.for_user_id()
|> Repo.get!(socket.assigns.game_id) |> Repo.get!(socket.assigns.game_id)
changeset = Game.move_changeset( changeset = Game.move_changeset(game, move_params)
game, %{
board: Board.move_piece(game.board, move_params),
}
)
case Repo.update(changeset) do case Repo.update(changeset) do
{:ok, game} -> {:ok, game} ->

View File

@ -89,9 +89,7 @@ defmodule Chess.GameTest do
move_params = %{"from" => [4, 1], "to" => [4, 3]} move_params = %{"from" => [4, 1], "to" => [4, 3]}
changeset = Game.move_changeset(game, %{ changeset = Game.move_changeset(game, move_params)
board: Board.move_piece(game.board, move_params),
})
assert {:ok, new_game} = Repo.update(changeset) assert {:ok, new_game} = Repo.update(changeset)
assert new_game.turn == "black" assert new_game.turn == "black"