package main import ( "context" "log" "net/http" "os" "time" "gitea.starryskymeow.cn/B309/datamarket/internal/handler" "gitea.starryskymeow.cn/B309/datamarket/internal/repository" "github.com/go-chi/chi/v5" "github.com/go-chi/chi/v5/middleware" "github.com/jackc/pgx/v5/pgxpool" ) func main() { // db connect ctx := context.Background() pool, err := pgxpool.New(ctx, os.Getenv("DATABASE_URL")) if err != nil { log.Fatal(err) } defer pool.Close() if err := pool.Ping(ctx); err != nil { log.Fatal(err) } queries := repository.New(pool) // route r := chi.NewRouter() r.Use(middleware.RequestID) r.Use(middleware.RealIP) r.Use(middleware.Logger) r.Use(middleware.Recoverer) r.Use(middleware.Timeout(60 * time.Second)) r.Route("/api", func(r chi.Router) { r.Route("/assets", func(r chi.Router) { r.Post("/", handler.CreateDataAsset(queries)) r.Get("/", handler.ListDataAssets(queries)) r.Get("/{id}", handler.GetDataAsset(queries)) }) }) err = http.ListenAndServe(":8080", r) if err != nil { log.Fatal(err) } }