go-clean-template
go-clean-template copied to clipboard
About multiple usecases
Hello, I am a new to golang and clean arch! And I am curious about the design of the usecase directory
When I start a program, the repo and the webapi part are just directly injected into the usecase and create a translationUseCase
. Does it means that the translation usecase just representing the all usecases? But what if I want to add new usecases?
translationUseCase := usecase.New(
repo.New(pg),
webapi.New(),
)
If I trying to use more usecase.New in my project like
AUseCase := usecase.NewA(
repo.New(pg),
webapi.New(),
)
BUseCase := usecase.NewB(
repo.New(pg),
)
And I have to append a lot of params to v1.NewRouter(handler, l, testUseCase)
For example:
v1.NewRouter(handler, l, AUseCase, BUseCase)
If I do this, the NewRouter params will just grow as far as the project grow. It seem not like a good way to solve that.
Does anyone have idea about it?
I'm trying to use this template, but I'm stuck with the same damn problem. Can't seem to find a way out of this mess.
Don't use the template, make your own code architecture for a project you building.
You could create a "Deps" structure. Initialize it with a constructor and pass this structure to the router.
´´´ type Deps struct { UseCaseA *usecases.UseCaseA ... } ´´´