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  }