func main()

in cmd/api/main.go [22:52]


func main() {
	var opts options
	if _, err := flags.Parse(&opts); err != nil {
		os.Exit(1)
	}

	// Connect database
	ctx := context.Background()
	db := repo.NewDatabase(opts.DatabaseUrl, maxDbConnections)

	if err := db.Connect(ctx); err != nil {
		log.Fatalf("Error connecting to database: %v\n", err)
	}
	defer db.Close()

	if exists, err := db.PingTable(); !exists || err != nil {
		log.Fatalf("Database has not been initialized: %v\n", err)
	}

	// Start server
	router := router.New(db)
	server := http.Server{
		Addr:    fmt.Sprintf(":%d", opts.Port),
		Handler: router,
	}

	log.Println("Starting server on port", server.Addr)
	if err := server.ListenAndServe(); err != nil {
		log.Fatalf("Error in server: %v\n", err)
	}
}