Files
trade/web/backend/internal/handlers/scores.go
fish 961ab8224e scores 主键改用 UUID v7
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-03 15:02:08 +08:00

66 lines
1.5 KiB
Go

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) {
id := chi.URLParam(r, "id")
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)
}