diff options
Diffstat (limited to 'lib/chessh/schema/game.ex')
-rw-r--r-- | lib/chessh/schema/game.ex | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/lib/chessh/schema/game.ex b/lib/chessh/schema/game.ex new file mode 100644 index 0000000..b6ff327 --- /dev/null +++ b/lib/chessh/schema/game.ex @@ -0,0 +1,32 @@ +defmodule Chessh.Game do + alias Chessh.Player + use Ecto.Schema + import Ecto.Changeset + + schema "games" do + field(:fen, :string) + field(:moves, :integer, default: 0) + + field(:turn, Ecto.Enum, values: [:light, :dark], default: :light) + field(:winner, Ecto.Enum, values: [:light, :dark, :none], default: :none) + field(:status, Ecto.Enum, values: [:continue, :draw, :winner], default: :continue) + + belongs_to(:light_player, Player, foreign_key: :light_player_id) + belongs_to(:dark_player, Player, foreign_key: :dark_player_id) + + timestamps() + end + + def changeset(game, attrs) do + game + |> cast(attrs, [ + :fen, + :moves, + :turn, + :winner, + :status, + :light_player_id, + :dark_player_id + ]) + end +end |