use antigravity to rewrite all your code to migrate from flat files to relational database. YOLO
All checks were successful
pedestrian-simulator / build (push) Successful in 58s

This commit is contained in:
2026-01-11 20:24:50 -07:00
parent df1ee20994
commit 512b36b10e
10 changed files with 364 additions and 459 deletions

View File

@@ -1,6 +1,7 @@
package main
import (
"database/sql"
"encoding/json"
"fmt"
"io"
@@ -38,33 +39,26 @@ func InitFitbit() {
}
func loadTokens(userID string) (*FitbitConfig, error) {
configPath := fmt.Sprintf("data/users/%s/fitbit_tokens.json", userID)
data, err := os.ReadFile(configPath)
if err != nil {
return nil, err
}
var config FitbitConfig
if err := json.Unmarshal(data, &config); err != nil {
err := db.QueryRow("SELECT access_token, refresh_token, expires_at FROM fitbit_tokens WHERE user_id = ?", userID).
Scan(&config.AccessToken, &config.RefreshToken, &config.ExpiresAt)
if err != nil {
if err == sql.ErrNoRows {
return nil, fmt.Errorf("tokens not found for user %s", userID)
}
return nil, err
}
return &config, nil
}
func saveTokens(userID string, config *FitbitConfig) error {
userDir := fmt.Sprintf("data/users/%s", userID)
if err := os.MkdirAll(userDir, 0755); err != nil {
return fmt.Errorf("error creating user directory: %w", err)
}
configPath := fmt.Sprintf("%s/fitbit_tokens.json", userDir)
data, err := json.MarshalIndent(config, "", " ")
if err != nil {
return err
}
return os.WriteFile(configPath, data, 0600)
_, err := db.Exec(`
INSERT INTO fitbit_tokens (user_id, access_token, refresh_token, expires_at)
VALUES (?, ?, ?, ?)
ON DUPLICATE KEY UPDATE access_token = ?, refresh_token = ?, expires_at = ?
`, userID, config.AccessToken, config.RefreshToken, config.ExpiresAt,
config.AccessToken, config.RefreshToken, config.ExpiresAt)
return err
}
// GetDailySteps fetches step count for a specific date (YYYY-MM-DD) for a specific user
@@ -241,14 +235,9 @@ func HandleFitbitCallback(w http.ResponseWriter, r *http.Request) {
}
}
// Create or update user in registry
fmt.Println("[OAuth Callback] Creating/updating user in registry...")
if userRegistry == nil {
fmt.Println("[OAuth Callback] ERROR: userRegistry is nil!")
http.Error(w, "Server configuration error: user registry not initialized", http.StatusInternalServerError)
return
}
_, err = userRegistry.CreateOrUpdateUser(fitbitUserID, displayName, avatarURL)
// Create or update user in database
fmt.Println("[OAuth Callback] Creating/updating user in database...")
_, err = CreateOrUpdateUser(fitbitUserID, displayName, avatarURL)
if err != nil {
fmt.Printf("[OAuth Callback] ERROR: Failed to create user: %v\n", err)
http.Error(w, fmt.Sprintf("Failed to create user: %v", err), http.StatusInternalServerError)