fix: vfs list children not handling empty rows

This commit is contained in:
2025-12-18 00:47:41 +00:00
parent f2cce889af
commit 1024f36a9f
2 changed files with 15 additions and 3 deletions

View File

@@ -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,12 +362,19 @@ 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,
})
}
// patchDirectory updates directory properties
// @Summary Update directory
// @Description Update directory properties such as name (rename)
@@ -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))
}

View File

@@ -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,