2022-01-11 13:18:59 +08:00
|
|
|
package main
|
|
|
|
|
2022-01-12 14:34:31 +08:00
|
|
|
import (
|
|
|
|
"context"
|
|
|
|
"fmt"
|
|
|
|
"git.icechen.cn/monorepo/backend/app/brahma/api/murder/internal/config"
|
|
|
|
"git.icechen.cn/monorepo/backend/app/brahma/api/murder/internal/error_process"
|
|
|
|
"git.icechen.cn/monorepo/backend/app/brahma/api/murder/internal/gorm_helper"
|
|
|
|
"git.icechen.cn/monorepo/backend/app/brahma/api/murder/internal/handler"
|
|
|
|
"github.com/gofiber/fiber/v2"
|
|
|
|
"github.com/gofiber/fiber/v2/middleware/logger"
|
|
|
|
"github.com/gofiber/fiber/v2/middleware/recover"
|
|
|
|
"github.com/gofiber/fiber/v2/middleware/requestid"
|
|
|
|
ctxLogger "github.com/luizsuper/ctxLoggers"
|
|
|
|
"go.uber.org/zap"
|
|
|
|
"os"
|
|
|
|
"runtime"
|
|
|
|
)
|
|
|
|
|
|
|
|
const (
|
|
|
|
tag = "/tag"
|
|
|
|
category = "/category"
|
|
|
|
scripts = "/scripts"
|
|
|
|
)
|
|
|
|
|
|
|
|
var (
|
|
|
|
err error
|
|
|
|
//Init App
|
|
|
|
app = fiber.New(fiber.Config{
|
|
|
|
ErrorHandler: func(ctx *fiber.Ctx, err error) error {
|
|
|
|
return ctx.Status(fiber.StatusInternalServerError).JSON(handler.Response{Message: "服务器内部错误"})
|
|
|
|
},
|
|
|
|
})
|
|
|
|
)
|
|
|
|
|
|
|
|
func init() {
|
|
|
|
ResourceInit()
|
|
|
|
appInit()
|
|
|
|
routerInit()
|
|
|
|
}
|
|
|
|
|
|
|
|
// ResourceInit 读取配置初始化资源
|
|
|
|
func ResourceInit() {
|
|
|
|
|
|
|
|
config.GetConfig()
|
|
|
|
|
|
|
|
err = gorm_helper.GormMap(config.GetConfigMap()[config.GetConfigKey(config.DsnPre)])
|
|
|
|
if err != nil {
|
|
|
|
ctxLogger.FError(nil, error_process.GormError, zap.String("", err.Error()))
|
|
|
|
os.Exit(-1)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func appInit() {
|
|
|
|
//requestId
|
|
|
|
app.Use(requestid.New())
|
|
|
|
//logger
|
|
|
|
app.Use(logger.New(logger.Config{
|
|
|
|
Format: "${respHeader:X-Request-ID} ${status} - ${method} ${path} ${resBody}\n",
|
|
|
|
}))
|
|
|
|
//recover
|
|
|
|
app.Use(recover.New(recover.Config{
|
|
|
|
EnableStackTrace: true,
|
|
|
|
StackTraceHandler: func(c *fiber.Ctx, e interface{}) {
|
|
|
|
buf := make([]byte, 1024*1024)
|
|
|
|
buf = buf[:runtime.Stack(buf, false)]
|
|
|
|
fmt.Printf("panic: %v\n%s\n", e, buf)
|
|
|
|
ctxLogger.FError(c, error_process.PanicError, zap.String("", fmt.Sprintf("panic: %v\n%s\n", e, buf)))
|
|
|
|
},
|
|
|
|
}))
|
|
|
|
//requestId for gorm
|
|
|
|
app.Use(func(ctx *fiber.Ctx) error {
|
|
|
|
ctx.SetUserContext(context.WithValue(context.Background(), fiber.HeaderXRequestID, ctx.Response().Header.Peek(fiber.HeaderXRequestID)))
|
|
|
|
return ctx.Next()
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
func routerInit() {
|
|
|
|
//Tag router
|
|
|
|
tagRoute := app.Group(tag)
|
|
|
|
tagRoute.Get("", func(ctx *fiber.Ctx) error {
|
|
|
|
return handler.GetTagH(ctx)
|
|
|
|
})
|
|
|
|
tagRoute.Post("", func(ctx *fiber.Ctx) error {
|
|
|
|
return handler.CreateTagH(ctx)
|
|
|
|
})
|
|
|
|
tagRoute.Put("", func(ctx *fiber.Ctx) error {
|
|
|
|
return handler.UpdateTagH(ctx)
|
|
|
|
})
|
|
|
|
tagRoute.Delete("", func(ctx *fiber.Ctx) error {
|
|
|
|
return handler.DeleteTagH(ctx)
|
|
|
|
})
|
|
|
|
tagRoute.Post("/categories", func(ctx *fiber.Ctx) error {
|
|
|
|
return handler.CreateCategoryForTag(ctx)
|
|
|
|
})
|
|
|
|
tagRoute.Delete("/categories", func(ctx *fiber.Ctx) error {
|
|
|
|
return handler.DeleteCategoryForTag(ctx)
|
|
|
|
})
|
|
|
|
//Category router
|
|
|
|
categoryRoute := app.Group(category)
|
|
|
|
categoryRoute.Get("", func(ctx *fiber.Ctx) error {
|
|
|
|
return handler.GetCategoryH(ctx)
|
|
|
|
})
|
|
|
|
categoryRoute.Post("", func(ctx *fiber.Ctx) error {
|
|
|
|
return handler.CreateCategoryH(ctx)
|
|
|
|
})
|
|
|
|
categoryRoute.Put("", func(ctx *fiber.Ctx) error {
|
|
|
|
return handler.UpdateCategoryH(ctx)
|
|
|
|
})
|
|
|
|
categoryRoute.Delete("", func(ctx *fiber.Ctx) error {
|
|
|
|
return handler.DeleteCategoryH(ctx)
|
|
|
|
})
|
|
|
|
categoryRoute.Post("/tags", func(ctx *fiber.Ctx) error {
|
|
|
|
return handler.CreateTagForCategory(ctx)
|
|
|
|
})
|
|
|
|
categoryRoute.Delete("/tags", func(ctx *fiber.Ctx) error {
|
|
|
|
return handler.DeleteTagForCategory(ctx)
|
|
|
|
})
|
|
|
|
scriptsGroup := app.Group(scripts)
|
|
|
|
scriptsGroup.Get("", func(ctx *fiber.Ctx) error {
|
|
|
|
return handler.GetScriptsH(ctx)
|
|
|
|
})
|
|
|
|
scriptsGroup.Put("", func(ctx *fiber.Ctx) error {
|
|
|
|
return handler.UpdateScriptsH(ctx)
|
|
|
|
})
|
|
|
|
scriptsGroup.Post("", func(ctx *fiber.Ctx) error {
|
|
|
|
return handler.CreateScriptsH(ctx)
|
|
|
|
})
|
|
|
|
scriptsGroup.Delete("", func(ctx *fiber.Ctx) error {
|
|
|
|
return handler.DeleteScriptsH(ctx)
|
|
|
|
})
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
func serverStart() {
|
|
|
|
port := config.GetEnvDefault(config.Port, config.PortDefault)
|
|
|
|
err = app.Listen(fmt.Sprintf(":%v", port))
|
|
|
|
if err != nil {
|
|
|
|
ctxLogger.Error(nil, "", zap.String("", err.Error()))
|
|
|
|
os.Exit(-1)
|
|
|
|
}
|
|
|
|
}
|
2022-01-11 13:18:59 +08:00
|
|
|
|
|
|
|
func main() {
|
2022-01-12 14:34:31 +08:00
|
|
|
serverStart()
|
2022-01-11 13:18:59 +08:00
|
|
|
}
|