forked from ebhomengo/niki
45 lines
1.2 KiB
Go
45 lines
1.2 KiB
Go
package accountapp
|
|
|
|
import (
|
|
"log"
|
|
|
|
"git.gocasts.ir/ebhomengo/niki/accountapp/delivery/grpc"
|
|
"git.gocasts.ir/ebhomengo/niki/adapter/kavenegar"
|
|
"git.gocasts.ir/ebhomengo/niki/adapter/redis"
|
|
"git.gocasts.ir/ebhomengo/niki/domain/account/repository/mysql"
|
|
redisRepo "git.gocasts.ir/ebhomengo/niki/domain/account/repository/redis"
|
|
"git.gocasts.ir/ebhomengo/niki/domain/account/service"
|
|
database "git.gocasts.ir/ebhomengo/niki/pkg/database/mysql"
|
|
rpcPkg "git.gocasts.ir/ebhomengo/niki/pkg/grpc"
|
|
)
|
|
|
|
type Application struct {
|
|
GrpcServer grpc.Server
|
|
Config Config
|
|
accountSvc service.Service
|
|
}
|
|
|
|
func Setup(cfg Config, db *database.DB) Application {
|
|
redisConn := redis.New(cfg.Redis)
|
|
otpRepo := redisRepo.NewRepositoryOtp(redisConn)
|
|
mysqlRepo := mysql.New(db)
|
|
smsAdapter := kavenegar.New(cfg.Kavenegar)
|
|
accountSvc := service.NewService(cfg.accountSvc, otpRepo, mysqlRepo, smsAdapter)
|
|
|
|
rpcServer := rpcPkg.New(cfg.grpcServerCfg)
|
|
|
|
return Application{
|
|
accountSvc: accountSvc,
|
|
Config: cfg,
|
|
GrpcServer: grpc.New(rpcServer, accountSvc),
|
|
}
|
|
}
|
|
|
|
func (app *Application) Start() {
|
|
err := app.GrpcServer.Start()
|
|
if err != nil {
|
|
log.Fatalf("error in serving GRPC server: %v", err)
|
|
}
|
|
|
|
}
|