github.com/cozy/cozy-stack@v0.0.0-20240327093429-939e4a21320e/model/note/delete.go (about) 1 package note 2 3 import ( 4 "fmt" 5 "runtime" 6 7 "github.com/cozy/cozy-stack/model/instance" 8 "github.com/cozy/cozy-stack/model/vfs" 9 "github.com/cozy/cozy-stack/pkg/consts" 10 "github.com/cozy/cozy-stack/pkg/couchdb" 11 "github.com/cozy/cozy-stack/pkg/logger" 12 "github.com/cozy/cozy-stack/pkg/prefixer" 13 ) 14 15 func init() { 16 vfs.DeleteNote = deleteNote 17 } 18 19 func deleteNote(db prefixer.Prefixer, noteID string) { 20 go func() { 21 defer func() { 22 if r := recover(); r != nil { 23 var err error 24 switch r := r.(type) { 25 case error: 26 err = r 27 default: 28 err = fmt.Errorf("%v", r) 29 } 30 stack := make([]byte, 4<<10) // 4 KB 31 length := runtime.Stack(stack, false) 32 log := logger.WithNamespace("note").WithField("panic", true) 33 log.Errorf("PANIC RECOVER %s: %s", err.Error(), stack[:length]) 34 } 35 }() 36 37 images, err := getImages(db, noteID) 38 if err == nil && len(images) > 0 { 39 formats := []string{ 40 consts.NoteImageOriginalFormat, 41 consts.NoteImageThumbFormat, 42 } 43 inst, err := instance.Get(db.DomainName()) 44 if err == nil { 45 for _, img := range images { 46 _ = inst.ThumbsFS().RemoveNoteThumb(img.ID(), formats) 47 _ = couchdb.DeleteDoc(db, img) 48 } 49 } 50 } 51 52 steps, err := getSteps(db, noteID, 0) 53 if err == nil && len(steps) > 0 { 54 docs := make([]couchdb.Doc, 0, len(steps)) 55 for i := range steps { 56 docs = append(docs, &steps[i]) 57 } 58 _ = couchdb.BulkDeleteDocs(db, consts.NotesSteps, docs) 59 } 60 }() 61 }