package main import ( "fmt" "io/ioutil" "net/http" "net/url" log "github.com/sirupsen/logrus" ) func (app *App) post_process() error { if app.Config.DisableURLShorter { log.Debug("post_process.go: URL Shorter is disabled (via config)") } else { err := app.short_url() if err != nil { return err } } return nil } func (app *App) short_url() error { var Angebote []Angebot query := `SELECT id, long_url as url FROM all_view WHERE url IS NULL AND long_url IS NOT NULL` rows, err := app.DB.Queryx(query) if err != nil { return err } defer rows.Close() for rows.Next() { var offer_db Angebot err = rows.StructScan(&offer_db) if err != nil { return err } v := url.Values{} v.Set("key", app.Config.Polr_API_Key) v.Add("url", offer_db.Url) polr_url := app.Config.Polr_URL + "?" + v.Encode() log.Debug("polr_url: " + polr_url + " ( " + offer_db.Url + " )") resp, err := http.Get(polr_url) if err != nil { return err } defer resp.Body.Close() short_url, err := ioutil.ReadAll(resp.Body) if err != nil { return err } offer_db.Short_url = string(short_url) log.Debug("short_url: " + string(short_url) + " ( " + offer_db.Url + " )") Angebote = append(Angebote, offer_db) } for _, offer := range Angebote { _, err := app.DB.Exec(`UPDATE angebot SET short_url = ? WHERE id = ?`, offer.Short_url, offer.Id) if err != nil { return err } } return nil } func (app *App) fix_db() error { query := `SELECT id,name,age FROM all_view` rows, err := app.DB.Queryx(query) if err != nil { return err } defer rows.Close() for rows.Next() { var offer_db Angebot err = rows.StructScan(&offer_db) if err != nil { return err } update_query := `UPDATE angebot SET name = ?, age = ? WHERE id = ?` update_name := false update_age := false name := sanitize_name(offer_db.Name) if name != offer_db.Name { offer_db.Name = name update_name = true } if offer_db.Age == 0 { age := get_age_from_name(name) if age != 0 { offer_db.Age = age update_age = true } } if update_name || update_age { log.Debug(fmt.Sprintf(`UPDATE angebot SET name = "%s", age = %d WHERE id = %d`, offer_db.Name, offer_db.Age, offer_db.Id)) _, err = app.DB.Exec(update_query, offer_db.Name, offer_db.Age, offer_db.Id) if err != nil { offer_db.error_msg = err.Error() offer_db.error_ctx = fmt.Sprintf(`UPDATE angebot SET name = "%s", age = %d WHERE id = %d`, offer_db.Name, offer_db.Age, offer_db.Id) WarnOffer(offer_db, "post_process.go: Update query failed.") } } } return nil }