summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--database.go33
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
}