games.UserByName

main
Bel LaPointe 2024-12-15 13:50:27 -07:00
parent 0b22ba4bd2
commit 706d55631b
4 changed files with 30 additions and 18 deletions

View File

@ -102,6 +102,19 @@ func (games Games) UserName(ctx context.Context, id string) (string, error) {
return result, err 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 { func (a KillWord) Empty() bool {
return a == (KillWord{}) return a == (KillWord{})
} }
@ -378,14 +391,8 @@ func (games Games) CreateGame(ctx context.Context, name string) (string, error)
`, id, time.Now(), name) `, id, time.Now(), name)
} }
func (games Games) CreateEventPlayerJoin(ctx context.Context, id string, player, name string) error { func (games Games) CreateEventPlayerJoin(ctx context.Context, id string, player string) error {
if err := games.db.Exec(ctx, ` if _, err := games.UserName(ctx, player); err != nil {
INSERT INTO users (
uuid,
name
) VALUES (?, ?)
ON CONFLICT DO UPDATE SET name=? WHERE uuid=?;
`, player, name, name, player); err != nil {
return err return err
} }
if err := games.db.Exec(ctx, ` if err := games.db.Exec(ctx, `

View File

@ -56,7 +56,7 @@ func TestGames(t *testing.T) {
t.Fatal("redundant create game didnt return same id:", id2) 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) t.Fatal("err creating event player join:", err)
} else if err := games.CreateEventPlayerLeave(ctx, id, "p0"); err != nil { } else if err := games.CreateEventPlayerLeave(ctx, id, "p0"); err != nil {
t.Fatal("err creating event player leave:", err) t.Fatal("err creating event player leave:", err)
@ -64,12 +64,12 @@ func TestGames(t *testing.T) {
for i := 0; i < 4; i++ { for i := 0; i < 4; i++ {
p := fmt.Sprintf("p%d", i+1) 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) t.Fatal(p, "err creating event player join", err)
} }
if name, err := games.UserName(ctx, p); err != nil { if name, err := games.UserName(ctx, p); err != nil {
t.Fatal(p, "err getting user name", err) t.Fatal(p, "err getting user name", err)
} else if name != "player "+p { } else if name == "" {
t.Fatal("name wrong", name) t.Fatal("name wrong", name)
} }
if err := games.UpdateUserName(ctx, p, "player! "+p); err != nil { if err := games.UpdateUserName(ctx, p, "player! "+p); err != nil {
@ -402,5 +402,15 @@ func TestGenerateUserName(t *testing.T) {
t.Fatal(name2) 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) t.Log(name)
} }

View File

@ -18,7 +18,7 @@ func TestUserGameServer(t *testing.T) {
pids := []string{} pids := []string{}
for i := 0; i < 4; i++ { for i := 0; i < 4; i++ {
pid := fmt.Sprintf("p%d", i+1) 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) t.Fatal(err)
} }
pids = append(pids, pid) pids = append(pids, pid)

View File

@ -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 { 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) party, err := io.ReadAll(r.Body)
if err != nil { if err != nil {
return err return err
@ -73,5 +68,5 @@ func (s *S) serveV1PutParty(w http.ResponseWriter, r *http.Request) error {
if slices.Contains(games, gid) { if slices.Contains(games, gid) {
return nil 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)
} }