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

Function mergeNoteFields

pkg/cli/cmd/sync/merge.go:164–201  ·  view source on GitHub ↗

mergeNoteFields performs a field-by-field merge between the local and the server copy. It returns a merge report between the local and the server copy of the note.

(tx *database.DB, localNote database.Note, serverNote client.SyncFragNote)

Source from the content-addressed store, hash-verified

162// mergeNoteFields performs a field-by-field merge between the local and the server copy. It returns a merge report
163// between the local and the server copy of the note.
164func mergeNoteFields(tx *database.DB, localNote database.Note, serverNote client.SyncFragNote) (*noteMergeReport, error) {
165 if !localNote.Dirty {
166 return &noteMergeReport{
167 body: serverNote.Body,
168 bookUUID: serverNote.BookUUID,
169 editedOn: serverNote.EditedOn,
170 }, nil
171 }
172
173 body := reportBodyConflict(localNote.Body, serverNote.Body)
174
175 var bookUUID string
176 if serverNote.BookUUID != localNote.BookUUID {
177 b, err := reportBookConflict(tx, body, localNote.BookUUID, serverNote.BookUUID)
178 if err != nil {
179 return nil, errors.Wrapf(err, "reporting book conflict for note %s", localNote.UUID)
180 }
181
182 body = b
183
184 conflictsBookUUID, err := getConflictsBookUUID(tx)
185 if err != nil {
186 return nil, errors.Wrap(err, "getting the conflicts book uuid")
187 }
188
189 bookUUID = conflictsBookUUID
190 } else {
191 bookUUID = serverNote.BookUUID
192 }
193
194 ret := noteMergeReport{
195 body: body,
196 bookUUID: bookUUID,
197 editedOn: maxInt64(localNote.EditedOn, serverNote.EditedOn),
198 }
199
200 return &ret, nil
201}

Callers 1

mergeNoteFunction · 0.85

Calls 4

reportBodyConflictFunction · 0.85
reportBookConflictFunction · 0.85
getConflictsBookUUIDFunction · 0.85
maxInt64Function · 0.85

Tested by

no test coverage detected