diff --git a/server/db.go b/server/db.go index 66d2ea5..bfad818 100644 --- a/server/db.go +++ b/server/db.go @@ -5,6 +5,7 @@ import ( "fmt" "log" "os" + "time" _ "github.com/go-sql-driver/mysql" ) @@ -23,7 +24,8 @@ func InitDB() { return } - dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?parseTime=true&loc=Local", user, pass, host, port, name) + log.Printf("[DB] Using timezone: %s (Local=%s)", os.Getenv("TZ"), time.Local.String()) + dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?parseTime=true&loc=Local&time_zone='Local'", user, pass, host, port, name) var err error db, err = sql.Open("mysql", dsn) if err != nil { @@ -35,6 +37,21 @@ func InitDB() { } log.Println("Connected to MariaDB successfully") + + // Verify and enforce timezones + var dbNow, dbTZ string + err = db.QueryRow("SELECT NOW(), @@session.time_zone").Scan(&dbNow, &dbTZ) + if err == nil { + log.Printf("[DB] Before setting: NOW()=%s, session.time_zone=%s", dbNow, dbTZ) + } + + if _, err := db.Exec("SET time_zone = SYSTEM"); err != nil { + log.Printf("[DB] Warning: Failed to set session time_zone to SYSTEM: %v", err) + } else { + db.QueryRow("SELECT NOW(), @@session.time_zone").Scan(&dbNow, &dbTZ) + log.Printf("[DB] After setting: NOW()=%s, session.time_zone=%s", dbNow, dbTZ) + } + createTables() } diff --git a/server/step_manager.go b/server/step_manager.go index 7d42d8b..d71fb22 100644 --- a/server/step_manager.go +++ b/server/step_manager.go @@ -93,6 +93,10 @@ func (sm *StepManager) SaveTripState() { } func (sm *StepManager) saveTripStateLocked() { + fmt.Printf("[StepManager] Saving trip state for %s: StartTime=%v (%s), LastSync=%v (%s)\n", + sm.userID, sm.tripState.StartTime, sm.tripState.StartTime.Location(), + sm.lastSyncTime, sm.lastSyncTime.Location()) + _, err := db.Exec(` INSERT INTO trips (user_id, start_date, start_time, start_day_initial_steps, previous_total_steps, target_total_steps, last_sync_time, next_sync_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?)