games.UserByName
parent
0b22ba4bd2
commit
706d55631b
|
|
@ -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, `
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue