lots of stuff, don't truly remember
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"log"
|
||||
"net/http"
|
||||
"os"
|
||||
@@ -11,12 +12,16 @@ import (
|
||||
"github.com/joho/godotenv"
|
||||
|
||||
"rideaware/internal/activity"
|
||||
"rideaware/internal/ai"
|
||||
"rideaware/internal/auth"
|
||||
"rideaware/internal/config"
|
||||
"rideaware/internal/equipment"
|
||||
"rideaware/internal/event"
|
||||
"rideaware/internal/export"
|
||||
"rideaware/internal/goal"
|
||||
"rideaware/internal/integration"
|
||||
"rideaware/internal/middleware"
|
||||
"rideaware/internal/nutrition"
|
||||
"rideaware/internal/stats"
|
||||
"rideaware/internal/templates"
|
||||
"rideaware/internal/user"
|
||||
@@ -41,6 +46,8 @@ func main() {
|
||||
&workout.Workout{},
|
||||
&integration.OAuthConnection{},
|
||||
&integration.OAuthState{},
|
||||
&ai.AIRecommendation{},
|
||||
&event.Event{},
|
||||
); err != nil {
|
||||
log.Fatalf("Failed to migrate database: %v", err)
|
||||
}
|
||||
@@ -155,6 +162,8 @@ func setupRoutes(r *chi.Mux) {
|
||||
r.Get("/workouts/equipment-stats", workoutHandler.GetEquipmentStats)
|
||||
r.Put("/workouts", workoutHandler.UpdateWorkout)
|
||||
r.Delete("/workouts", workoutHandler.DeleteWorkout)
|
||||
r.Post("/workouts/remove-duplicates", workoutHandler.RemoveDuplicates)
|
||||
r.Put("/workouts/reschedule", workoutHandler.RescheduleWorkout)
|
||||
r.Get("/workout-types", workoutHandler.GetWorkoutTypes)
|
||||
r.Post("/workouts/upload", workoutHandler.UploadWorkoutFile)
|
||||
|
||||
@@ -179,18 +188,65 @@ func setupRoutes(r *chi.Mux) {
|
||||
r.Get("/wahoo/status", wahooHandler.ConnectionStatus)
|
||||
r.Delete("/wahoo/disconnect", wahooHandler.Disconnect)
|
||||
|
||||
// Intervals.icu integration routes
|
||||
intervalsHandler := integration.NewIntervalsHandler()
|
||||
r.Post("/intervals/connect", intervalsHandler.SaveApiKey)
|
||||
r.Get("/intervals/status", intervalsHandler.ConnectionStatus)
|
||||
r.Delete("/intervals/disconnect", intervalsHandler.Disconnect)
|
||||
r.Post("/workouts/push/intervals", intervalsHandler.PushWorkout)
|
||||
r.Post("/intervals/sync", intervalsHandler.SyncActivities)
|
||||
|
||||
// Stats routes
|
||||
statsHandler := stats.NewHandler()
|
||||
r.Get("/stats/summary", statsHandler.GetSummary)
|
||||
r.Get("/stats/weekly", statsHandler.GetWeeklyStats)
|
||||
r.Get("/stats/monthly", statsHandler.GetMonthlyStats)
|
||||
r.Get("/stats/personal-bests", statsHandler.GetPersonalBests)
|
||||
r.Get("/stats/training-load", statsHandler.GetTrainingLoad)
|
||||
r.Get("/stats/power-history", statsHandler.GetPowerHistory)
|
||||
|
||||
// AI Training Plan routes
|
||||
aiHandler := ai.NewHandler()
|
||||
r.Post("/ai/generate", aiHandler.GenerateRecommendations)
|
||||
r.Post("/ai/schedule", aiHandler.ScheduleRecommendations)
|
||||
r.Get("/ai/history", aiHandler.GetRecommendationHistory)
|
||||
|
||||
// Event routes
|
||||
eventHandler := event.NewHandler()
|
||||
r.Post("/events", eventHandler.CreateEvent)
|
||||
r.Get("/events", eventHandler.GetEvents)
|
||||
r.Get("/events/upcoming", eventHandler.GetUpcomingEvents)
|
||||
r.Put("/events", eventHandler.UpdateEvent)
|
||||
r.Delete("/events", eventHandler.DeleteEvent)
|
||||
r.Get("/event-types", eventHandler.GetEventTypes)
|
||||
|
||||
// Nutrition routes
|
||||
nutritionHandler := nutrition.NewHandler()
|
||||
r.Get("/nutrition/targets", nutritionHandler.GetTargets)
|
||||
r.Get("/nutrition/weekly", nutritionHandler.GetWeekly)
|
||||
|
||||
// Workout template routes
|
||||
templateHandler := templates.NewHandler()
|
||||
r.Get("/workout-templates", templateHandler.ListTemplates)
|
||||
r.Get("/workout-templates/detail", templateHandler.GetTemplate)
|
||||
r.Post("/workouts/from-template", templateHandler.CreateFromTemplate)
|
||||
|
||||
// Goal routes
|
||||
goalHandler := goal.NewHandler()
|
||||
r.Post("/goals", goalHandler.CreateGoal)
|
||||
r.Get("/goals", goalHandler.GetGoals)
|
||||
r.Put("/goals", goalHandler.UpdateGoal)
|
||||
r.Delete("/goals", goalHandler.DeleteGoal)
|
||||
|
||||
// Admin-only routes (require 'admin' role in addition to valid JWT)
|
||||
r.Route("/admin", func(r chi.Router) {
|
||||
r.Use(authMiddleware.RequireRole("admin"))
|
||||
r.Get("/health", func(w http.ResponseWriter, r *http.Request) {
|
||||
json.NewEncoder(w).Encode(map[string]string{
|
||||
"status": "admin API operational",
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
log.Println("✅ Routes registered successfully")
|
||||
@@ -200,4 +256,4 @@ func healthCheck(w http.ResponseWriter, r *http.Request) {
|
||||
log.Println("📊 Health check called")
|
||||
w.WriteHeader(http.StatusOK)
|
||||
w.Write([]byte("OK"))
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user