saveinmed/seeder-api/main.go

61 lines
1.3 KiB
Go

package main
import (
_ "embed"
"log"
"net/http"
"os"
"github.com/joho/godotenv"
"github.com/saveinmed/seeder-api/pkg/seeder"
)
//go:embed docs/openapi.json
var swaggerJSON string
func main() {
godotenv.Load()
port := os.Getenv("PORT")
if port == "" {
port = "8080"
}
http.HandleFunc("/seed", func(w http.ResponseWriter, r *http.Request) {
if r.Method != http.MethodPost {
http.Error(w, "Method not allowed", http.StatusMethodNotAllowed)
return
}
dsn := os.Getenv("DATABASE_URL")
if dsn == "" {
http.Error(w, "DATABASE_URL not set", http.StatusInternalServerError)
return
}
mode := r.URL.Query().Get("mode")
result, err := seeder.Seed(dsn, mode)
if err != nil {
log.Printf("Seeder error: %v", err)
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
w.Header().Set("Content-Type", "application/json")
w.Write([]byte(result))
})
http.HandleFunc("/swagger.json", func(w http.ResponseWriter, r *http.Request) {
if r.Method != http.MethodGet {
http.Error(w, "Method not allowed", http.StatusMethodNotAllowed)
return
}
w.Header().Set("Content-Type", "application/json")
w.Write([]byte(swaggerJSON))
})
log.Printf("Seeder API listening on port %s", port)
if err := http.ListenAndServe(":"+port, nil); err != nil {
log.Fatalf("Server error: %v", err)
}
}