github.com/lucasscarioca/music-stash@v0.0.0-20230829021135-a8b8893b12a5/cmd/server/main.go (about) 1 package main 2 3 import ( 4 "context" 5 "fmt" 6 "net/http" 7 "os" 8 "os/signal" 9 "time" 10 11 "github.com/labstack/echo/v4" 12 "github.com/lucasscarioca/music-stash/configs" 13 "github.com/lucasscarioca/music-stash/internal/routes" 14 "github.com/lucasscarioca/music-stash/internal/routes/middlewares" 15 ) 16 17 func main() { 18 configs.Load() 19 20 // db.Connect() 21 22 e := echo.New() 23 middlewares.Mount(e) 24 routes.Mount(e) 25 26 fmt.Printf("🚀 Starting server on port: %s\n", configs.GetPort()) 27 go func() { 28 if err := e.Start(fmt.Sprintf(":%s", configs.GetPort())); err != nil && err != http.ErrServerClosed { 29 e.Logger.Fatal("shutting down the server") 30 } 31 }() 32 // Wait for interrupt signal to gracefully shutdown the server 33 quit := make(chan os.Signal, 1) 34 signal.Notify(quit, os.Interrupt) 35 <-quit 36 ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) 37 defer cancel() 38 if err := e.Shutdown(ctx); err != nil { 39 e.Logger.Fatal(err) 40 } 41 }