package handlers import ( "errors" "net/http" "strconv" "github.com/go-chi/chi/v5" "trade/web/internal/store" ) func (d *Deps) ListScores(w http.ResponseWriter, r *http.Request) { q := r.URL.Query() limit := 0 if s := q.Get("limit"); s != "" { if n, err := strconv.Atoi(s); err == nil { limit = n } } rows, err := d.Futures.ListScores(store.ScoreFilter{ TsCode: q.Get("ts_code"), Start: q.Get("start"), End: q.Get("end"), Limit: limit, }) if err != nil { writeErr(w, http.StatusInternalServerError, err.Error()) return } writeJSON(w, http.StatusOK, rows) } func (d *Deps) GetScore(w http.ResponseWriter, r *http.Request) { idStr := chi.URLParam(r, "id") id, err := strconv.ParseInt(idStr, 10, 64) if err != nil { writeErr(w, http.StatusBadRequest, "invalid id") return } row, err := d.Futures.GetScore(id) if err != nil { writeErr(w, http.StatusNotFound, err.Error()) return } writeJSON(w, http.StatusOK, row) } func (d *Deps) ListContracts(w http.ResponseWriter, r *http.Request) { out, err := d.Futures.ListContracts() if err != nil { writeErr(w, http.StatusInternalServerError, err.Error()) return } writeJSON(w, http.StatusOK, out) } func (d *Deps) ListCandles(w http.ResponseWriter, r *http.Request) { q := r.URL.Query() rows, err := d.Futures.ListCandles(q.Get("ts_code"), q.Get("start"), q.Get("end")) if err != nil { if errors.Is(err, store.ErrMissingTsCode) { writeErr(w, http.StatusBadRequest, err.Error()) return } writeErr(w, http.StatusInternalServerError, err.Error()) return } writeJSON(w, http.StatusOK, rows) }