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
All checks were successful
pedestrian-simulator / build (push) Successful in 58s
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user