mirror of
https://github.com/danbee/chess
synced 2025-03-04 08:39:06 +00:00
Use a changeset for inserting moves
This commit is contained in:
parent
e319dda506
commit
c5885cc76c
@ -6,6 +6,7 @@ defmodule Chess.Moves do
|
|||||||
alias Chess.Repo
|
alias Chess.Repo
|
||||||
alias Chess.Board
|
alias Chess.Board
|
||||||
alias Chess.Store.Game
|
alias Chess.Store.Game
|
||||||
|
alias Chess.Store.Move
|
||||||
|
|
||||||
alias Chess.Moves.Pieces.Pawn
|
alias Chess.Moves.Pieces.Pawn
|
||||||
alias Chess.Moves.Pieces.Bishop
|
alias Chess.Moves.Pieces.Bishop
|
||||||
@ -21,7 +22,7 @@ defmodule Chess.Moves do
|
|||||||
|
|
||||||
Multi.new
|
Multi.new
|
||||||
|> Multi.update(:game, Game.move_changeset(game, params))
|
|> Multi.update(:game, Game.move_changeset(game, params))
|
||||||
|> Multi.insert(:move, Ecto.build_assoc(game, :moves, params))
|
|> Multi.insert(:move, Move.changeset(%Move{game_id: game.id}, params))
|
||||||
|> Repo.transaction
|
|> Repo.transaction
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@ -22,7 +22,7 @@ defmodule Chess.Store.Move do
|
|||||||
|
|
||||||
def changeset(struct, params \\ %{}) do
|
def changeset(struct, params \\ %{}) do
|
||||||
struct
|
struct
|
||||||
|> cast(params, required_attrs())
|
|> cast(params, permitted_attrs())
|
||||||
|> validate_required(required_attrs())
|
|> validate_required(required_attrs())
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -36,5 +36,7 @@ defmodule Chess.Store.Move do
|
|||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
defp permitted_attrs, do: ~w[game_id from to piece piece_captured]a
|
||||||
|
|
||||||
defp required_attrs, do: ~w[game_id from to piece]a
|
defp required_attrs, do: ~w[game_id from to piece]a
|
||||||
end
|
end
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user