package main import ( "context" log "github.com/sirupsen/logrus" "merch-parser-api/config" _ "merch-parser-api/docs" //for swagger "merch-parser-api/internal/api/user" "merch-parser-api/internal/app" "merch-parser-api/internal/interfaces" "merch-parser-api/internal/provider/auth" "merch-parser-api/internal/provider/token" "merch-parser-api/internal/router" "merch-parser-api/pkg/db" "merch-parser-api/pkg/utils" ) // @Title Merch Parser // @BasePath /api/v2 // @Version 2.0.0-alpha // @SecurityDefinitions.apikey BearerAuth // @In header // @Name Authorization // @Description Введите "Bearer {your_token}" для аутентификации func main() { log.Debug("Starting merch-parser-api") //setup config //c := config.NewConfig() c := config.DevConfig() ctx := context.Background() //log level config.LogSetup(c.AppConf.LogLvl) database, err := db.Connection(c) if err != nil { log.WithError(err).Fatal("Main | Error connecting to database") } //base providers jwtProvider := token.NewJWT(token.Deps{ SecretKey: c.JWTConf.Secret, Issuer: c.JWTConf.Issuer, AccessExpire: c.JWTConf.AccessExpire, RefreshExpire: c.JWTConf.RefreshExpire, }) log.Debug("JWT provider initialized") utilsProvider := utils.NewUtils() log.Debug("Utils provider initialized") //deps providers routerHandler := router.NewRouter(router.Deps{ ApiPrefix: c.AppConf.ApiPrefix, GinMode: c.AppConf.GinMode, TokenProv: jwtProvider, }) log.Debug("Router handler initialized") authProvider := auth.NewHandler(auth.Deps{ DB: database, JwtProvider: jwtProvider, Utils: utilsProvider, }) log.Debug("Auth provider initialized") //register app modules users := user.NewHandler(user.Deps{ Auth: authProvider, DB: database, Utils: utilsProvider, ApiPrefix: c.AppConf.ApiPrefix, }) //collect modules modules := []interfaces.Module{ users, } //keep last appl := app.NewApp(app.Deps{ Host: c.AppConf.Host, Port: c.AppConf.Port, ApiPrefix: c.AppConf.ApiPrefix, RouterHandler: routerHandler, Modules: modules, }) err = appl.Run(ctx) if err != nil { log.WithError(err).Fatal("Main | Error starting app") return } }