diff --git a/cmd/new_module.go b/cmd/new_module.go index fbdea52..e844299 100644 --- a/cmd/new_module.go +++ b/cmd/new_module.go @@ -31,6 +31,7 @@ func commandNewModuleE(cmd *cobra.Command, args []string) error { module := lo.Filter(strings.Split(args[0], "."), func(s string, _ int) bool { return s != "" }) + module = append([]string{"app/http"}, module...) pwd, err := os.Getwd() if err != nil { @@ -42,12 +43,8 @@ func commandNewModuleE(cmd *cobra.Command, args []string) error { return errors.New("parse go.mod file failed") } - modulePath := module[0] - if len(module) > 1 { - modulePath = strings.Join(module, "/modules/") - } moduleName := module[len(module)-1] - modulePath = filepath.Join("app/http", modulePath) + modulePath := filepath.Join(module...) log.Infof("new module: %s", modulePath) force, _ := cmd.Flags().GetBool("force") diff --git a/templates/project/app/errorx/-gitkeep.tpl b/templates/project/app/errorx/-gitkeep.tpl deleted file mode 100644 index e69de29..0000000 diff --git a/templates/project/pkg/errorx/error.go.tpl b/templates/project/app/errorx/error.go.tpl similarity index 100% rename from templates/project/pkg/errorx/error.go.tpl rename to templates/project/app/errorx/error.go.tpl diff --git a/templates/project/app/middlewares/mid_debug.go.tpl b/templates/project/app/middlewares/mid_debug.go.tpl new file mode 100644 index 0000000..ecb33af --- /dev/null +++ b/templates/project/app/middlewares/mid_debug.go.tpl @@ -0,0 +1,9 @@ +package middlewares + +import ( + "github.com/gofiber/fiber/v3" +) + +func (f *Middlewares) DebugMode(c fiber.Ctx) error { + return c.Next() +} diff --git a/templates/project/app/middlewares/mid_response.go.tpl b/templates/project/app/middlewares/mid_response.go.tpl new file mode 100644 index 0000000..16573b5 --- /dev/null +++ b/templates/project/app/middlewares/mid_response.go.tpl @@ -0,0 +1,31 @@ +package middlewares + +import ( + "{{.ModuleName}}/app/errorx" + + "github.com/gofiber/fiber/v3" + log "github.com/sirupsen/logrus" +) + +func (f *Middlewares) ProcessResponse(c fiber.Ctx) error { + err := c.Next() + if err != nil { + log.WithError(err).Error("process response error") + + if e, ok := err.(errorx.Response); ok { + return e.Response(c) + } + + if e, ok := err.(*fiber.Error); ok { + return errorx.Response{ + StatusCode: e.Code, + Code: e.Code, + Message: e.Message, + }.Response(c) + } + + return errorx.Wrap(err).Response(c) + + } + return err +} diff --git a/templates/project/app/middlewares/middlewares.go.tpl b/templates/project/app/middlewares/middlewares.go.tpl new file mode 100644 index 0000000..69e0e4c --- /dev/null +++ b/templates/project/app/middlewares/middlewares.go.tpl @@ -0,0 +1,15 @@ +package middlewares + +import ( + log "github.com/sirupsen/logrus" +) + +// @provider +type Middlewares struct { + log *log.Entry `inject:"false"` +} + +func (f *Middlewares) Prepare() error { + f.log = log.WithField("module", "middleware") + return nil +}