2024-01-29 17:52:31 +00:00
|
|
|
package main
|
|
|
|
|
2024-01-29 18:51:23 +00:00
|
|
|
import (
|
|
|
|
"context"
|
|
|
|
"log"
|
|
|
|
"net/http"
|
2024-01-29 18:53:15 +00:00
|
|
|
"os"
|
2024-01-29 18:51:23 +00:00
|
|
|
|
|
|
|
"github.com/babariviere/short/internal/api"
|
|
|
|
"github.com/babariviere/short/internal/db"
|
|
|
|
"github.com/babariviere/short/internal/oas"
|
|
|
|
"github.com/jackc/pgx/v5"
|
|
|
|
)
|
2024-01-29 17:52:31 +00:00
|
|
|
|
|
|
|
func main() {
|
2024-01-29 18:53:15 +00:00
|
|
|
// This is rude but at least we can configure the database URL securely.
|
|
|
|
psqlUrl := os.Getenv("DATABASE_URL")
|
|
|
|
if psqlUrl == "" {
|
|
|
|
log.Fatalln("DATABASE_URL is not configured.")
|
|
|
|
}
|
|
|
|
|
|
|
|
psql, err := pgx.Connect(context.Background(), psqlUrl)
|
2024-01-29 18:51:23 +00:00
|
|
|
if err != nil {
|
|
|
|
log.Fatalf("cannot connect to database: %v", err)
|
|
|
|
}
|
|
|
|
|
|
|
|
queries := db.New(psql)
|
|
|
|
handler := api.NewHandler(queries)
|
|
|
|
|
|
|
|
srv, err := oas.NewServer(handler)
|
|
|
|
if err != nil {
|
|
|
|
log.Fatalf("failed te create OpenAPI server: %v", err)
|
|
|
|
}
|
|
|
|
|
|
|
|
log.Println("Listening on :8080")
|
|
|
|
if err = http.ListenAndServe(":8080", srv); err != nil {
|
|
|
|
log.Fatal(err)
|
|
|
|
}
|
2024-01-29 17:52:31 +00:00
|
|
|
}
|