48 lines
875 B
Go
48 lines
875 B
Go
package controller
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
|
|
"github.com/caarlos0/env/v6"
|
|
"github.com/joho/godotenv"
|
|
|
|
"gitlab.com/DeveloperDurp/DurpAPI/model"
|
|
"gitlab.com/DeveloperDurp/DurpAPI/storage"
|
|
)
|
|
|
|
type Controller struct {
|
|
Cfg model.Config
|
|
Dbcfg model.DBConfig
|
|
Db model.Repository
|
|
}
|
|
|
|
func NewController() *Controller {
|
|
err := godotenv.Load(".env")
|
|
if err != nil {
|
|
fmt.Println("no env file found")
|
|
}
|
|
|
|
controller := &Controller{
|
|
Cfg: model.Config{},
|
|
Dbcfg: model.DBConfig{},
|
|
}
|
|
|
|
err = env.Parse(&controller.Cfg)
|
|
if err != nil {
|
|
log.Fatalf("unable to parse environment variables: %e", err)
|
|
}
|
|
err = env.Parse(&controller.Dbcfg)
|
|
if err != nil {
|
|
log.Fatalf("unable to parse database variables: %e", err)
|
|
}
|
|
|
|
Db, err := storage.Connect(controller.Dbcfg)
|
|
if err != nil {
|
|
panic("Failed to connect to database")
|
|
}
|
|
controller.Db = *Db
|
|
|
|
return controller
|
|
}
|