From 66c2bf2817fc701cf1783d01ff62f6de1c38f09b Mon Sep 17 00:00:00 2001 From: Dan Barber Date: Wed, 21 Feb 2018 22:30:44 -0500 Subject: [PATCH] Refactor Game controller queries --- lib/chess/store/game.ex | 10 +++++----- lib/chess_web/controllers/api/game_controller.ex | 8 ++------ lib/chess_web/controllers/game_controller.ex | 11 +++++++---- 3 files changed, 14 insertions(+), 15 deletions(-) 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)