1package main23import (4 "context"5 "log/slog"6 "os"7 "os/signal"8 "syscall"910 "website-feeds/server"11 "website-feeds/store"12)1314func run() int {15 databaseURL := os.Getenv("WEBSITE_FEEDS_DATABASE_URL")16 configError := false17 if databaseURL == "" {18 slog.Error("WEBSITE_FEEDS_DATABASE_URL was empty")19 configError = true20 }2122 bindAddr := os.Getenv("WEBSITE_FEEDS_BIND_ADDR")23 if bindAddr == "" {24 slog.Error("WEBSITE_FEEDS_BIND_ADDR was empty")25 configError = true26 }2728 if configError {29 slog.Error("Failed to read configuration. See logs for details")30 return 131 }3233 ctx := context.Background()34 ctx, stop := signal.NotifyContext(35 ctx,36 syscall.SIGINT,37 syscall.SIGTERM,38 syscall.SIGQUIT,39 )40 defer stop()4142 slog.Info("Connecting to store")43 s, err := store.NewPostgres(ctx, databaseURL)44 if err != nil {45 slog.Error(46 "Failed to connect to store",47 slog.Any("err", err),48 )49 return 150 }51 defer s.Close()5253 server.Run(ctx, stop, s, bindAddr)5455 return 056}5758func main() {59 os.Exit(run())60}