From 1024f36a9fa921ea6f383d8284aa266b65cb44c3 Mon Sep 17 00:00:00 2001 From: Kenneth Date: Thu, 18 Dec 2025 00:47:41 +0000 Subject: [PATCH] fix: vfs list children not handling empty rows --- apps/backend/internal/catalog/directory.go | 14 +++++++++++--- apps/backend/internal/virtualfs/vfs.go | 4 ++++ 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/apps/backend/internal/catalog/directory.go b/apps/backend/internal/catalog/directory.go index 6b00e70..9dbdbd7 100644 --- a/apps/backend/internal/catalog/directory.go +++ b/apps/backend/internal/catalog/directory.go @@ -307,6 +307,7 @@ func (h *HTTPHandler) listDirectory(c *fiber.Ctx) error { if cursor := c.Query("cursor"); cursor != "" { dc, err := decodeListChildrenCursor(cursor) + fmt.Printf("dc: %v\n", dc) if err != nil { return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "invalid cursor"}) } @@ -361,10 +362,17 @@ func (h *HTTPHandler) listDirectory(c *fiber.Ctx) error { } } + if cursor != nil { + return c.JSON(listDirectoryResponse{ + Items: items, + NextCursor: encodeListChildrenCursor(cursor), + }) + } + return c.JSON(listDirectoryResponse{ - Items: items, - NextCursor: encodeListChildrenCursor(cursor), + Items: items, }) + } // patchDirectory updates directory properties @@ -663,7 +671,7 @@ func encodeListChildrenCursor(cursor *virtualfs.ListChildrenCursor) string { d = 1 } - s := fmt.Sprintf("%d:%d:%s", by, d, cursor.Node.ID) + s := fmt.Sprintf("%d:%d:%s", by, d, cursor.Node.PublicID) return base64.URLEncoding.EncodeToString([]byte(s)) } diff --git a/apps/backend/internal/virtualfs/vfs.go b/apps/backend/internal/virtualfs/vfs.go index ed3a4bc..7aa13d2 100644 --- a/apps/backend/internal/virtualfs/vfs.go +++ b/apps/backend/internal/virtualfs/vfs.go @@ -254,6 +254,10 @@ func (vfs *VirtualFS) ListChildren(ctx context.Context, db bun.IDB, node *Node, return nil, nil, err } + if len(nodes) == 0 { + return make([]*Node, 0), nil, nil + } + c := &ListChildrenCursor{ Node: nodes[len(nodes)-1], OrderBy: opts.OrderBy,