diff options
| -rw-r--r-- | database.go | 33 |
1 files changed, 30 insertions, 3 deletions
diff --git a/database.go b/database.go index 20c135b..2852c7c 100644 --- a/database.go +++ b/database.go @@ -242,14 +242,41 @@ func (app *App) wikipediaMergeArticles(id_to_delete int, correct_url string) err func (app *App) deleteOrphanedArticles() error { query := ` - DELETE a FROM + SELECT a.id FROM article AS a LEFT JOIN discussion AS d ON a.id = d.article_id WHERE d.id IS NULL;` - _, err := app.DB.Exec(query) + row := app.DB.QueryRow(query) + + var article_id int + err := row.Scan(&article_id) + + if err != nil { + if err == sql.ErrNoRows { + return nil + } else { + log.Warnf("deleteOrphanedArticles: Executing query failed: %s", err.Error()) + return err + } + } + + query = ` + DELETE FROM article_category WHERE article_id = ? + ` + _, err = app.DB.Exec(query, article_id) + if err != nil { + log.Warnf("deleteOrphanedArticles: Delete from article_category query failed: %s", err.Error()) + return err + } + + query = ` + DELETE FROM article WHERE id = ? + + ` + _, err = app.DB.Exec(query, article_id) if err != nil { - log.Warnf("deleteOrphanedArticles: Executing query failed: %s", err.Error()) + log.Warnf("deleteOrphanedArticles: Delete from article query failed: %s", err.Error()) return err } |
