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

Method update

pkg/server/controllers/notes.go:311–359  ·  view source on GitHub ↗
(r *http.Request)

Source from the content-addressed store, hash-verified

309}
310
311func (n *Notes) update(r *http.Request) (database.Note, error) {
312 vars := mux.Vars(r)
313 noteUUID := vars["noteUUID"]
314
315 user := context.User(r.Context())
316 if user == nil {
317 return database.Note{}, app.ErrLoginRequired
318 }
319
320 var params updateNotePayload
321 err := parseRequestData(r, &params)
322 if err != nil {
323 return database.Note{}, errors.Wrap(err, "decoding params")
324 }
325
326 if err := validateUpdateNotePayload(params); err != nil {
327 return database.Note{}, err
328 }
329
330 var note database.Note
331 if err := n.app.DB.Where("uuid = ? AND user_id = ?", noteUUID, user.ID).First(&note).Error; err != nil {
332 return database.Note{}, errors.Wrap(err, "finding note")
333 }
334
335 tx := n.app.DB.Begin()
336
337 note, err = n.app.UpdateNote(tx, *user, note, &app.UpdateNoteParams{
338 BookUUID: params.BookUUID,
339 Content: params.Content,
340 })
341 if err != nil {
342 tx.Rollback()
343 return database.Note{}, errors.Wrap(err, "updating note")
344 }
345
346 var book database.Book
347 if err := tx.Where("uuid = ? AND user_id = ?", note.BookUUID, user.ID).First(&book).Error; err != nil {
348 tx.Rollback()
349 return database.Note{}, errors.Wrapf(err, "finding book %s to preload", note.BookUUID)
350 }
351
352 tx.Commit()
353
354 // preload associations
355 note.User = *user
356 note.Book = book
357
358 return note, nil
359}
360
361type updateNoteResp struct {
362 Status int `json:"status"`

Callers 1

V3UpdateMethod · 0.95

Calls 7

UserFunction · 0.92
parseRequestDataFunction · 0.85
UpdateNoteMethod · 0.80
BeginMethod · 0.65
RollbackMethod · 0.65
CommitMethod · 0.65

Tested by

no test coverage detected