51 lines
1.1 KiB
Go
51 lines
1.1 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"github.com/jackc/pgx/v5/pgxpool"
|
|
"gitlab.mareshq.com/hq/backoffice/backoffice-api/internal/server"
|
|
"gitlab.mareshq.com/hq/backoffice/backoffice-api/internal/training"
|
|
"log"
|
|
"os"
|
|
"os/signal"
|
|
"syscall"
|
|
)
|
|
|
|
func main() {
|
|
logger := log.New(os.Stdout, "backoffice-api: ", log.LstdFlags)
|
|
ctx, cancel := signal.NotifyContext(context.Background(), syscall.SIGTERM, syscall.SIGINT)
|
|
defer cancel()
|
|
|
|
hostname, err := os.Hostname()
|
|
if err != nil {
|
|
logger.Fatalf("error: %v\n", err)
|
|
}
|
|
|
|
var connString string
|
|
connString, ok := os.LookupEnv("DATABASE_URL")
|
|
if !ok {
|
|
filePath, ok := os.LookupEnv("DATABASE_URL_FILE")
|
|
if !ok {
|
|
logger.Fatalf("error: DATABASE_URL or DATABASE_URL_FILE is not set\n")
|
|
}
|
|
|
|
bytes, err := os.ReadFile(filePath)
|
|
if err != nil {
|
|
logger.Fatalf("error: %v\n", err)
|
|
}
|
|
|
|
connString = string(bytes)
|
|
}
|
|
|
|
dbConn, err := pgxpool.New(ctx, connString)
|
|
if err != nil {
|
|
logger.Fatalf("error: %v\n", err)
|
|
}
|
|
|
|
trainingRepo := training.NewPostgresRepository(logger, dbConn)
|
|
|
|
s := server.NewServer(hostname, logger, trainingRepo)
|
|
if err := s.Run(ctx); err != nil {
|
|
logger.Fatalf("error: %v\n", err)
|
|
}
|
|
}
|