I am trying to use gofiber swagger. When I run swag init I get the following error message.
2025/03/31 12:11:39 Generate swagger docs....
2025/03/31 12:11:39 Generate general API Info, search dir:./
2025/03/31 12:11:39 ParseComment error in file /Projects/adoy/service/auth/handler/users.go :cannot find type definition: models.SignUpParams
here is what my directory structure looks like
- internl
-- models
--- models.SignUpParams
- service
-- auth
--- handler
---- handler.HandleSignUpUser
--- docs // swagger generated
---- docs.go // swagger generated
---- swagger.json // swagger generated
---- swagger.yaml // swagger generated
--- main.go
Here is what my handler.HandleSignUpUser
swagger def looks like
// HandleSignUpUser signs up a user
// @Summary Register a new user
// @Description Register user
// @Accept json
// @Produce json
// @Param request body models.SignUpParams true "Sign up user"
// @Success 200 {object} models.NewSuccessCreated{data=models.User}
// @Failure 400 {object} models.NewErrorBadRequest{}
// @Router /v1/auth/sign-up [post]
func HandleSignUpUser(si *svr.Server) fiber.Handler {
return func(c *fiber.Ctx) error {
p := new(models.SignUpParams)
o := new(models.User)
if err := c.BodyParser(p); err != nil {
return c.Status(fiber.StatusBadRequest).JSON(models.NewErrorBadRequest(&err))
}
if err := o.LoadSignUpParams(p); err != nil {
return c.Status(fiber.StatusBadRequest).JSON(models.NewErrorBadRequest(&err))
}
result := si.DB.ORM.WithContext(c.Context()).Create(&o)
if result.Error != nil {
return c.Status(fiber.StatusBadRequest).JSON(models.NewErrorBadRequest(&result.Error))
}
return c.Status(fiber.StatusCreated).JSON(models.NewSuccessCreated(o))
}
}
I have other svc under service for which I want to setup swagger also. But I am trying to figure out how I can access models from internal for my swagger. My services runs fine without any issue, just running into challenge with swagger.
I go into each service directory and run swag init
to setup swagger.