package main import ( "fmt" 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() query = `SELECT DISTINCT url FROM all_view ORDER BY URL ASC` short_urls := []string{} err = app.DB.Select(&short_urls, query) if err != nil { return err } for rows.Next() { var offer_db Angebot err = rows.StructScan(&offer_db) if err != nil { return err } for { generated_short_url := getRandomString(5) if !stringInSlice(generated_short_url, short_urls) { offer_db.Short_url = generated_short_url log.Debug("short_url: " + string(generated_short_url) + " ( " + offer_db.Url + " )") Angebote = append(Angebote, offer_db) break } } } 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) offer_db.Warn("post_process.go: Update query failed.") } } } return nil }