marky

Lightweight bookmarking + plaintext archive
Log | Files | Refs | README | LICENSE

commit 9b589a6a2e706f014a25d9eec729b66bb4bdc597
parent 827f058496f980b3d6c00922da5acb015544e697
Author: David Eisinger <[email protected]>
Date:   Tue,  7 Oct 2025 15:45:47 -0400

Update title/desc when resaving

Diffstat:
Minternal/api.go | 41++++++++++++++++++++++++++++++-----------
1 file changed, 30 insertions(+), 11 deletions(-)

diff --git a/internal/api.go b/internal/api.go @@ -490,26 +490,45 @@ func NewHandlerWithConfig(db *DB, cfg HandlerConfig) (http.Handler, error) { http.Error(w, "internal server error", http.StatusInternalServerError) return } else if existing != nil { - if isHTML { - if err := db.SaveArchive(r.Context(), existing.ID, txt); err != nil { - log.Printf("save archive error: %v", err) - http.Error(w, "internal server error", http.StatusInternalServerError) - return + // Merge metadata updates per request: title (if non-blank), + // description (if provided and non-blank; otherwise preserve), + // and public (if provided; otherwise preserve). + newTitle := existing.Title + if strings.TrimSpace(req.Title) != "" { + newTitle = req.Title + } + var newDesc *string + if req.Description == nil || strings.TrimSpace(*req.Description) == "" { + if existing.Description.Valid { + d := existing.Description.String + newDesc = &d + } else { + newDesc = nil } + } else { + newDesc = req.Description } - if err := db.TouchBookmark(r.Context(), existing.ID); err != nil { - log.Printf("save archive error: %v", err) - http.Error(w, "internal server error", http.StatusInternalServerError) - return + newPub := existing.Public + if req.Public != nil { + newPub = *req.Public } - updated, err := db.GetBookmark(r.Context(), existing.ID) + + // Apply metadata update first so archive reindex uses latest fields. + updated, err := db.UpdateBookmark(r.Context(), existing.ID, existing.URL, newTitle, newDesc, newPub) if err != nil || updated == nil { if err != nil { - log.Printf("refetch bookmark error: %v", err) + log.Printf("update existing bookmark error: %v", err) } http.Error(w, "internal server error", http.StatusInternalServerError) return } + if isHTML { + if err := db.SaveArchive(r.Context(), existing.ID, txt); err != nil { + log.Printf("save archive error: %v", err) + http.Error(w, "internal server error", http.StatusInternalServerError) + return + } + } w.Header().Set("Content-Type", "application/json") _ = json.NewEncoder(w).Encode(toRespWithArchive(r.Context(), db, updated)) return