package server import ( "net/http" "GoMembership/internal/config" "GoMembership/internal/controllers" "GoMembership/internal/database" "GoMembership/internal/repositories" // "GoMembership/internal/middlewares" "GoMembership/internal/routes" "GoMembership/internal/services" "GoMembership/pkg/logger" "github.com/gin-gonic/gin" ) func Run() { cfg := config.LoadConfig() logger.Info.Printf("Config: %+v", cfg) err := database.InitDB(cfg.DB.Path) if err != nil { logger.Error.Fatalf("Couldn't init database: %v", err) } emailService := services.NewEmailService(cfg.SMTP.Host, cfg.SMTP.Port, cfg.SMTP.User, cfg.SMTP.Password, cfg.SMTP.AdminEmail) var consentRepo repositories.ConsentRepositoryInterface = &repositories.ConsentRepository{} consentService := &services.ConsentService{Repo: consentRepo} var bankAccountRepo repositories.BankAccountRepositoryInterface = &repositories.BankAccountRepository{} bankAccountService := &services.BankAccountService{Repo: bankAccountRepo} var membershipRepo repositories.MembershipRepositoryInterface = &repositories.MembershipRepository{} var subscriptionRepo repositories.SubscriptionModelsRepositoryInterface = &repositories.SubscriptionModelsRepository{} membershipService := &services.MembershipService{Repo: membershipRepo, SubscriptionRepo: subscriptionRepo} var userRepo repositories.UserRepositoryInterface = &repositories.UserRepository{} userService := &services.UserService{Repo: userRepo} userController := &controllers.UserController{Service: userService, EmailService: emailService, ConsentService: consentService, BankAccountService: bankAccountService, MembershipService: membershipService} membershipController := &controllers.MembershipController{Service: *membershipService} router := gin.Default() // gin.SetMode(gin.ReleaseMode) router.Use(gin.Logger()) // router.Use(middlewares.LoggerMiddleware()) routes.RegisterRoutes(router, userController, membershipController) // create subrouter for teh authenticated area /account // also pthprefix matches everything below /account // accountRouter := router.PathPrefix("/account").Subrouter() // accountRouter.Use(middlewares.AuthMiddleware) logger.Info.Println("Starting server on :8080") if err := http.ListenAndServe(":8080", router); err != nil { logger.Error.Fatalf("could not start server: %v", err) } }