Feat: settings repo

This commit is contained in:
Grail Finder
2025-07-04 13:32:59 +03:00
parent 058d501774
commit 6be365473c
9 changed files with 72 additions and 19 deletions

View File

@ -28,19 +28,25 @@ func StartTurnTimer(roomID string, duration time.Duration) {
done := make(chan bool)
timers[roomID] = &roomTimer{ticker: ticker, done: done}
go func() {
settings, err := repo.SettingsGetByRoomID(context.Background(), roomID)
if err != nil {
log.Error("failed to get settings by room id", "error", err)
StopTurnTimer(roomID)
return
}
for {
select {
case <-done:
return
case <-ticker.C:
room, err := repo.RoomGetByID(context.Background(), roomID)
if err != nil {
log.Error("failed to get room by id", "error", err)
StopTurnTimer(roomID)
return
}
if room.Settings.TurnSecondsLeft <= 0 {
if settings.TurnSecondsLeft <= 0 {
log.Info("turn time is over", "room_id", roomID)
room, err := repo.RoomGetByID(context.Background(), roomID)
if err != nil {
log.Error("failed to get room by id", "error", err)
StopTurnTimer(roomID)
return
}
room.ChangeTurn()
room.MimeDone = false
if err := repo.RoomUpdate(context.Background(), room); err != nil {
@ -51,11 +57,11 @@ func StartTurnTimer(roomID string, duration time.Duration) {
StopTurnTimer(roomID)
return
}
room.Settings.TurnSecondsLeft--
// if err := saveRoom(room); err != nil {
// log.Error("failed to save room", "error", err)
// }
notify(models.NotifyRoomUpdatePrefix+room.ID, "")
settings.TurnSecondsLeft--
if err := repo.SettingsUpdate(context.Background(), settings); err != nil {
log.Error("failed to update settings", "error", err)
}
notify(models.NotifyRoomUpdatePrefix+roomID, "")
}
}
}()