MCPcopy Index your code
hub / github.com/dnote/dnote / del

Method del

pkg/server/controllers/books.go:238–281  ·  view source on GitHub ↗
(r *http.Request)

Source from the content-addressed store, hash-verified

236}
237
238func (b *Books) del(r *http.Request) (database.Book, error) {
239 user := context.User(r.Context())
240 if user == nil {
241 return database.Book{}, app.ErrLoginRequired
242 }
243
244 vars := mux.Vars(r)
245 uuid := vars["bookUUID"]
246
247 if !helpers.ValidateUUID(uuid) {
248 return database.Book{}, app.ErrInvalidUUID
249 }
250
251 tx := b.app.DB.Begin()
252
253 var book database.Book
254 if err := tx.Where("user_id = ? AND uuid = ?", user.ID, uuid).First(&book).Error; err != nil {
255 tx.Rollback()
256 return database.Book{}, pkgErrors.Wrap(err, "finding a book")
257 }
258
259 var notes []database.Note
260 if err := tx.Where("book_uuid = ? AND NOT deleted", uuid).Order("usn ASC").Find(&notes).Error; err != nil {
261 tx.Rollback()
262 return database.Book{}, pkgErrors.Wrap(err, "finding notes for the book")
263 }
264
265 for _, note := range notes {
266 if _, err := b.app.DeleteNote(tx, *user, note); err != nil {
267 tx.Rollback()
268 return database.Book{}, pkgErrors.Wrap(err, "deleting a note in the book")
269 }
270 }
271
272 book, err := b.app.DeleteBook(tx, *user, book)
273 if err != nil {
274 tx.Rollback()
275 return database.Book{}, pkgErrors.Wrap(err, "deleting the book")
276 }
277
278 tx.Commit()
279
280 return book, nil
281}
282
283// deleteBookResp is the response from create book api
284type deleteBookResp struct {

Callers 1

V3DeleteMethod · 0.95

Calls 7

UserFunction · 0.92
ValidateUUIDFunction · 0.92
DeleteNoteMethod · 0.80
DeleteBookMethod · 0.80
BeginMethod · 0.65
RollbackMethod · 0.65
CommitMethod · 0.65

Tested by

no test coverage detected