MCPcopy
hub / github.com/dnote/dnote / mergeNote

Function mergeNote

pkg/cli/cmd/sync/sync.go:329–362  ·  view source on GitHub ↗
(tx *database.DB, serverNote client.SyncFragNote, localNote database.Note)

Source from the content-addressed store, hash-verified

327}
328
329func mergeNote(tx *database.DB, serverNote client.SyncFragNote, localNote database.Note) error {
330 var bookDeleted bool
331 err := tx.QueryRow("SELECT deleted FROM books WHERE uuid = ?", localNote.BookUUID).Scan(&bookDeleted)
332 if err != nil {
333 return errors.Wrapf(err, "checking if local book %s is deleted", localNote.BookUUID)
334 }
335
336 // if the book is deleted, noop
337 if bookDeleted {
338 return nil
339 }
340
341 // if the local copy is deleted, and it was edited on the server, override with server values and mark it not dirty.
342 if localNote.Deleted {
343 if _, err := tx.Exec("UPDATE notes SET usn = ?, book_uuid = ?, body = ?, edited_on = ?, deleted = ?, dirty = ? WHERE uuid = ?",
344 serverNote.USN, serverNote.BookUUID, serverNote.Body, serverNote.EditedOn, serverNote.Deleted, false, serverNote.UUID); err != nil {
345 return errors.Wrapf(err, "updating local note %s", serverNote.UUID)
346 }
347
348 return nil
349 }
350
351 mr, err := mergeNoteFields(tx, localNote, serverNote)
352 if err != nil {
353 return errors.Wrapf(err, "reporting note conflict for note %s", localNote.UUID)
354 }
355
356 if _, err := tx.Exec("UPDATE notes SET usn = ?, book_uuid = ?, body = ?, edited_on = ?, deleted = ? WHERE uuid = ?",
357 serverNote.USN, mr.bookUUID, mr.body, mr.editedOn, serverNote.Deleted, serverNote.UUID); err != nil {
358 return errors.Wrapf(err, "updating local note %s", serverNote.UUID)
359 }
360
361 return nil
362}
363
364func stepSyncNote(tx *database.DB, n client.SyncFragNote) error {
365 var localNote database.Note

Callers 3

stepSyncNoteFunction · 0.85
fullSyncNoteFunction · 0.85
TestMergeNoteFunction · 0.85

Calls 3

mergeNoteFieldsFunction · 0.85
QueryRowMethod · 0.65
ExecMethod · 0.65

Tested by 1

TestMergeNoteFunction · 0.68