-
Notifications
You must be signed in to change notification settings - Fork 0
/
container.go
41 lines (37 loc) · 1.32 KB
/
container.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package container
import (
"github.com/sajjad1993/todo/internal/todo_list/adapter/broker/command_handlers"
"github.com/sajjad1993/todo/internal/todo_list/adapter/grpc"
"github.com/sajjad1993/todo/internal/todo_list/adapter/reposiroty/orm"
"github.com/sajjad1993/todo/internal/todo_list/app"
"github.com/sajjad1993/todo/internal/todo_list/config"
"github.com/sajjad1993/todo/internal/todo_list/domain/todo"
"github.com/sajjad1993/todo/pkg/log"
"github.com/sajjad1993/todo/pkg/meesage_broker"
"gorm.io/gorm"
)
type Container struct {
Logger log.Logger
Config config.Config
TodoService app.UseCase
TodoRepository todo.Repository
Consumer meesage_broker.Consumer
CommandsHandler *command_handlers.CommandsHandler
Database *gorm.DB
Handler *grpc.Handler
}
func NewContainer(Logger log.Logger, Config config.Config, TodoService app.UseCase, TodoRepository todo.Repository,
Consumer meesage_broker.Consumer, CommandsHandler *command_handlers.CommandsHandler, Handler *grpc.Handler,
Database *gorm.DB,
) (*Container, error) {
orm.Migrate(Database)
return &Container{
Logger: Logger,
Config: Config,
TodoService: TodoService,
Consumer: Consumer,
TodoRepository: TodoRepository,
CommandsHandler: CommandsHandler,
Handler: Handler,
}, nil
}