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:
parent
7d31ebdc98
commit
66c2bf2817
@ -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
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user