package main import ( "log" "time" "chessstars/internal/auth" "chessstars/internal/game" ) func startAuthCleaner(store *auth.Store) { ttl, err := time.ParseDuration(env("AUTH_CLEANUP_TTL", "60m")) if err != nil || ttl <= 0 { ttl = 60 * time.Minute } interval, err := time.ParseDuration(env("AUTH_CLEANUP_INTERVAL", "5m")) if err != nil || interval <= 0 { interval = 5 * time.Minute } go func() { ticker := time.NewTicker(interval) defer ticker.Stop() for range ticker.C { n, err := store.Cleanup(ttl) if err != nil { log.Printf("auth cleanup error: %v", err) continue } if n > 0 { log.Printf("auth cleanup: removed %d account(s) older than %s", n, ttl) } } }() } func startGameCleaner(manager *game.Manager) { finishedTTL, err := time.ParseDuration(env("GAME_CLEANUP_FINISHED_TTL", "30m")) if err != nil || finishedTTL <= 0 { finishedTTL = 30 * time.Minute } openTTL, err := time.ParseDuration(env("GAME_CLEANUP_OPEN_TTL", "60m")) if err != nil || openTTL <= 0 { openTTL = 60 * time.Minute } interval, err := time.ParseDuration(env("GAME_CLEANUP_INTERVAL", "5m")) if err != nil || interval <= 0 { interval = 5 * time.Minute } go func() { ticker := time.NewTicker(interval) defer ticker.Stop() for range ticker.C { n := manager.Cleanup(finishedTTL, openTTL) if n > 0 { log.Printf("game cleanup: removed %d game(s)", n) } } }() }