diff --git a/lib/chess/store/game.ex b/lib/chess/store/game.ex index 2cac123..9fff0b5 100644 --- a/lib/chess/store/game.ex +++ b/lib/chess/store/game.ex @@ -8,6 +8,7 @@ defmodule Chess.Store.Game do import Ecto.Query alias Chess.Board + alias Chess.Store.Game schema "games" do field :board, :map @@ -34,11 +35,10 @@ defmodule Chess.Store.Game do |> validate_required([:board, :user_id, :opponent_id]) end - def for_user(query, user) do - query - |> where([game], user_id: ^user.id) - |> or_where([game], opponent_id: ^user.id) - |> preload([:user, :opponent]) + def for_user(user) do + from game in Game, + where: game.user_id == ^user.id, + or_where: game.opponent_id == ^user.id end def ordered(query) do diff --git a/lib/chess_web/controllers/api/game_controller.ex b/lib/chess_web/controllers/api/game_controller.ex index 77d899e..607952e 100644 --- a/lib/chess_web/controllers/api/game_controller.ex +++ b/lib/chess_web/controllers/api/game_controller.ex @@ -6,9 +6,7 @@ defmodule ChessWeb.Api.GameController do import Chess.Auth, only: [current_user: 1] def show(conn, %{"id" => id}) do - query = - from(game in Game, preload: [:user, :opponent]) - |> Game.for_user(current_user(conn)) + query = Game.for_user(current_user(conn)) game = query |> Repo.get!(id) @@ -17,9 +15,7 @@ defmodule ChessWeb.Api.GameController do end def update(conn, %{"id" => id, "move" => move_params}) do - query = - from(game in Game, preload: [:user, :opponent]) - |> Game.for_user(current_user(conn)) + query = Game.for_user(current_user(conn)) game = query |> Repo.get!(id) diff --git a/lib/chess_web/controllers/game_controller.ex b/lib/chess_web/controllers/game_controller.ex index b7e74a4..46b74f4 100644 --- a/lib/chess_web/controllers/game_controller.ex +++ b/lib/chess_web/controllers/game_controller.ex @@ -8,8 +8,9 @@ defmodule ChessWeb.GameController do def index(conn, _params) do changeset = Game.changeset(%Game{}) games = - Game - |> Game.for_user(current_user(conn)) + conn + |> current_user() + |> Game.for_user() |> Game.ordered |> Repo.all @@ -45,8 +46,10 @@ defmodule ChessWeb.GameController do def show(conn, %{"id" => id}) do query = - from(game in Game, preload: [:user, :opponent]) - |> Game.for_user(current_user(conn)) + conn + |> current_user() + |> Game.for_user() + |> preload([:user, :opponent]) game = query |> Repo.get!(id)