https://github.com/prongbang/echogen
Golang Generate Clean Architecture for REST API support Echo Web Framework
https://github.com/prongbang/echogen
clean clean-architechture echo echo-framework generate-code generate-domain generate-feature golang rest-api
Last synced: 7 months ago
JSON representation
Golang Generate Clean Architecture for REST API support Echo Web Framework
- Host: GitHub
- URL: https://github.com/prongbang/echogen
- Owner: prongbang
- Created: 2020-02-29T10:51:25.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2021-01-17T13:55:12.000Z (over 4 years ago)
- Last Synced: 2025-03-25T22:52:04.381Z (7 months ago)
- Topics: clean, clean-architechture, echo, echo-framework, generate-code, generate-domain, generate-feature, golang, rest-api
- Language: Go
- Homepage:
- Size: 4.88 KB
- Stars: 2
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# echogen
## Install
```shell script
$ go get -u github.com/prongbang/echogen
$ go install github.com/prongbang/echogen
```## How to use
`-f` feature name
```shell script
$ echogen -f user
```
OR```shell script
$ 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`
```go
package usertype DataSource interface {
}type dataSource struct {
DbSource database.DataSource
}func NewDataSource(dbSource database.DataSource) DataSource {
return &dataSource{
DbSource: dbSource,
}
}
```- `handler.go`
```go
package usertype Handler interface {
}type handler struct {
Uc UseCase
}func NewHandler(uc UseCase) Handler {
return &handler{
Uc: uc,
}
}
```- `provider.go`
```go
package userimport "github.com/google/wire"
var ProviderSet = wire.NewSet(
NewDataSource,
NewRepository,
NewUseCase,
NewHandler,
NewRouter,
)
```- `repository.go`
```go
package usertype Repository interface {
}type repository struct {
Ds DataSource
}func NewRepository(ds DataSource) Repository {
return &repository{
Ds: ds,
}
}
```- `router.go`
```go
package userimport "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`
```go
package usertype UseCase interface {
}type useCase struct {
Repo Repository
}func NewUseCase(repo Repository) UseCase {
return &useCase{
Repo: repo,
}
}
```- `user.go`
```go
package usertype User struct {
}
```