refactor(transfer): keep queue projections in transfer endpoint module

This commit is contained in:
jxxghp
2026-10-02 22:10:16 +08:00
parent 1ba2f28c94
commit 1eacd10cd6
3 changed files with 22 additions and 31 deletions

View File

@@ -12,6 +12,7 @@ from app.api.endpoints.transferhistory import (
restore_manual_transfer_history_metadata,
)
from app.api.response import (
COLLECTION_MAX_PAGE_SIZE,
CompatibleCountParam,
CompatiblePageParam,
ResponseAPIRouter,
@@ -50,6 +51,7 @@ from app.schemas.transfer import TransferManualReviewData as _SchemaTransferManu
from app.schemas.transfer import TransferManualReviewPageData as _SchemaTransferManualReviewPageData
from app.schemas.transfer import TransferManualReviewRequest as _SchemaTransferManualReviewRequest
from app.schemas.transfer import TransferManualReviewTaskData as _SchemaTransferManualReviewTaskData
from app.schemas.transfer import TransferQueuePageData as _SchemaTransferQueuePageData
from app.schemas.types import MUSIC_ENTITY_ALBUM, MUSIC_ENTITY_RECORDING, MediaType
from app.schemas.workflow import FileItem
from app.schemas.workflow import FileItem as _SchemaFileItem
@@ -442,6 +444,26 @@ async def query_queue(_: _SchemaTokenPayload = Depends(verify_token), page: Comp
return TransferChain().get_queue_tasks()
@router.get( # type: ignore[misc]
"/queue/page",
summary="查询受限整理队列快照",
response_model=_SchemaTransferQueuePageData,
)
async def query_queue_page(
_: _SchemaTokenPayload = Depends(verify_token),
page: int = Query(1, ge=1),
count: int = Query(100, ge=1, le=COLLECTION_MAX_PAGE_SIZE),
) -> _SchemaTransferQueuePageData:
"""返回前端所需的有限整理队列窗口,避免序列化完整云盘目录树。"""
items, total = TransferChain().get_queue_tasks_page(page, count)
return _SchemaTransferQueuePageData(
items=items,
total=total,
page=page,
count=count,
)
@router.delete(
"/queue", summary="从整理队列中删除任务", response_model=_SchemaResponse[None]
)

View File

@@ -1,29 +0,0 @@
from fastapi import Depends, Query
from app.adapters.web.security.access import verify_token
from app.api.response import COLLECTION_MAX_PAGE_SIZE, ResponseAPIRouter
from app.chain.transfer.facade import TransferChain
from app.schemas.token import TokenPayload as _SchemaTokenPayload
from app.schemas.transfer import TransferQueuePageData as _SchemaTransferQueuePageData
router = ResponseAPIRouter()
@router.get( # type: ignore[misc]
"/queue/page",
summary="查询受限整理队列快照",
response_model=_SchemaTransferQueuePageData,
)
async def query_queue_page(
_: _SchemaTokenPayload = Depends(verify_token),
page: int = Query(1, ge=1),
count: int = Query(100, ge=1, le=COLLECTION_MAX_PAGE_SIZE),
) -> _SchemaTransferQueuePageData:
"""返回前端所需的有限整理队列窗口,避免全量队列阻塞接口序列化。"""
items, total = TransferChain().get_queue_tasks_page(page, count)
return _SchemaTransferQueuePageData(
items=items,
total=total,
page=page,
count=count,
)

View File

@@ -41,7 +41,6 @@ from app.api.endpoints import (
tmdb,
torrent,
transfer,
transferqueue,
user,
webhook,
workflow,
@@ -89,7 +88,6 @@ API_V1_ROUTER_SPECS: tuple[RouterSpec, ...] = (
RouterSpec(dashboard.router, "/dashboard", ("dashboard",)),
RouterSpec(storage.router, "/storage", ("storage",)),
RouterSpec(transfer.router, "/transfer", ("transfer",)),
RouterSpec(transferqueue.router, "/transfer", ("transfer",)),
RouterSpec(mediaserver.router, "/mediaserver", ("mediaserver",)),
RouterSpec(bangumi.router, "/bangumi", ("bangumi",)),
RouterSpec(anilist.router, "/anilist", ("anilist",)),