package main import ( "fmt" "log" "net/http" "novatech/config" "novatech/models" "novatech/routes" "novatech/shared" "github.com/gin-gonic/gin" "github.com/jinzhu/gorm" "github.com/qor/admin" ) var DB *gorm.DB func main() { // LOAD APPLICATION CONFIGURATION err := config.Load() if err != nil { log.Fatal(err) } // Db Connect and Close shared.Init() defer shared.CloseDb() // Initialize Admin interface Admin := admin.New(&admin.AdminConfig{DB: shared.GetDb()}) // Allow Admin to manage User resource Admin.AddResource(&models.User{}) // Initialize HTTP request multiplexer mux := http.NewServeMux() // Mount admin interface to mux Admin.MountTo("/admin", mux) // Start the admin server in a separate goroutine go func() { port := config.AppConfig.Service.Port fmt.Println("Admin server listening on :" + port) http.ListenAndServe(":" + port, mux) }() // Initialize Gin r := gin.Default() routes.InitRouter(r) // Start the Gin server on another port port := config.AppConfig.AdminService.Port fmt.Println("Application server listening on :" + port) r.Run(":" + port) }