package server import ( "net/http" "github.com/AFASystems/presence/internal/pkg/api/handler" "github.com/AFASystems/presence/internal/pkg/api/middleware" "github.com/AFASystems/presence/internal/pkg/controller" "github.com/gorilla/mux" ) // RegisterRoutes builds the router and applies middleware. Uses app's DB, Kafka writers, and ctx. func (a *ServerApp) RegisterRoutes() http.Handler { r := mux.NewRouter() // Health r.HandleFunc("/health", handler.Health).Methods("GET") r.HandleFunc("/ready", handler.Ready(a.DB)).Methods("GET") // Gateways r.HandleFunc("/reslevis/getGateways", controller.GatewayListController(a.DB)).Methods("GET") r.HandleFunc("/reslevis/postGateway", controller.GatewayAddController(a.DB)).Methods("POST") r.HandleFunc("/reslevis/removeGateway/{id}", controller.GatewayDeleteController(a.DB)).Methods("DELETE") r.HandleFunc("/reslevis/updateGateway/{id}", controller.GatewayUpdateController(a.DB)).Methods("PUT") // Zones r.HandleFunc("/reslevis/getZones", controller.ZoneListController(a.DB)).Methods("GET") r.HandleFunc("/reslevis/postZone", controller.ZoneAddController(a.DB)).Methods("POST") r.HandleFunc("/reslevis/removeZone/{id}", controller.ZoneDeleteController(a.DB)).Methods("DELETE") r.HandleFunc("/reslevis/updateZone", controller.ZoneUpdateController(a.DB)).Methods("PUT") // Tracker zones r.HandleFunc("/reslevis/getTrackerZones", controller.TrackerZoneListController(a.DB)).Methods("GET") r.HandleFunc("/reslevis/postTrackerZone", controller.TrackerZoneAddController(a.DB)).Methods("POST") r.HandleFunc("/reslevis/removeTrackerZone/{id}", controller.TrackerZoneDeleteController(a.DB)).Methods("DELETE") r.HandleFunc("/reslevis/updateTrackerZone", controller.TrackerZoneUpdateController(a.DB)).Methods("PUT") // Trackers r.HandleFunc("/reslevis/getTrackers", controller.TrackerList(a.DB)).Methods("GET") r.HandleFunc("/reslevis/postTracker", controller.TrackerAdd(a.DB, a.KafkaManager.GetWriter("apibeacons"), a.ctx)).Methods("POST") r.HandleFunc("/reslevis/removeTracker/{id}", controller.TrackerDelete(a.DB, a.KafkaManager.GetWriter("apibeacons"), a.ctx)).Methods("DELETE") r.HandleFunc("/reslevis/updateTracker", controller.TrackerUpdate(a.DB)).Methods("PUT") // Parser configs r.HandleFunc("/configs/beacons", controller.ParserListController(a.DB)).Methods("GET") r.HandleFunc("/configs/beacons", controller.ParserAddController(a.DB, a.KafkaManager.GetWriter("parser"), a.ctx)).Methods("POST") r.HandleFunc("/configs/beacons/{id}", controller.ParserUpdateController(a.DB, a.KafkaManager.GetWriter("parser"), a.ctx)).Methods("PUT") r.HandleFunc("/configs/beacons/{id}", controller.ParserDeleteController(a.DB, a.KafkaManager.GetWriter("parser"), a.ctx)).Methods("DELETE") // Settings r.HandleFunc("/reslevis/settings", controller.SettingsUpdateController(a.DB, a.KafkaManager.GetWriter("settings"), a.ctx)).Methods("PATCH") r.HandleFunc("/reslevis/settings", controller.SettingsListController(a.DB)).Methods("GET") // Tracks r.HandleFunc("/reslevis/getTracks/{id}", controller.TracksListController(a.DB)).Methods("GET") chain := middleware.Recovery(middleware.Logging(middleware.RequestID(middleware.CORS(nil, nil, nil)(r)))) return chain }