// Package api provides HTTP routing and handlers for the preferences-api service. package api import ( "git.threesix.ai/jordan/slack5-1770606136/pkg/app" "git.threesix.ai/jordan/slack5-1770606136/services/preferences-api/internal/api/handlers" "git.threesix.ai/jordan/slack5-1770606136/services/preferences-api/internal/service" ) // RegisterRoutes registers all HTTP routes for the service. // Routes are mounted under /api/preferences-api to match the ingress path routing. // This allows the monorepo to expose multiple services under a single domain: // - https://domain/api/preferences-api/health // - https://domain/api/preferences-api/preferences/{user_id} func RegisterRoutes(application *app.App, prefService *service.PreferenceService) { logger := application.Logger() // Initialize handlers with injected services healthHandler := handlers.NewHealth(logger) prefHandler := handlers.NewPreference(prefService, logger) // Build and mount OpenAPI spec spec := NewServiceSpec() application.EnableDocs(spec) // Register API routes under /api/{service-name} to match ingress path routing. // The ingress routes /api/preferences-api/* to this service. application.Route("/api/preferences-api", func(r app.Router) { r.Get("/health", healthHandler.Check) // Preference routes (auth out of scope per spec; can be layered on later) r.Get("/preferences/{user_id}", app.Wrap(prefHandler.Get)) r.Put("/preferences/{user_id}", app.Wrap(prefHandler.Upsert)) }) }