github.com/gudimz/urlShortener@v0.0.0-20230129195305-c8ee33059a67/cmd/api/main.go (about)

     1  package main
     2  
     3  import (
     4  	"context"
     5  	"fmt"
     6  	"github.com/gudimz/urlShortener/internal/config"
     7  	"github.com/gudimz/urlShortener/internal/db/postgres"
     8  	"github.com/gudimz/urlShortener/internal/server"
     9  	"github.com/gudimz/urlShortener/internal/shorten"
    10  	shorten2 "github.com/gudimz/urlShortener/internal/storage/shorten"
    11  	"github.com/gudimz/urlShortener/pkg/logging"
    12  	"net/http"
    13  )
    14  
    15  func main() {
    16  
    17  	var (
    18  		logger = logging.GetLogger()
    19  		cfg    = config.GetConfig()
    20  	)
    21  
    22  	logger.Infoln("Trying to connect to db...")
    23  	dbPool, err := postgres.NewClient(context.Background(), cfg.Postgres)
    24  	if err != nil {
    25  		logger.Fatalln(err)
    26  	}
    27  	defer dbPool.Close()
    28  
    29  	var (
    30  		storage   = shorten2.NewStorage(dbPool, logger)
    31  		shortener = shorten.NewService(storage)
    32  		srv       = server.NewServer(shortener, logger)
    33  	)
    34  
    35  	run(srv, cfg)
    36  }
    37  
    38  func run(srv *server.Server, cfg *config.Config) {
    39  	var (
    40  		logger = logging.GetLogger()
    41  	)
    42  	logger.Infoln(fmt.Sprintf("Shorten listening port :%s", cfg.Server.Port))
    43  	err := http.ListenAndServe(fmt.Sprintf(":%s", cfg.Server.Port), srv)
    44  	if err != nil {
    45  		logger.Fatalf("error running server: %v", err)
    46  	}
    47  }