54 lines
1.3 KiB
Go
54 lines
1.3 KiB
Go
package main
|
||
|
||
import (
|
||
"fmt"
|
||
"net/http"
|
||
"os"
|
||
|
||
"github.com/joho/godotenv"
|
||
"go.uber.org/zap"
|
||
"go.uber.org/zap/zapcore"
|
||
|
||
"github.com/topfans/laserCompositor/config"
|
||
"github.com/topfans/laserCompositor/handler"
|
||
)
|
||
|
||
func main() {
|
||
// 初始化日志
|
||
logCfg := zap.NewDevelopmentConfig()
|
||
logCfg.EncoderConfig.EncodeTime = zapcore.ISO8601TimeEncoder
|
||
logger, err := logCfg.Build()
|
||
if err != nil {
|
||
panic(fmt.Sprintf("failed to init logger: %v", err))
|
||
}
|
||
defer logger.Sync()
|
||
|
||
logger.Info("Starting laser-compositor...")
|
||
|
||
// 加载 backend/.env(与 gateway 一致)
|
||
_ = godotenv.Load("../../.env", ".env")
|
||
|
||
// 加载配置
|
||
cfg := config.Load()
|
||
|
||
// 创建 handler
|
||
composeHandler := handler.NewComposeHandler(cfg, logger)
|
||
|
||
// 注册路由
|
||
mux := http.NewServeMux()
|
||
mux.HandleFunc("/compose", composeHandler.ComposeSingle)
|
||
mux.HandleFunc("/compose/batch", composeHandler.ComposeBatch)
|
||
mux.HandleFunc("/health", func(w http.ResponseWriter, r *http.Request) {
|
||
w.Header().Set("Content-Type", "application/json")
|
||
w.Write([]byte(`{"status":"ok","service":"laser-compositor"}`))
|
||
})
|
||
|
||
addr := fmt.Sprintf(":%s", cfg.Port)
|
||
logger.Info("Listening", zap.String("addr", addr))
|
||
|
||
if err := http.ListenAndServe(addr, mux); err != nil {
|
||
logger.Fatal("Server failed", zap.Error(err))
|
||
os.Exit(1)
|
||
}
|
||
}
|