From 706d55631b9619627c852e4c33cdf2150fbf1798 Mon Sep 17 00:00:00 2001 From: Bel LaPointe <153096461+breel-render@users.noreply.github.com> Date: Sun, 15 Dec 2024 13:50:27 -0700 Subject: [PATCH] games.UserByName --- cmd/server/games.go | 23 +++++++++++++++-------- cmd/server/games_test.go | 16 +++++++++++++--- cmd/server/usergameserver_test.go | 2 +- cmd/server/v1.go | 7 +------ 4 files changed, 30 insertions(+), 18 deletions(-) diff --git a/cmd/server/games.go b/cmd/server/games.go index f31997f..1135143 100644 --- a/cmd/server/games.go +++ b/cmd/server/games.go @@ -102,6 +102,19 @@ func (games Games) UserName(ctx context.Context, id string) (string, error) { return result, err } +func (games Games) UserByName(ctx context.Context, gid, name string) (string, error) { + result := "" + err := games.db.Query(ctx, func(rows *sql.Rows) error { + return rows.Scan(&result) + }, ` + SELECT users.uuid + FROM players + JOIN users ON players.user_uuid=users.uuid + WHERE players.game_uuid=? AND users.name=? + `, gid, name) + return result, err +} + func (a KillWord) Empty() bool { return a == (KillWord{}) } @@ -378,14 +391,8 @@ func (games Games) CreateGame(ctx context.Context, name string) (string, error) `, id, time.Now(), name) } -func (games Games) CreateEventPlayerJoin(ctx context.Context, id string, player, name string) error { - if err := games.db.Exec(ctx, ` - INSERT INTO users ( - uuid, - name - ) VALUES (?, ?) - ON CONFLICT DO UPDATE SET name=? WHERE uuid=?; - `, player, name, name, player); err != nil { +func (games Games) CreateEventPlayerJoin(ctx context.Context, id string, player string) error { + if _, err := games.UserName(ctx, player); err != nil { return err } if err := games.db.Exec(ctx, ` diff --git a/cmd/server/games_test.go b/cmd/server/games_test.go index 18733a2..971c945 100644 --- a/cmd/server/games_test.go +++ b/cmd/server/games_test.go @@ -56,7 +56,7 @@ func TestGames(t *testing.T) { t.Fatal("redundant create game didnt return same id:", id2) } - if err := games.CreateEventPlayerJoin(ctx, id, "p0", "player zero"); err != nil { + if err := games.CreateEventPlayerJoin(ctx, id, "p0"); err != nil { t.Fatal("err creating event player join:", err) } else if err := games.CreateEventPlayerLeave(ctx, id, "p0"); err != nil { t.Fatal("err creating event player leave:", err) @@ -64,12 +64,12 @@ func TestGames(t *testing.T) { for i := 0; i < 4; i++ { p := fmt.Sprintf("p%d", i+1) - if err := games.CreateEventPlayerJoin(ctx, id, p, "player "+p); err != nil { + if err := games.CreateEventPlayerJoin(ctx, id, p); err != nil { t.Fatal(p, "err creating event player join", err) } if name, err := games.UserName(ctx, p); err != nil { t.Fatal(p, "err getting user name", err) - } else if name != "player "+p { + } else if name == "" { t.Fatal("name wrong", name) } if err := games.UpdateUserName(ctx, p, "player! "+p); err != nil { @@ -402,5 +402,15 @@ func TestGenerateUserName(t *testing.T) { t.Fatal(name2) } + if err := games.CreateEventPlayerJoin(context.Background(), "gid", "id"); err != nil { + t.Fatal("err creating event player join:", err) + } + + if id, err := games.UserByName(context.Background(), "gid", name); err != nil { + t.Fatal("err getting user by name:", err) + } else if id != "id" { + t.Fatal("getting user by name yielded wrong id:", id) + } + t.Log(name) } diff --git a/cmd/server/usergameserver_test.go b/cmd/server/usergameserver_test.go index 9c81892..38df412 100644 --- a/cmd/server/usergameserver_test.go +++ b/cmd/server/usergameserver_test.go @@ -18,7 +18,7 @@ func TestUserGameServer(t *testing.T) { pids := []string{} for i := 0; i < 4; i++ { pid := fmt.Sprintf("p%d", i+1) - if err := games.CreateEventPlayerJoin(ctx, gid, pid, "player "+pid); err != nil { + if err := games.CreateEventPlayerJoin(ctx, gid, pid); err != nil { t.Fatal(err) } pids = append(pids, pid) diff --git a/cmd/server/v1.go b/cmd/server/v1.go index af46126..4496a98 100644 --- a/cmd/server/v1.go +++ b/cmd/server/v1.go @@ -46,11 +46,6 @@ func (s *S) serveV1(w http.ResponseWriter, r *http.Request) error { } func (s *S) serveV1PutParty(w http.ResponseWriter, r *http.Request) error { - userName, err := s.games.UserName(r.Context(), s.Session(r.Context()).ID) - if err != nil { - return err - } - party, err := io.ReadAll(r.Body) if err != nil { return err @@ -73,5 +68,5 @@ func (s *S) serveV1PutParty(w http.ResponseWriter, r *http.Request) error { if slices.Contains(games, gid) { return nil } - return s.games.CreateEventPlayerJoin(r.Context(), gid, s.Session(r.Context()).ID, userName) + return s.games.CreateEventPlayerJoin(r.Context(), gid, s.Session(r.Context()).ID) }