Files
trahn-trade/trahn-trade-backend/internal/api/sr_routes.go
2026-02-22 15:21:18 -05:00

53 lines
1.3 KiB
Go

package api
import (
"fmt"
"net/http"
"time"
)
type srLatestResponse struct {
Support float64 `json:"support"`
Resistance float64 `json:"resistance"`
Midpoint float64 `json:"midpoint"`
AvgPrice *float64 `json:"avgPrice"`
Method string `json:"method"`
LookbackDays int `json:"lookbackDays"`
Timestamp time.Time `json:"timestamp"`
}
func (s *Server) handleSRLatest(w http.ResponseWriter, r *http.Request) {
sr, err := s.srRepo.GetLatest(r.Context())
if err != nil {
fmt.Printf("Error fetching latest S/R: %v\n", err)
writeError(w, http.StatusInternalServerError, "failed to fetch S/R data")
return
}
if sr == nil {
writeError(w, http.StatusNotFound, "no S/R data available")
return
}
writeJSON(w, http.StatusOK, srLatestResponse{
Support: sr.Support,
Resistance: sr.Resistance,
Midpoint: sr.Midpoint,
AvgPrice: sr.AvgPrice,
Method: sr.Method,
LookbackDays: sr.LookbackDays,
Timestamp: sr.Timestamp,
})
}
func (s *Server) handleSRHistory(w http.ResponseWriter, r *http.Request) {
limit := parseLimit(r, 100)
history, err := s.srRepo.GetHistory(r.Context(), limit)
if err != nil {
fmt.Printf("Error fetching S/R history: %v\n", err)
writeError(w, http.StatusInternalServerError, "failed to fetch S/R history")
return
}
writeJSON(w, http.StatusOK, history)
}