57 lines
1.2 KiB
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()))
|
|
}
|
|
}
|