summaryrefslogtreecommitdiff
path: root/internal/processing/media/delete.go
diff options
context:
space:
mode:
authorLibravatar Tobi Smethurst <31960611+tsmethurst@users.noreply.github.com>2021-07-05 13:23:03 +0200
committerLibravatar GitHub <noreply@github.com>2021-07-05 13:23:03 +0200
commitd389e7b150df6ecd215c7b661b294ea153ad0103 (patch)
tree8739e3103cb5130875d903cc7fc72fd9db3b8434 /internal/processing/media/delete.go
parentFix 404 contact (#74) (diff)
downloadgotosocial-d389e7b150df6ecd215c7b661b294ea153ad0103.tar.xz
Domain block (#76)
* start work on admin domain blocking * move stuff around + further work on domain blocks * move + restructure processor * prep work for deleting account * tidy * go fmt * formatting * domain blocking more work * check domain blocks way earlier on * progress on delete account * delete more stuff when an account is gone * and more... * domain blocky block block * get individual domain block, delete a block
Diffstat (limited to 'internal/processing/media/delete.go')
-rw-r--r--internal/processing/media/delete.go51
1 files changed, 51 insertions, 0 deletions
diff --git a/internal/processing/media/delete.go b/internal/processing/media/delete.go
new file mode 100644
index 000000000..694d78ac3
--- /dev/null
+++ b/internal/processing/media/delete.go
@@ -0,0 +1,51 @@
+package media
+
+import (
+ "fmt"
+ "strings"
+
+ "github.com/superseriousbusiness/gotosocial/internal/db"
+ "github.com/superseriousbusiness/gotosocial/internal/gtserror"
+ "github.com/superseriousbusiness/gotosocial/internal/gtsmodel"
+)
+
+func (p *processor) Delete(mediaAttachmentID string) gtserror.WithCode {
+ a := &gtsmodel.MediaAttachment{}
+ if err := p.db.GetByID(mediaAttachmentID, a); err != nil {
+ if _, ok := err.(db.ErrNoEntries); ok {
+ // attachment already gone
+ return nil
+ }
+ // actual error
+ return gtserror.NewErrorInternalError(err)
+ }
+
+ errs := []string{}
+
+ // delete the thumbnail from storage
+ if a.Thumbnail.Path != "" {
+ if err := p.storage.RemoveFileAt(a.Thumbnail.Path); err != nil {
+ errs = append(errs, fmt.Sprintf("remove thumbnail at path %s: %s", a.Thumbnail.Path, err))
+ }
+ }
+
+ // delete the file from storage
+ if a.File.Path != "" {
+ if err := p.storage.RemoveFileAt(a.File.Path); err != nil {
+ errs = append(errs, fmt.Sprintf("remove file at path %s: %s", a.File.Path, err))
+ }
+ }
+
+ // delete the attachment
+ if err := p.db.DeleteByID(mediaAttachmentID, a); err != nil {
+ if _, ok := err.(db.ErrNoEntries); !ok {
+ errs = append(errs, fmt.Sprintf("remove attachment: %s", err))
+ }
+ }
+
+ if len(errs) != 0 {
+ return gtserror.NewErrorInternalError(fmt.Errorf("Delete: one or more errors removing attachment with id %s: %s", mediaAttachmentID, strings.Join(errs, "; ")))
+ }
+
+ return nil
+}