package main import ( "fmt" "log" "net/http" "os" "strings" "pdf-form-api/db" "pdf-form-api/handlers" ) func main() { loadEnvFile(".env.local") storeDir := os.Getenv("PDF_STORE_DIR") if storeDir == "" { storeDir = "./data" } dbPath := os.Getenv("PDF_DB_PATH") if dbPath == "" { dbPath = "./data/pdf_forms.db" } port := os.Getenv("PORT") if port == "" { port = "8080" } database, err := db.InitDB(dbPath, storeDir) if err != nil { log.Fatalf("Failed to initialize database: %v", err) } defer database.Close() srv := handlers.NewServer(database, storeDir) addr := fmt.Sprintf(":%s", port) log.Printf("Server starting on %s", addr) log.Printf("PDFs stored in: %s", storeDir) log.Printf("Database at: %s", dbPath) if err := http.ListenAndServe(addr, srv.Routes()); err != nil { log.Fatalf("Server failed: %v", err) } } func loadEnvFile(path string) { data, err := os.ReadFile(path) if err != nil { return } for _, line := range strings.Split(string(data), "\n") { line = strings.TrimSpace(line) if line == "" || strings.HasPrefix(line, "#") { continue } parts := strings.SplitN(line, "=", 2) if len(parts) == 2 { os.Setenv(strings.TrimSpace(parts[0]), strings.TrimSpace(parts[1])) } } }