Add ability to delete threads. Fix thread deletion logic

This commit is contained in:
Dominic Ferrando
2025-04-23 15:47:15 -04:00
parent a28cb483fa
commit e341c5d8c9
4 changed files with 57 additions and 17 deletions
+16 -11
View File
@@ -2,6 +2,8 @@ package database
import (
"database/sql"
"errors"
"io/fs"
"os"
"path"
@@ -223,7 +225,7 @@ func PutPost(db Queryer, boardSlug string, threadId int, body string, mediaPath
func DeleteThread(db Queryer, threadId int) error {
// cleanup images
rows, err := db.Query(`
SELECT media_path
SELECT media_path, thumb_path
FROM posts
WHERE thread_id = ?`, threadId)
if err != nil {
@@ -231,21 +233,24 @@ func DeleteThread(db Queryer, threadId int) error {
}
defer rows.Close()
var pruneMediaPaths []string
for rows.Next() {
var pruneMediaPath string
if err := rows.Scan(&pruneMediaPath); err != nil {
var (
pruneMediaThumbPath string
pruneMediaFullPath string
)
if err := rows.Scan(&pruneMediaFullPath, &pruneMediaThumbPath); err != nil {
return err
}
pruneMediaPaths = append(pruneMediaPaths, pruneMediaPath)
}
for _, pruneMediaPath := range pruneMediaPaths {
if err := os.Remove(path.Join(util.POST_MEDIA_FULL_PATH, pruneMediaPath)); err != nil && !os.IsNotExist(err) {
return err
if err := os.Remove(path.Join(util.POST_MEDIA_FULL_PATH, pruneMediaFullPath)); err != nil {
if !errors.Is(err, fs.ErrNotExist) {
return err
}
}
if err := os.Remove(path.Join(util.POST_MEDIA_THUMB_PATH, pruneMediaPath)); err != nil && !os.IsNotExist(err) {
return err
if err := os.Remove(path.Join(util.POST_MEDIA_THUMB_PATH, pruneMediaThumbPath)); err != nil {
if !errors.Is(err, fs.ErrNotExist) {
return err
}
}
}