/echogen

Golang Generate Clean Architecture for REST API support Echo Web Framework

Primary LanguageGo

echogen

Install

$ go get -u github.com/prongbang/echogen
$ go install github.com/prongbang/echogen

How to use

-f feature name

$ echogen -f user

OR

$ cd project/pkg/api && echogen -f user

Output

user
├── datasource.go
├── handler.go
├── provider.go
├── repository.go
├── router.go
├── usecase.go
└── user.go
  • datasource.go
package user

type DataSource interface {
}

type dataSource struct {
    DbSource database.DataSource
}

func NewDataSource(dbSource database.DataSource) DataSource {
    return &dataSource{
        DbSource: dbSource,
    }
}
  • handler.go
package user

type Handler interface {
}

type handler struct {
    Uc UseCase
}

func NewHandler(uc UseCase) Handler {
    return &handler{
        Uc: uc,
    }
}
  • provider.go
package user

import "github.com/google/wire"

var ProviderSet = wire.NewSet(
    NewDataSource,
    NewRepository,
    NewUseCase,
    NewHandler,
    NewRouter,
)
  • repository.go
package user

type Repository interface {
}

type repository struct {
    Ds DataSource
}

func NewRepository(ds DataSource) Repository {
    return &repository{
        Ds: ds,
    }
}
  • router.go
package user

import "github.com/labstack/echo"

type Router interface {
    Initial(e *echo.Echo)
}

type router struct {
    Handle Handler
}

func (r *router) Initial(e *echo.Echo) {

}

func NewRouter(handle Handler) Router {
    return &router{Handle: handle}
}
  • usecase.go
package user

type UseCase interface {
}

type useCase struct {
    Repo Repository
}

func NewUseCase(repo Repository) UseCase {
    return &useCase{
        Repo: repo,
    }
}
  • user.go
package user

type User struct  {

}