go-clean-template icon indicating copy to clipboard operation
go-clean-template copied to clipboard

About multiple usecases

Open YJack0000 opened this issue 1 year ago • 3 comments

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?

YJack0000 avatar Nov 04 '23 17:11 YJack0000

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.

melazyk avatar Nov 12 '23 11:11 melazyk

Don't use the template, make your own code architecture for a project you building.

ysomad avatar Dec 02 '23 13:12 ysomad

You could create a "Deps" structure. Initialize it with a constructor and pass this structure to the router.

´´´ type Deps struct { UseCaseA *usecases.UseCaseA ... } ´´´

SebUndefined avatar Jan 04 '24 17:01 SebUndefined