package main import ( "flag" "fmt" "log" "net/http" "os" "jiggablend/internal/api" "jiggablend/internal/auth" "jiggablend/internal/database" "jiggablend/internal/storage" ) func main() { var ( port = flag.String("port", getEnv("PORT", "8080"), "Server port") dbPath = flag.String("db", getEnv("DB_PATH", "jiggablend.db"), "Database path") storagePath = flag.String("storage", getEnv("STORAGE_PATH", "./jiggablend-storage"), "Storage path") ) flag.Parse() // Initialize database db, err := database.NewDB(*dbPath) if err != nil { log.Fatalf("Failed to initialize database: %v", err) } defer db.Close() // Initialize auth authHandler, err := auth.NewAuth(db.DB) if err != nil { log.Fatalf("Failed to initialize auth: %v", err) } // Initialize storage storageHandler, err := storage.NewStorage(*storagePath) if err != nil { log.Fatalf("Failed to initialize storage: %v", err) } // Create API server server, err := api.NewServer(db, authHandler, storageHandler) if err != nil { log.Fatalf("Failed to create server: %v", err) } // Start server addr := fmt.Sprintf(":%s", *port) log.Printf("Starting manager server on %s", addr) log.Printf("Database: %s", *dbPath) log.Printf("Storage: %s", *storagePath) if err := http.ListenAndServe(addr, server); err != nil { log.Fatalf("Server failed: %v", err) } } func getEnv(key, defaultValue string) string { if value := os.Getenv(key); value != "" { return value } return defaultValue }