Fix: save bot actions
This commit is contained in:
		| @@ -2725,7 +2725,6 @@ attendance | ||||
| present | ||||
| find | ||||
| lead | ||||
| wtv | ||||
| champion | ||||
| gasoline | ||||
| national | ||||
| @@ -2745,7 +2744,6 @@ excitement | ||||
| quote | ||||
| forehead | ||||
| wax | ||||
| mckinley | ||||
| television | ||||
| can | ||||
| voyage | ||||
| @@ -2834,7 +2832,6 @@ least | ||||
| boot | ||||
| alien | ||||
| employer | ||||
| viscosity | ||||
| theft | ||||
| wall | ||||
| vapor | ||||
| @@ -2847,7 +2844,6 @@ sovereign | ||||
| smoke | ||||
| fool | ||||
| intelligence | ||||
| indictment | ||||
| flame | ||||
| advance | ||||
| mud | ||||
| @@ -2980,7 +2976,6 @@ agent | ||||
| motel | ||||
| punishment | ||||
| lime | ||||
| magnification | ||||
| snap | ||||
| surgeon | ||||
| short | ||||
| @@ -3149,7 +3144,6 @@ cope | ||||
| law | ||||
| lap | ||||
| recommendation | ||||
| patrolman | ||||
| purple | ||||
| imagery | ||||
| offer | ||||
|   | ||||
| @@ -208,6 +208,8 @@ func notify(event, msg string) { | ||||
| } | ||||
|  | ||||
| func loadCards(room *models.Room) { | ||||
| 	// remove old cards | ||||
| 	room.Cards = []models.WordCard{} | ||||
| 	// store it somewhere | ||||
| 	wordMap := map[string]string{ | ||||
| 		"en": "assets/words/en_nouns.txt", | ||||
|   | ||||
| @@ -120,7 +120,7 @@ func HandleShowColor(w http.ResponseWriter, r *http.Request) { | ||||
| 		fi.Room.ClearMarks() | ||||
| 		StopTurnTimer(fi.Room.ID) | ||||
| 	case string(models.WordColorWhite), string(oppositeColor): | ||||
| 		log.Debug("opened opposite color word", "room", fi.Room, "opposite-color", oppositeColor) | ||||
| 		log.Debug("opened white or opposite color word", "word", word, "opposite-color", oppositeColor) | ||||
| 		// end turn | ||||
| 		fi.Room.TeamTurn = oppositeColor | ||||
| 		fi.Room.MimeDone = false | ||||
|   | ||||
| @@ -163,6 +163,7 @@ func HandleStartGame(w http.ResponseWriter, r *http.Request) { | ||||
| 			panic(r) | ||||
| 		} | ||||
| 	}() | ||||
| 	fi.Room.MimeDone = false | ||||
| 	fi.Room.IsRunning = true | ||||
| 	fi.Room.IsOver = false | ||||
| 	fi.Room.TeamTurn = "blue" | ||||
| @@ -179,13 +180,13 @@ func HandleStartGame(w http.ResponseWriter, r *http.Request) { | ||||
| 	} | ||||
| 	fi.Room.ActionHistory = append(fi.Room.ActionHistory, action) | ||||
| 	// Use the new context with transaction | ||||
| 	if err := saveFullInfo(ctx, fi); err != nil { | ||||
| 		if err := tx.Rollback(); err != nil { | ||||
| 			log.Error("failed to rollback transaction", "error", err) | ||||
| 		} | ||||
| 		abortWithError(w, err.Error()) | ||||
| 		return | ||||
| 	} | ||||
| 	// if err := saveFullInfo(ctx, fi); err != nil { | ||||
| 	// 	if err := tx.Rollback(); err != nil { | ||||
| 	// 		log.Error("failed to rollback transaction", "error", err) | ||||
| 	// 	} | ||||
| 	// 	abortWithError(w, err.Error()) | ||||
| 	// 	return | ||||
| 	// } | ||||
| 	// Save action history | ||||
| 	action.RoomID = fi.Room.ID | ||||
| 	action.CreatedAt = time.Now() | ||||
| @@ -209,14 +210,18 @@ func HandleStartGame(w http.ResponseWriter, r *http.Request) { | ||||
| 			return | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	if err := repo.RoomUpdate(ctx, fi.Room); err != nil { | ||||
| 		log.Error("failed to update room", "error", err) | ||||
| 		tx.Rollback() | ||||
| 		abortWithError(w, err.Error()) | ||||
| 		return | ||||
| 	} | ||||
| 	// Commit the transaction | ||||
| 	if err := tx.Commit(); err != nil { | ||||
| 		log.Error("failed to commit transaction", "error", err) | ||||
| 		abortWithError(w, err.Error()) | ||||
| 		return | ||||
| 	} | ||||
|  | ||||
| 	// reveal all cards | ||||
| 	if fi.State.Role == "mime" { | ||||
| 		fi.Room.MimeView() | ||||
|   | ||||
| @@ -152,7 +152,18 @@ func (b *Bot) checkGuess(word string, room *models.Room) error { | ||||
| 		} | ||||
| 		room.ActionHistory = append(room.ActionHistory, action) | ||||
| 	} | ||||
| 	if err := saveRoom(room); err != nil { | ||||
| 	ctx, tx, err := repo.InitTx(context.Background()) | ||||
| 	defer tx.Commit() | ||||
| 	if err != nil { | ||||
| 		b.log.Error("failed to init tx", "error", err) | ||||
| 	} | ||||
| 	if err := repo.ActionCreate(ctx, &action); err != nil { | ||||
| 		tx.Rollback() | ||||
| 		b.log.Error("failed to create action", "error", err, "action", action) | ||||
| 		return err | ||||
| 	} | ||||
| 	if err := repo.RoomUpdate(ctx, room); err != nil { | ||||
| 		tx.Rollback() | ||||
| 		b.log.Error("failed to save room", "room", room) | ||||
| 		err = fmt.Errorf("fn: checkGuess, failed to save room; err: %w", err) | ||||
| 		return err | ||||
| @@ -231,16 +242,15 @@ func (b *Bot) BotMove() { | ||||
| 			b.log.Warn("turn limit is 0", "mimeResp", mimeResp) | ||||
| 			room.ThisTurnLimit = 9 | ||||
| 		} | ||||
| 		if err := repo.ActionCreate(context.Background(), &action); err != nil { | ||||
| 			b.log.Error("failed to create action", "error", err) | ||||
| 			return | ||||
| 		} | ||||
| 		if err := saveRoom(room); err != nil { | ||||
| 			b.log.Error("failed to save room", "error", err) | ||||
| 			return | ||||
| 		} | ||||
| 	case models.UserRoleGuesser: | ||||
| 		// // deprecated | ||||
| 		// if err := b.checkGuesses(tempMap, room); err != nil { | ||||
| 		// 	b.log.Warn("failed to check guess", "mimeResp", tempMap, "bot_name", b.BotName) | ||||
| 		// 	continue | ||||
| 		// } | ||||
| 		guess, ok := tempMap["guess"].(string) | ||||
| 		if !ok || guess == "" { | ||||
| 			b.log.Warn("failed to parse guess", "mimeResp", tempMap, "bot_name", b.BotName) | ||||
|   | ||||
							
								
								
									
										3
									
								
								todos.md
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								todos.md
									
									
									
									
									
								
							| @@ -71,3 +71,6 @@ | ||||
| - card marks; + | ||||
| - on server recover relaunch guess timer if needed; | ||||
| - start new game: clear last clue; mimedone to false; unload old cards; | ||||
| - backlog shows white word with opposite color; | ||||
| - bot actions are not recorder; | ||||
| - bot recieves opp-color clue because of it ^; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Grail Finder
					Grail Finder