From 18bb4a052633d869709ccd10c7f41881eca7bc37 Mon Sep 17 00:00:00 2001 From: Lukas Werner Date: Wed, 19 Feb 2025 17:58:12 -0800 Subject: [PATCH] feat: add has url bookmark api --- cmd/server.go | 17 +++++++++++++++++ store/database.go | 11 +++++++++++ 2 files changed, 28 insertions(+) diff --git a/cmd/server.go b/cmd/server.go index b5e38eb..7c75fa5 100644 --- a/cmd/server.go +++ b/cmd/server.go @@ -4,6 +4,7 @@ Copyright © 2024 Lukas Werner package cmd import ( + "database/sql" "encoding/json" "fmt" "log" @@ -84,6 +85,22 @@ var serverCmd = &cobra.Command{ w.WriteHeader(http.StatusNoContent) }))) + http.Handle("GET /api/bookmarks", AuthRequired(db, http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + url := r.URL.Query().Get("url") + + bookmarks, err := store.GetBookmark(db, url) + if err == sql.ErrNoRows { + http.Error(w, "Bookmark not found", http.StatusNotFound) + return + } + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(bookmarks) + }))) + log.Fatal(http.ListenAndServe(":1990", nil)) }, } diff --git a/store/database.go b/store/database.go index ccdea8b..9a57b9f 100644 --- a/store/database.go +++ b/store/database.go @@ -171,6 +171,17 @@ func InsertBookmark(db *DB, bookmark Bookmark) (BookmarkId, error) { return BookmarkId(id), err } +func GetBookmark(db *DB, url string) (Bookmark, error) { + var b Bookmark + var tags string + err := db.QueryRow("SELECT url, title, description, tags FROM Bookmarks WHERE url = ?", url).Scan(&b.Url, &b.Title, &b.Description, &tags) + if err != nil { + return b, err + } + b.Tags = strings.Split(tags, ", ") + return b, nil +} + func SearchBookmarks(db *DB, query string) ([]Bookmark, error) { bookmarks := []Bookmark{} rows, err := db.Query(`SELECT url, title, description, tags FROM Bookmarks_fts WHERE Bookmarks_fts MATCH ?;`, query) -- 2.51.2