Checkpoint
This commit is contained in:
68
server/handlers_radios.go
Normal file
68
server/handlers_radios.go
Normal file
@@ -0,0 +1,68 @@
|
||||
package server
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"github.com/labstack/echo/v4"
|
||||
|
||||
"git.maze.io/ham/hamview/schema"
|
||||
)
|
||||
|
||||
// handleGetRadios returns a list of radio stations/receivers.
|
||||
//
|
||||
// Endpoint: GET /api/v1/radios
|
||||
// Endpoint: GET /api/v1/radios/:protocol
|
||||
//
|
||||
// Path Parameters:
|
||||
// - protocol (optional): Filter by protocol name (e.g., "meshcore", "aprs")
|
||||
//
|
||||
// Response: 200 OK
|
||||
//
|
||||
// []Radio - Array of radio objects
|
||||
//
|
||||
// Response: 500 Internal Server Error
|
||||
//
|
||||
// ErrorResponse - Error retrieving radios
|
||||
//
|
||||
// Example Request:
|
||||
//
|
||||
// GET /api/v1/radios
|
||||
// GET /api/v1/radios/meshcore
|
||||
//
|
||||
// Example Response:
|
||||
//
|
||||
// [
|
||||
// {
|
||||
// "id": 1,
|
||||
// "name": "Station-Alpha",
|
||||
// "is_online": true,
|
||||
// "manufacturer": "Heltec",
|
||||
// "device": "WiFi LoRa 32 V3",
|
||||
// "modulation": "LoRa",
|
||||
// "protocol": "meshcore",
|
||||
// "latitude": 52.3667,
|
||||
// "longitude": 4.8945,
|
||||
// "frequency": 868.1,
|
||||
// "bandwidth": 125.0,
|
||||
// "created_at": "2026-01-01T12:00:00Z",
|
||||
// "updated_at": "2026-03-05T10:30:00Z"
|
||||
// }
|
||||
// ]
|
||||
func (s *Server) handleGetRadios(c echo.Context) error {
|
||||
var (
|
||||
radios []*schema.Radio
|
||||
err error
|
||||
)
|
||||
|
||||
if protocol := c.Param("protocol"); protocol != "" {
|
||||
radios, err = schema.GetRadiosByProtocol(c.Request().Context(), protocol)
|
||||
} else {
|
||||
radios, err = schema.GetRadios(c.Request().Context())
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
return s.apiError(c, err)
|
||||
}
|
||||
|
||||
return c.JSON(http.StatusOK, radios)
|
||||
}
|
||||
Reference in New Issue
Block a user