func updateArticle(a content.Article, tx *sqlx.Tx, db *db.DB, logger webfw.Logger) { if a.HasErr() { return } if err := a.Validate(); err != nil { a.Err(err) return } logger.Infof("Updating article %s\n", a) d := a.Data() s := db.SQL() stmt, err := tx.Preparex(s.Article.Update) if err != nil { a.Err(err) return } defer stmt.Close() res, err := stmt.Exec(d.Title, d.Description, d.Date, d.Guid, d.Link, d.FeedId) if err != nil { a.Err(err) return } if num, err := res.RowsAffected(); err != nil && err == sql.ErrNoRows || num == 0 { logger.Infof("Creating article %s\n", a) aId, err := db.CreateWithId(tx, s.Article.Create, d.FeedId, d.Link, d.Guid, d.Title, d.Description, d.Date) if err != nil { a.Err(fmt.Errorf("Error updating article %s (guid - %v, link - %s): %v", a, d.Guid, d.Link, err)) return } d.Id = data.ArticleId(aId) d.IsNew = true a.Data(d) } }