mirror of
https://github.com/danbee/chess
synced 2025-03-04 08:39:06 +00:00
Move opponents function to User module
This commit is contained in:
parent
b09cb26b85
commit
a50b12b0ea
@ -2,7 +2,10 @@ defmodule Chess.Store.User do
|
|||||||
@moduledoc false
|
@moduledoc false
|
||||||
|
|
||||||
use Ecto.Schema
|
use Ecto.Schema
|
||||||
|
|
||||||
import Ecto.Changeset
|
import Ecto.Changeset
|
||||||
|
import Ecto.Query
|
||||||
|
|
||||||
alias Comeonin.Argon2
|
alias Comeonin.Argon2
|
||||||
|
|
||||||
schema "users" do
|
schema "users" do
|
||||||
@ -26,6 +29,12 @@ defmodule Chess.Store.User do
|
|||||||
|> hash_password()
|
|> hash_password()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def opponents(user) do
|
||||||
|
from user in "users",
|
||||||
|
where: user.id != ^user.id,
|
||||||
|
select: {user.name, user.id}
|
||||||
|
end
|
||||||
|
|
||||||
defp hash_password(changeset) do
|
defp hash_password(changeset) do
|
||||||
password = get_change(changeset, :password)
|
password = get_change(changeset, :password)
|
||||||
if password do
|
if password do
|
||||||
|
|||||||
@ -2,11 +2,13 @@ defmodule ChessWeb.GameController do
|
|||||||
use ChessWeb, :controller
|
use ChessWeb, :controller
|
||||||
|
|
||||||
alias Chess.Store.Game
|
alias Chess.Store.Game
|
||||||
|
alias Chess.Store.User
|
||||||
|
|
||||||
import Chess.Auth, only: [current_user: 1]
|
import Chess.Auth, only: [current_user: 1]
|
||||||
|
|
||||||
def index(conn, _params) do
|
def index(conn, _params) do
|
||||||
changeset = Game.changeset(%Game{})
|
changeset = Game.changeset(%Game{})
|
||||||
|
|
||||||
games =
|
games =
|
||||||
conn
|
conn
|
||||||
|> current_user()
|
|> current_user()
|
||||||
@ -21,23 +23,22 @@ defmodule ChessWeb.GameController do
|
|||||||
|
|
||||||
def new(conn, _params) do
|
def new(conn, _params) do
|
||||||
changeset = Game.changeset(%Game{})
|
changeset = Game.changeset(%Game{})
|
||||||
|
|
||||||
opponents =
|
opponents =
|
||||||
conn
|
conn
|
||||||
|> current_user()
|
|> current_user()
|
||||||
|> get_opponents()
|
|> User.opponents()
|
||||||
|
|> Repo.all
|
||||||
|
|
||||||
conn
|
conn
|
||||||
|> render("new.html", changeset: changeset, opponents: opponents)
|
|> render("new.html", changeset: changeset, opponents: opponents)
|
||||||
end
|
end
|
||||||
|
|
||||||
def create(conn, %{"game" => %{"opponent_id" => opponent_id}}) do
|
def create(conn, %{"game" => %{"opponent_id" => opponent_id}}) do
|
||||||
changeset = Game.changeset(
|
changeset = Game.changeset(%Game{}, %{
|
||||||
%Game{},
|
user_id: current_user(conn).id,
|
||||||
%{
|
opponent_id: opponent_id
|
||||||
user_id: current_user(conn).id,
|
})
|
||||||
opponent_id: opponent_id
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
case Repo.insert(changeset) do
|
case Repo.insert(changeset) do
|
||||||
{:ok, game} ->
|
{:ok, game} ->
|
||||||
@ -46,7 +47,12 @@ defmodule ChessWeb.GameController do
|
|||||||
|> redirect(to: game_path(conn, :show, game))
|
|> redirect(to: game_path(conn, :show, game))
|
||||||
|
|
||||||
{:error, changeset} ->
|
{:error, changeset} ->
|
||||||
opponents = get_opponents(current_user(conn))
|
opponents =
|
||||||
|
conn
|
||||||
|
|> current_user()
|
||||||
|
|> User.opponents()
|
||||||
|
|> Repo.all
|
||||||
|
|
||||||
conn
|
conn
|
||||||
|> render("new.html", changeset: changeset, opponents: opponents)
|
|> render("new.html", changeset: changeset, opponents: opponents)
|
||||||
end
|
end
|
||||||
@ -58,6 +64,7 @@ defmodule ChessWeb.GameController do
|
|||||||
|> current_user()
|
|> current_user()
|
||||||
|> Game.for_user()
|
|> Game.for_user()
|
||||||
|> preload([:user, :opponent])
|
|> preload([:user, :opponent])
|
||||||
|
|
||||||
game =
|
game =
|
||||||
query
|
query
|
||||||
|> Repo.get!(id)
|
|> Repo.get!(id)
|
||||||
@ -77,13 +84,4 @@ defmodule ChessWeb.GameController do
|
|||||||
|> put_flash(:info, "Game deleted successfully.")
|
|> put_flash(:info, "Game deleted successfully.")
|
||||||
|> redirect(to: game_path(conn, :index))
|
|> redirect(to: game_path(conn, :index))
|
||||||
end
|
end
|
||||||
|
|
||||||
defp get_opponents(user) do
|
|
||||||
query = from user in "users",
|
|
||||||
where: user.id != ^user.id,
|
|
||||||
select: {user.name, user.id}
|
|
||||||
|
|
||||||
query
|
|
||||||
|> Repo.all
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user