interview-one-stop-server/main.go

57 lines
1.2 KiB
Go

// Start a web server
package main
import (
"context"
"fmt"
"interview-one-stop-server/config"
"interview-one-stop-server/constant"
"interview-one-stop-server/db"
"interview-one-stop-server/util"
"interview-one-stop-server/util/log"
"time"
ginzap "github.com/gin-contrib/zap"
"github.com/gin-gonic/gin"
)
func main() {
err := config.InitConfig()
if err != nil {
panic(err)
}
r := gin.Default()
logger := log.GetLogger()
r.Use(ginzap.Ginzap(logger, time.RFC3339, true))
r.Use(ginzap.RecoveryWithZap(logger, true))
r.Use(TraceLog())
err = db.InitDB()
if err != nil {
log.Error(context.Background(), "InitDB", fmt.Sprintf("db init failed, err is %s", err.Error()))
panic("db not ready")
}
post := GetPostRouter()
for k, v := range post {
r.POST(k, v)
}
get := GetGetRouter()
for k, v := range get {
r.GET(k, v)
}
r.GET("/ping", Ping)
if err := r.Run(fmt.Sprintf(":%s", config.GlobalConf.Service.Port)); err != nil {
log.Error(context.Background(), "main", err.Error())
}
}
func TraceLog() gin.HandlerFunc {
return func(c *gin.Context) {
c.Set("ctx", context.WithValue(context.Background(), constant.TraceID, util.GenUUID()))
}
}