feat: expose raw frame query api

This commit is contained in:
lingniu
2026-07-01 23:39:10 +08:00
parent 59c1c9df0f
commit 6bee0499ae
4 changed files with 480 additions and 0 deletions

View File

@@ -15,8 +15,10 @@ import (
_ "github.com/go-sql-driver/mysql"
"github.com/redis/go-redis/v9"
"github.com/segmentio/kafka-go"
_ "github.com/taosdata/driver-go/v3/taosWS"
"lingniu-vehicle-ingest/go/vehicle-gateway/internal/envelope"
"lingniu-vehicle-ingest/go/vehicle-gateway/internal/history"
"lingniu-vehicle-ingest/go/vehicle-gateway/internal/observability"
"lingniu-vehicle-ingest/go/vehicle-gateway/internal/realtime"
"lingniu-vehicle-ingest/go/vehicle-gateway/internal/stats"
@@ -74,6 +76,32 @@ func main() {
logger.Warn("MYSQL_DSN is empty; stats query api disabled")
}
defer closeStats()
closeHistory := func() {}
if dsn := strings.TrimSpace(os.Getenv("TDENGINE_DSN")); dsn != "" {
driver := env("TDENGINE_DRIVER", "taosWS")
db, err := sql.Open(driver, dsn)
if err != nil {
logger.Error("history tdengine open failed", "driver", driver, "error", err)
os.Exit(1)
}
if err := db.PingContext(ctx); err != nil {
_ = db.Close()
logger.Error("history tdengine ping failed", "driver", driver, "error", err)
os.Exit(1)
}
closeHistory = func() { _ = db.Close() }
database := env("TDENGINE_DATABASE", history.DefaultDatabase)
mux.Handle("/api/history/raw-frames", history.NewRawFrameHandler(history.NewRawFrameRepository(db, database)))
logger.Info("history raw frame query enabled", "driver", driver, "database", database)
} else {
mux.HandleFunc("/api/history/raw-frames", func(w http.ResponseWriter, _ *http.Request) {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(http.StatusServiceUnavailable)
_ = json.NewEncoder(w).Encode(map[string]any{"error": "TDENGINE_DSN is not configured"})
})
logger.Warn("TDENGINE_DSN is empty; raw frame query api disabled")
}
defer closeHistory()
server := &http.Server{
Addr: env("HTTP_ADDR", ":20210"),