forked from ebhomengo/niki
63 lines
1.8 KiB
Go
63 lines
1.8 KiB
Go
package benefactorapp
|
|
|
|
import (
|
|
"context"
|
|
benefactorHttp "git.gocasts.ir/ebhomengo/niki/benefactorapp/delivery/http"
|
|
repo "git.gocasts.ir/ebhomengo/niki/benefactorapp/repository/database"
|
|
benefactor "git.gocasts.ir/ebhomengo/niki/benefactorapp/service"
|
|
mySql "git.gocasts.ir/ebhomengo/niki/pkg/database/mysql"
|
|
httpserver "git.gocasts.ir/ebhomengo/niki/pkg/httpserver"
|
|
logger "git.gocasts.ir/ebhomengo/niki/pkg/logger"
|
|
)
|
|
|
|
type Application struct {
|
|
Config Config
|
|
HTTPServer benefactorHttp.Server
|
|
BenefactorService benefactor.Service
|
|
BenefactorHandler benefactorHttp.Handler
|
|
BenefactorRepo benefactor.Repository
|
|
DBConn mySql.DB
|
|
}
|
|
|
|
func Setup(ctx context.Context, config Config, DB mySql.DB) *Application {
|
|
log := logger.L()
|
|
log.Info("logger starting ...")
|
|
|
|
db := mySql.New(config.MySQLDB)
|
|
defer func() {
|
|
if err := db.CloseStatements(); err != nil {
|
|
log.Info("Error closing statements: %v\n", err)
|
|
}
|
|
}()
|
|
log.Info("mysql connection starting ...")
|
|
|
|
// Initialize repositories
|
|
benefactorRepo := repo.New(db)
|
|
benefactorValidator := benefactor.NewValidator(benefactorRepo)
|
|
|
|
benefactorSvc := benefactor.NewService(benefactorRepo, benefactorValidator)
|
|
benefactorHandler := benefactorHttp.NewHandler(benefactorSvc)
|
|
|
|
hServer, hErr := httpserver.New(config.HTTPServer)
|
|
if hErr != nil {
|
|
log.Error("Http Server error: %v,\n", hErr)
|
|
}
|
|
httpServer := benefactorHttp.NewServer(*hServer, *benefactorHandler)
|
|
|
|
return &Application{
|
|
Config: config,
|
|
HTTPServer: httpServer,
|
|
BenefactorService: benefactorSvc,
|
|
BenefactorHandler: *benefactorHandler,
|
|
BenefactorRepo: benefactorRepo,
|
|
DBConn: DB,
|
|
}
|
|
|
|
}
|
|
|
|
func (app *Application) Start() {
|
|
log := logger.L()
|
|
log.Info("app starting ...")
|
|
// TODO implementaion
|
|
}
|