forked from ebhomengo/niki
48 lines
1.4 KiB
Go
48 lines
1.4 KiB
Go
package driverapp
|
|
|
|
import (
|
|
"git.gocasts.ir/ebhomengo/niki/adapter/kavenegar"
|
|
"git.gocasts.ir/ebhomengo/niki/adapter/redis"
|
|
"git.gocasts.ir/ebhomengo/niki/driverapp/delivery/http"
|
|
repo "git.gocasts.ir/ebhomengo/niki/driverapp/repository/mysql"
|
|
otp "git.gocasts.ir/ebhomengo/niki/driverapp/repository/redis"
|
|
"git.gocasts.ir/ebhomengo/niki/driverapp/service"
|
|
"git.gocasts.ir/ebhomengo/niki/pkg/http_server"
|
|
"git.gocasts.ir/ebhomengo/niki/repository/mysql"
|
|
)
|
|
|
|
type Application struct {
|
|
driverSvc service.Service
|
|
driverRepo repo.DriverRepo
|
|
driverRepoOtp otp.RepositoryOtp
|
|
driverHandler http.Handler
|
|
driverHttpServer http.Server
|
|
driverConfig Config
|
|
}
|
|
|
|
func Setup(config Config, conn *mysql.DB) Application {
|
|
driverRepo := repo.New(conn)
|
|
connRedis := redis.New(config.Redis)
|
|
driverRepoOtp := otp.NewRepositoryOtp(connRedis)
|
|
kavenegarSms := kavenegar.New(config.Kavenegar)
|
|
driverValidator := service.NewValidator()
|
|
driverSvc := service.NewService(config.DriverSvc, driverRepoOtp, driverRepo, kavenegarSms, driverValidator)
|
|
driverHandler := http.NewHandler(driverSvc)
|
|
|
|
httpServer := http_server.NewServer(config.HttpServer)
|
|
|
|
return Application{
|
|
driverSvc: driverSvc,
|
|
driverRepo: driverRepo,
|
|
driverRepoOtp: driverRepoOtp,
|
|
driverHandler: driverHandler,
|
|
driverHttpServer: http.New(httpServer, driverHandler),
|
|
driverConfig: config,
|
|
}
|
|
|
|
}
|
|
|
|
func (app Application) Start() {
|
|
app.driverHttpServer.Serve()
|
|
}
|