diff --git a/cmd/backend/articles.go b/cmd/backend/articles.go index aa23ce9..bc8b4f8 100644 --- a/cmd/backend/articles.go +++ b/cmd/backend/articles.go @@ -345,6 +345,33 @@ func (db *DB) DeleteArticle(id int64) error { return nil } +func (db *DB) GetAllArticles() ([]*Article, error) { + query := ` + SELECT title, created, banner_link, summary, published, creator_id, issue_id, edited_id, clicks, is_in_issue, auto_generated, uuid + FROM articles + ` + + rows, err := db.Query(query) + if err != nil { + return nil, fmt.Errorf("error querying DB: %v", err) + } + + articles := make([]*Article, 0) + for rows.Next() { + article := new(Article) + if err = rows.Scan(&article.Title, &article.Created, &article.BannerLink, &article.Summary, &article.Published, &article.CreatorID, &article.IssueID, &article.EditedID, &article.Clicks, &article.IsInIssue, &article.AutoGenerated, &article.UUID); err != nil { + return nil, fmt.Errorf("error scanning rows: %v", err) + } + articles = append(articles, article) + } + + if err := rows.Err(); err != nil { + return nil, fmt.Errorf("error iterating over rows: %v", err) + } + + return articles, nil +} + func WriteArticleToFile(c *Config, articleUUID uuid.UUID, content []byte) error { articlePath := filepath.Join(c.ArticleDir, fmt.Sprint(articleUUID, ".md")) diff --git a/cmd/backend/images.go b/cmd/backend/images.go index f7c5160..481b8d0 100644 --- a/cmd/backend/images.go +++ b/cmd/backend/images.go @@ -56,7 +56,20 @@ func checkImageUsage(c *Config, db *DB, name string) (bool, error) { for _, user := range users { if name == user.ProfilePicLink { - return true, nil + imageWasFound = true + } + } + } + + if !imageWasFound { + articles, err := db.GetAllArticles() + if err != nil { + return false, fmt.Errorf("error getting all articles: %v", err) + } + + for _, article := range articles { + if name == article.BannerLink { + imageWasFound = true } } }