| 232 | } |
| 233 | |
| 234 | func (n *Notes) del(r *http.Request) (database.Note, error) { |
| 235 | vars := mux.Vars(r) |
| 236 | noteUUID := vars["noteUUID"] |
| 237 | |
| 238 | user := context.User(r.Context()) |
| 239 | if user == nil { |
| 240 | return database.Note{}, app.ErrLoginRequired |
| 241 | } |
| 242 | |
| 243 | var note database.Note |
| 244 | if err := n.app.DB.Where("uuid = ? AND user_id = ?", noteUUID, user.ID).Preload("Book").First(¬e).Error; err != nil { |
| 245 | return database.Note{}, errors.Wrap(err, "finding note") |
| 246 | } |
| 247 | |
| 248 | tx := n.app.DB.Begin() |
| 249 | |
| 250 | note, err := n.app.DeleteNote(tx, *user, note) |
| 251 | if err != nil { |
| 252 | tx.Rollback() |
| 253 | return database.Note{}, errors.Wrap(err, "deleting note") |
| 254 | } |
| 255 | |
| 256 | tx.Commit() |
| 257 | |
| 258 | return note, nil |
| 259 | } |
| 260 | |
| 261 | // CreateNoteResp is a response for creating a note |
| 262 | type CreateNoteResp struct { |