package handlers import ( "database/sql" "time" "go-crm/internal/whatsapp" "go-crm/pkg/usecase" ) // App holds the application dependencies injected at startup. // All handler methods live on *App, eliminating package-level global state. type App struct { DB *sql.DB LeadService *usecase.LeadService WAConnector whatsapp.Connector } // NewApp constructs an App with the given database, lead service, and WhatsApp connector. func NewApp(db *sql.DB, leadSvc *usecase.LeadService, wa whatsapp.Connector) *App { return &App{DB: db, LeadService: leadSvc, WAConnector: wa} } // WAConnector is a package-level global kept for backward-compat with existing tests. // New code should use App.WAConnector via NewApp. var WAConnector whatsapp.Connector // SetupHandlers is kept for backward compatibility with existing tests. // New code should use NewApp directly. func SetupHandlers(db *sql.DB, wa whatsapp.Connector) { DB = db WAConnector = wa } func getCurrentTimestamp() int64 { return time.Now().Unix() }