mirror of
https://codeberg.org/shroff/phylum.git
synced 2026-05-24 23:28:54 -05:00
[server] Allow fetching incremental bookmarks
This commit is contained in:
@@ -39,7 +39,7 @@ func setupBookmarksRoutes(r *gin.RouterGroup) {
|
||||
|
||||
func handleBookmarksGetRoute(c *gin.Context) {
|
||||
u := authenticator.GetUser(c)
|
||||
res, err := user.ManagerFromContext(c.Request.Context()).ListBookmarks(u)
|
||||
res, err := user.ManagerFromContext(c.Request.Context()).ListBookmarks(u, 0)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
@@ -54,7 +54,7 @@ func handleBookmarksGetRoute(c *gin.Context) {
|
||||
}
|
||||
c.JSON(200, bookmarksResponse{
|
||||
Bookmarks: bookmarks,
|
||||
Until: time.Now().UnixMilli(),
|
||||
Until: time.Now().UnixMilli() - 100,
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -36,7 +36,7 @@ func setupListCommand() *cobra.Command {
|
||||
fmt.Println("unable to list bookmarks: user not specified")
|
||||
os.Exit(1)
|
||||
}
|
||||
if bookmarks, err := user.ManagerFromContext(context.Background()).ListBookmarks(*u); err != nil {
|
||||
if bookmarks, err := user.ManagerFromContext(context.Background()).ListBookmarks(*u, 0); err != nil {
|
||||
fmt.Println("unable to list bookmark: " + err.Error())
|
||||
os.Exit(1)
|
||||
} else {
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package user
|
||||
|
||||
import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/google/uuid"
|
||||
@@ -61,14 +62,20 @@ func (m manager) RemoveBookmark(u User, id uuid.UUID) error {
|
||||
return err
|
||||
}
|
||||
|
||||
func (m manager) ListBookmarks(u User) ([]Bookmark, error) {
|
||||
const q = `SELECT resource_id, name, dir, created
|
||||
func (m manager) ListBookmarks(u User, since int64) ([]Bookmark, error) {
|
||||
sb := strings.Builder{}
|
||||
sb.WriteString(`SELECT resource_id, name, dir, created
|
||||
FROM bookmarks b
|
||||
WHERE user_id = $1::INT
|
||||
AND deleted IS NULL
|
||||
ORDER BY modified DESC`
|
||||
WHERE user_id = @user_id::INT
|
||||
`)
|
||||
if since == 0 {
|
||||
sb.WriteString("AND deleted IS NULL\n")
|
||||
} else {
|
||||
sb.WriteString("AND modified >= @since::TIMESTAMP\n")
|
||||
}
|
||||
sb.WriteString("ORDER BY modified DESC")
|
||||
|
||||
if rows, err := m.db.Query(q, u.ID); err != nil {
|
||||
if rows, err := m.db.Query(sb.String(), pgx.NamedArgs{"user_id": u.ID, "since": time.UnixMilli(since).UTC()}); err != nil {
|
||||
return nil, err
|
||||
} else if bookmarks, err := pgx.CollectRows(rows, scanBookmark); err != nil {
|
||||
return nil, err
|
||||
|
||||
@@ -60,5 +60,5 @@ type Manager interface {
|
||||
// bookmarks.go
|
||||
AddBookmark(u User, resource fs.Resource, name string) (Bookmark, error)
|
||||
RemoveBookmark(u User, id uuid.UUID) error
|
||||
ListBookmarks(u User) ([]Bookmark, error)
|
||||
ListBookmarks(u User, since int64) ([]Bookmark, error)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user