Enha: bot names avoid collision
This commit is contained in:
@ -294,7 +294,14 @@ func HandleAddBot(w http.ResponseWriter, r *http.Request) {
|
|||||||
abortWithError(w, err.Error())
|
abortWithError(w, err.Error())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
botname := fmt.Sprintf("bot_%d", len(llmapi.SignalChanMap)+1) // what if many rooms?
|
var botname string
|
||||||
|
maxID, err := repo.PlayerGetMaxID(r.Context())
|
||||||
|
if err != nil {
|
||||||
|
log.Warn("failed to get players max id")
|
||||||
|
botname = fmt.Sprintf("bot_%d", len(llmapi.SignalChanMap)+1) // what if many rooms?
|
||||||
|
} else {
|
||||||
|
botname = fmt.Sprintf("bot_%d", maxID+1) // what if many rooms?
|
||||||
|
}
|
||||||
_, err = llmapi.NewBot(role, team, botname, fi.Room.ID, cfg, false)
|
_, err = llmapi.NewBot(role, team, botname, fi.Room.ID, cfg, false)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
abortWithError(w, err.Error())
|
abortWithError(w, err.Error())
|
||||||
|
@ -19,6 +19,7 @@ type PlayersRepo interface {
|
|||||||
PlayerList(ctx context.Context, isBot bool) ([]models.Player, error)
|
PlayerList(ctx context.Context, isBot bool) ([]models.Player, error)
|
||||||
PlayerListAll(ctx context.Context) ([]models.Player, error)
|
PlayerListAll(ctx context.Context) ([]models.Player, error)
|
||||||
PlayerListByRoom(ctx context.Context, roomID string) ([]models.Player, error)
|
PlayerListByRoom(ctx context.Context, roomID string) ([]models.Player, error)
|
||||||
|
PlayerGetMaxID(ctx context.Context) (uint32, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *RepoProvider) PlayerListNames(ctx context.Context) ([]string, error) {
|
func (p *RepoProvider) PlayerListNames(ctx context.Context) ([]string, error) {
|
||||||
@ -96,6 +97,15 @@ func (p *RepoProvider) PlayerList(ctx context.Context, isBot bool) ([]models.Pla
|
|||||||
return players, nil
|
return players, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (p *RepoProvider) PlayerGetMaxID(ctx context.Context) (uint32, error) {
|
||||||
|
var maxID uint32
|
||||||
|
err := sqlx.GetContext(ctx, p.DB, &maxID, "SELECT COALESCE(MAX(id), 0) FROM players")
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
return maxID, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (p *RepoProvider) PlayerListAll(ctx context.Context) ([]models.Player, error) {
|
func (p *RepoProvider) PlayerListAll(ctx context.Context) ([]models.Player, error) {
|
||||||
var players []models.Player
|
var players []models.Player
|
||||||
query := "SELECT id, room_id, username, team, role, is_bot FROM players;"
|
query := "SELECT id, room_id, username, team, role, is_bot FROM players;"
|
||||||
|
Reference in New Issue
Block a user