Add ability to delete posts

This commit is contained in:
Dominic Ferrando
2025-04-23 17:10:59 -04:00
parent 62a1377be0
commit c5453ed50a
5 changed files with 123 additions and 21 deletions
+52 -6
View File
@@ -242,14 +242,18 @@ func DeleteThread(db Queryer, threadId int) error {
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 pruneMediaFullPath != "" {
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, pruneMediaThumbPath)); err != nil {
if !errors.Is(err, fs.ErrNotExist) {
return err
if pruneMediaThumbPath != "" {
if err := os.Remove(path.Join(util.POST_MEDIA_THUMB_PATH, pruneMediaThumbPath)); err != nil {
if !errors.Is(err, fs.ErrNotExist) {
return err
}
}
}
}
@@ -265,6 +269,48 @@ func DeleteThread(db Queryer, threadId int) error {
return nil
}
func DeletePost(db *sql.DB, postId int) error {
// cleanup images
row := db.QueryRow(`
SELECT media_path, thumb_path
FROM posts
WHERE id = ?`, postId)
var (
pruneMediaThumbPath string
pruneMediaFullPath string
)
if err := row.Scan(&pruneMediaFullPath, &pruneMediaThumbPath); err != nil {
return err
}
if pruneMediaFullPath != "" {
if err := os.Remove(path.Join(util.POST_MEDIA_FULL_PATH, pruneMediaFullPath)); err != nil {
if !errors.Is(err, fs.ErrNotExist) {
return err
}
}
}
if pruneMediaThumbPath != "" {
if err := os.Remove(path.Join(util.POST_MEDIA_THUMB_PATH, pruneMediaThumbPath)); err != nil {
if !errors.Is(err, fs.ErrNotExist) {
return err
}
}
}
// delete post
_, err := db.Exec(`
DELETE FROM posts
WHERE id = ?`, postId)
if err != nil {
return err
}
return nil
}
func GetAdmin(db *sql.DB, username string) (Admin, error) {
row := db.QueryRow(`
SELECT username, password
+1 -1
View File
@@ -30,7 +30,7 @@ const MAX_THREAD_COUNT = 50
const MAX_BODY_LEN = 3000
const MAX_SUBJECT_LEN = 50
var SUPPORTED_IMAGE_MIME_TYPES = []string{"image/jpeg", "image/png", "image/gif", "image/webp"}
var SUPPORTED_IMAGE_MIME_TYPES = []string{"image/jpeg", "image/png", "image/gif"}
var SUPPORTED_VIDEO_MIME_TYPES = []string{"video/webm", "video/mp4", "video/ogg"}
type PostMediaType int64