package main import ( "database/sql" "fmt" "log" "net/http" "os" "gitea.oblak.solutions/dimitar/gorss/internal/database" "github.com/go-chi/chi" "github.com/go-chi/cors" "github.com/joho/godotenv" _ "github.com/lib/pq" ) type apiConfig struct { DB *database.Queries } func main() { godotenv.Load(".env") portString := os.Getenv("PORT") fmt.Println("hello on: ", portString) if portString == "" { log.Fatal("$PORT must be set") } dbUrl := os.Getenv("DB_URL") if dbUrl == "" { log.Fatal("$DB_URL must be set") } conn, err := sql.Open("postgres", dbUrl) if err != nil { log.Fatal("Error opening database connection: ", err) } queries := database.New(conn) defer conn.Close() apiCfg := apiConfig{ DB: queries, } router := chi.NewRouter() srv := &http.Server{ Handler: router, Addr: ":" + portString, } router.Use(cors.Handler(cors.Options{ AllowedOrigins: []string{"*"}, AllowedMethods: []string{"GET", "POST", "PUT", "DELETE", "OPTIONS"}, AllowedHeaders: []string{"*"}, ExposedHeaders: []string{"Link"}, AllowCredentials: false, MaxAge: 300, })) routerV1 := chi.NewRouter() routerV1.Get("/health", HandlerHealth) routerV1.Get("/error", HandlerErrorResponse) routerV1.Post("/users", apiCfg.HandlerCreateUser) router.Mount("/v1", routerV1) log.Default().Printf("server running on port: %v", portString) srv.ListenAndServe() if err != nil { log.Fatal("Error starting server: ", err) } fmt.Println("PORT", portString) }