Generate a Clean Architecture for REST API with support for the Fiber Web Framework in Golang
MIT License
Generate a Clean Architecture for REST API with support for the Fiber Web Framework in Golang
go install github.com/prongbang/[email protected]
-new
project name
-mod
module name
fibergen -new test -mod github.com/prongbang
Example:
module github.com/prongbang/test
Structure
test
├── go.mod
├── go.sum
└── internal
└── test
├── api
│ ├── feature/domain
│ ├── api.go
│ ├── routers.go
│ ├── wire.go
│ └── wire_gen.go
└── database
└── drivers.go
+fibergeen
//+build wireinject
package api
import (
"github.com/google/wire"
//+fibergen:import wire:package
)
func CreateAPI(dbDriver database.Drivers) API {
wire.Build(
NewAPI,
NewRouters,
//+fibergen:func wire:build
)
return nil
}
package api
import (
"github.com/gofiber/fiber/v2"
//+fibergen:import routers:package
)
type Routers interface {
core.Routers
}
type routers struct {
//+fibergen:struct routers
}
func (r *routers) Initials(app *fiber.App) {
//+fibergen:func initials
}
func NewRouters(
//+fibergen:func new:routers
) Routers {
return &routers{
//+fibergen:return &routers
}
}
-f
feature name
fibergen -f user
OR
$ cd project/internal/app/api && fibergen -f user
user
├── datasource.go
├── handler.go
├── provider.go
├── repository.go
├── router.go
├── usecase.go
├── user.go
└── validate.go
auth.json
{
"accessToken": "JWT",
"expired": 1234567,
}
fibergen -crud auth -s spec/auth.json -d mariadb