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
|
import Ecto.Query
|
||||||
|
|
||||||
alias Chess.Board
|
alias Chess.Board
|
||||||
|
alias Chess.Store.Game
|
||||||
|
|
||||||
schema "games" do
|
schema "games" do
|
||||||
field :board, :map
|
field :board, :map
|
||||||
@ -34,11 +35,10 @@ defmodule Chess.Store.Game do
|
|||||||
|> validate_required([:board, :user_id, :opponent_id])
|
|> validate_required([:board, :user_id, :opponent_id])
|
||||||
end
|
end
|
||||||
|
|
||||||
def for_user(query, user) do
|
def for_user(user) do
|
||||||
query
|
from game in Game,
|
||||||
|> where([game], user_id: ^user.id)
|
where: game.user_id == ^user.id,
|
||||||
|> or_where([game], opponent_id: ^user.id)
|
or_where: game.opponent_id == ^user.id
|
||||||
|> preload([:user, :opponent])
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def ordered(query) do
|
def ordered(query) do
|
||||||
|
|||||||
@ -6,9 +6,7 @@ defmodule ChessWeb.Api.GameController do
|
|||||||
import Chess.Auth, only: [current_user: 1]
|
import Chess.Auth, only: [current_user: 1]
|
||||||
|
|
||||||
def show(conn, %{"id" => id}) do
|
def show(conn, %{"id" => id}) do
|
||||||
query =
|
query = Game.for_user(current_user(conn))
|
||||||
from(game in Game, preload: [:user, :opponent])
|
|
||||||
|> Game.for_user(current_user(conn))
|
|
||||||
game =
|
game =
|
||||||
query
|
query
|
||||||
|> Repo.get!(id)
|
|> Repo.get!(id)
|
||||||
@ -17,9 +15,7 @@ defmodule ChessWeb.Api.GameController do
|
|||||||
end
|
end
|
||||||
|
|
||||||
def update(conn, %{"id" => id, "move" => move_params}) do
|
def update(conn, %{"id" => id, "move" => move_params}) do
|
||||||
query =
|
query = Game.for_user(current_user(conn))
|
||||||
from(game in Game, preload: [:user, :opponent])
|
|
||||||
|> Game.for_user(current_user(conn))
|
|
||||||
game =
|
game =
|
||||||
query
|
query
|
||||||
|> Repo.get!(id)
|
|> Repo.get!(id)
|
||||||
|
|||||||
@ -8,8 +8,9 @@ defmodule ChessWeb.GameController do
|
|||||||
def index(conn, _params) do
|
def index(conn, _params) do
|
||||||
changeset = Game.changeset(%Game{})
|
changeset = Game.changeset(%Game{})
|
||||||
games =
|
games =
|
||||||
Game
|
conn
|
||||||
|> Game.for_user(current_user(conn))
|
|> current_user()
|
||||||
|
|> Game.for_user()
|
||||||
|> Game.ordered
|
|> Game.ordered
|
||||||
|> Repo.all
|
|> Repo.all
|
||||||
|
|
||||||
@ -45,8 +46,10 @@ defmodule ChessWeb.GameController do
|
|||||||
|
|
||||||
def show(conn, %{"id" => id}) do
|
def show(conn, %{"id" => id}) do
|
||||||
query =
|
query =
|
||||||
from(game in Game, preload: [:user, :opponent])
|
conn
|
||||||
|> Game.for_user(current_user(conn))
|
|> current_user()
|
||||||
|
|> Game.for_user()
|
||||||
|
|> preload([:user, :opponent])
|
||||||
game =
|
game =
|
||||||
query
|
query
|
||||||
|> Repo.get!(id)
|
|> Repo.get!(id)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user