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

Refactor Game controller queries

This commit is contained in:
Daniel Barber 2018-02-21 22:30:44 -05:00
parent 7d31ebdc98
commit 66c2bf2817
Signed by: danbarber
GPG Key ID: 931D8112E0103DD8
3 changed files with 14 additions and 15 deletions

View File

@ -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

View File

@ -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)

View File

@ -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)