MCPcopy
hub / github.com/perkeep/perkeep / updateDocument

Method updateDocument

app/scanningcabinet/datastore.go:359–406  ·  view source on GitHub ↗
(ctx context.Context, pn blob.Ref, new *document)

Source from the content-addressed store, hash-verified

357}
358
359func (h *handler) updateDocument(ctx context.Context, pn blob.Ref, new *document) error {
360 old, err := h.fetchDocument(pn)
361 if err != nil {
362 return fmt.Errorf("document %v not found: %v", pn, err)
363 }
364 if old.physicalLocation != new.physicalLocation {
365 if err := h.setAttribute(ctx, pn, nodeattr.LocationText, new.physicalLocation); err != nil {
366 return fmt.Errorf("could not set physicalLocation for document %v: %v", pn, err)
367 }
368 }
369
370 if old.title != new.title {
371 if err := h.setAttribute(ctx, pn, nodeattr.Title, new.title); err != nil {
372 return fmt.Errorf("could not set title for document %v: %v", pn, err)
373 }
374 }
375
376 if !old.docDate.Equal(new.docDate) {
377 if new.docDate.IsZero() {
378 if err := h.delAttribute(ctx, pn, nodeattr.StartDate, ""); err != nil {
379 return fmt.Errorf("could not delete document date for document %v: %v", pn, err)
380 }
381 } else {
382 if err := h.setAttribute(ctx, pn, nodeattr.StartDate, new.docDate.UTC().Format(time.RFC3339)); err != nil {
383 return fmt.Errorf("could not set document date for document %v: %v", pn, err)
384 }
385 }
386 }
387
388 if !old.dueDate.Equal(new.dueDate) {
389 if new.dueDate.IsZero() {
390 if err := h.delAttribute(ctx, pn, nodeattr.PaymentDueDate, ""); err != nil {
391 return fmt.Errorf("could not delete due date for document %v: %v", pn, err)
392 }
393 } else {
394 if err := h.setAttribute(ctx, pn, nodeattr.PaymentDueDate, new.dueDate.UTC().Format(time.RFC3339)); err != nil {
395 return fmt.Errorf("could not set due date for document %v: %v", pn, err)
396 }
397 }
398 }
399
400 if !old.tags.equal(new.tags) {
401 if err := h.updateTags(ctx, pn, old.tags, new.tags); err != nil {
402 return fmt.Errorf("could not update tags for document %v: %v", pn, err)
403 }
404 }
405 return nil
406}
407
408func (h *handler) updateTags(ctx context.Context, pn blob.Ref, old, new separatedString) error {
409 // first, delete the ones that are supposed to be gone

Callers 1

handleChangedocMethod · 0.95

Calls 6

fetchDocumentMethod · 0.95
setAttributeMethod · 0.95
delAttributeMethod · 0.95
updateTagsMethod · 0.95
EqualMethod · 0.80
equalMethod · 0.80

Tested by

no test coverage detected