package main import ( "encoding/json" "fmt" "html" "io/ioutil" "net/http" "net/url" "regexp" "strconv" "strings" "time" "github.com/PuerkitoBio/goquery" "github.com/anikhasibul/queue" "github.com/jmoiron/sqlx" log "github.com/sirupsen/logrus" ) type App struct { Config *Config DB *sqlx.DB Now time.Time } func main() { cfg, err := LoadConfig("config.json") if err != nil { log.Fatalf("failed to load config: %v", err) } app := App{Config: cfg} app.Now = time.Now() log.Debug(fmt.Sprintf(`Connecting to "%s" database "%s" as user "%s" on host "%s:%s" with extra options "%s".`, app.Config.DBDriver, app.Config.DBDBName, app.Config.DBUser, app.Config.DBHost, app.Config.DBPort, app.Config.DBOptions)) app.DB, err = sqlx.Connect(app.Config.DBDriver, app.Config.DBUser+":"+app.Config.DBPassword+"@tcp("+app.Config.DBHost+":"+app.Config.DBPort+")/"+app.Config.DBDBName+"?"+app.Config.DBOptions) if err != nil { log.Fatal(err, "Cannot connect to database") } if err = app.DB.Ping(); err != nil { log.Fatal(err, "No connection to database") } defer app.DB.Close() }