Files
Foxel/domain/virtual_fs/service.py
T
XiaoQing235andshiyu 0763d457d5 feat: paginate public share directories (#132)
* feat: paginate public share directories

* feat: add cursor pagination to public share listings

Unify share and VFS directory payloads, pass cursor through the share
API, and add prev/next controls plus tests for cursor-mode adapters.

---------

Co-authored-by: shiyu <im@shiyu.dev>
2026-08-27 22:21:08 +08:00

59 lines
1.7 KiB
Python

from api.response import dir_listing
from .common import VirtualFSCommonMixin
from .resolver import VirtualFSResolverMixin
from .listing import VirtualFSListingMixin
from .file_ops import VirtualFSFileOpsMixin
from .transfer import VirtualFSTransferMixin
from .processing import VirtualFSProcessingMixin
from .temp_link import VirtualFSTempLinkMixin
from .routes import VirtualFSRouteMixin
class VirtualFSService(
VirtualFSRouteMixin,
VirtualFSTempLinkMixin,
VirtualFSProcessingMixin,
VirtualFSTransferMixin,
VirtualFSFileOpsMixin,
VirtualFSListingMixin,
VirtualFSResolverMixin,
VirtualFSCommonMixin,
):
@classmethod
async def list_directory(
cls,
path: str,
page_num: int = 1,
page_size: int = 50,
sort_by: str = "name",
sort_order: str = "asc",
cursor: str | None = None,
):
"""列出目录内容"""
return await cls.list_virtual_dir(path, page_num, page_size, sort_by, sort_order, cursor)
@classmethod
async def list_directory_with_permission(
cls,
path: str,
user_id: int,
page_num: int = 1,
page_size: int = 50,
sort_by: str = "name",
sort_order: str = "asc",
cursor: str | None = None,
):
"""列出目录内容(带权限过滤)"""
full_path = cls._normalize_path(path).rstrip("/") or "/"
result = await cls.list_virtual_dir_with_permission(
full_path, user_id, page_num, page_size, sort_by, sort_order, cursor
)
return dir_listing(
result,
path=full_path,
page_num=page_num,
page_size=page_size,
cursor=cursor,
)