package online_order import ( "context" "log" "github.com/gin-gonic/gin" _ "github.com/go-sql-driver/mysql" logger "github.com/rs/zerolog/log" "online-order/api/middlewares" "online-order/configs" "online-order/ent/migrate" "online-order/entity" ) // To load .env file func init() { configs.Initialize() } func main() { logger.Info().Msg("Server starting ...") conf := configs.LoadConfigEnv() // Start by connecting to database db := configs.NewDBConnection() defer db.Close() // Run the automatic migration tool to create all schema resources. ctx := context.Background() err := db.Schema.Create( ctx, migrate.WithDropIndex(true), migrate.WithDropColumn(true), ) if err != nil { log.Fatalf("failed creating schema resources: %v", err) } app := gin.Default() api_v1 := app.Group("api/v1") api_restricted := app.Group("api/v1/in") router_base := &entity.RouterBase{ Database: db, OpenApp: api_v1, } router := &entity.Routers{ RouterBase: *router_base, RestrictedApp: api_restricted, } middlewareController := middlewares.NewMiddlewareRouters(router) api_restricted.Use(middlewareController.JwAuthtMiddleware()) handler_users.NewUserRouters(router) logger.Info().Msg("Server ready to go ...") app.Run(conf.ServerPort) }