Initial commit
This commit is contained in:
83
cmd/api/main.go
Normal file
83
cmd/api/main.go
Normal file
@@ -0,0 +1,83 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
"os/signal"
|
||||
"strconv"
|
||||
"syscall"
|
||||
"time"
|
||||
|
||||
"git.kling.dev/jared/WorkoutTrackerAPI/internal/database"
|
||||
"git.kling.dev/jared/WorkoutTrackerAPI/internal/server"
|
||||
)
|
||||
|
||||
func main() {
|
||||
dbHost := os.Getenv("DB_HOST")
|
||||
dbPort := os.Getenv("DB_PORT")
|
||||
dbUser := os.Getenv("DB_USER")
|
||||
dbPassword := os.Getenv("DB_PASSWORD")
|
||||
dbName := os.Getenv("DB_NAME")
|
||||
webPort := os.Getenv("PORT")
|
||||
|
||||
if dbHost == "" || dbPort == "" || dbUser == "" || dbPassword == "" || dbName == "" {
|
||||
log.Fatal("Not all database params are set")
|
||||
}
|
||||
dbPortParsed, err := strconv.ParseInt(dbPort, 10, 64)
|
||||
if err != nil {
|
||||
log.Fatal("Unable to parse db port to an int")
|
||||
}
|
||||
|
||||
if webPort == "" {
|
||||
webPort = "8080"
|
||||
}
|
||||
webPortParsed, err := strconv.ParseInt(webPort, 10, 64)
|
||||
if err != nil {
|
||||
log.Fatal("Unable to parse web port to an int")
|
||||
}
|
||||
|
||||
dbConn, err := database.NewConnection(database.Config{
|
||||
Host: dbHost,
|
||||
Port: int(dbPortParsed),
|
||||
User: dbUser,
|
||||
Password: dbPassword,
|
||||
DBName: dbName,
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
log.Fatal("Failed to connect to database: ", err)
|
||||
}
|
||||
|
||||
defer dbConn.Close()
|
||||
|
||||
jwtSecret := os.Getenv("JWT_SECRET")
|
||||
|
||||
if jwtSecret == "" {
|
||||
log.Fatal("Unable to determine the JWT_SECRET")
|
||||
}
|
||||
|
||||
s := server.NewServer(dbConn, jwtSecret)
|
||||
|
||||
go func() {
|
||||
fmt.Printf("Server listening on port %d\n", webPortParsed)
|
||||
webAddr := fmt.Sprintf(":%d", webPortParsed)
|
||||
s.Start(webAddr)
|
||||
}()
|
||||
|
||||
quit := make(chan os.Signal, 1)
|
||||
signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM)
|
||||
<-quit
|
||||
|
||||
log.Println("Shutting down server...")
|
||||
|
||||
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
|
||||
defer cancel()
|
||||
|
||||
if err := s.Shutdown(ctx); err != nil {
|
||||
log.Fatal("Server forced to shutdown:", err)
|
||||
}
|
||||
|
||||
log.Println("Server exited")
|
||||
}
|
||||
Reference in New Issue
Block a user