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) } }