deepdata: core product code (backend, frontend, runtime, deepflow module)
This commit is contained in:
@@ -0,0 +1,166 @@
|
||||
import math
|
||||
from typing import Optional
|
||||
|
||||
from fastapi import APIRouter, Depends, Query
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
|
||||
from app.core.logging import get_logger
|
||||
from app.db.session import get_db
|
||||
from app.module.cleaning.schema import (
|
||||
CleaningTemplateDto,
|
||||
CreateCleaningTemplateRequest,
|
||||
UpdateCleaningTemplateRequest,
|
||||
)
|
||||
from app.module.cleaning.service import CleaningTemplateService
|
||||
from app.module.shared.schema import StandardResponse, PaginatedData
|
||||
|
||||
logger = get_logger(__name__)
|
||||
|
||||
router = APIRouter(prefix="/cleaning/templates", tags=["Cleaning Templates"])
|
||||
|
||||
|
||||
def _get_operator_service():
|
||||
"""Get operator service"""
|
||||
from app.module.operator.service import OperatorService
|
||||
from app.module.operator.repository import (
|
||||
OperatorRepository,
|
||||
CategoryRelationRepository,
|
||||
OperatorReleaseRepository,
|
||||
)
|
||||
from app.module.operator.parsers import ParserHolder
|
||||
from app.module.shared.file_service import FileService
|
||||
from app.module.shared.chunk_upload_repository import ChunkUploadRepository
|
||||
|
||||
return OperatorService(
|
||||
operator_repo=OperatorRepository(None),
|
||||
category_relation_repo=CategoryRelationRepository(None),
|
||||
operator_release_repo=OperatorReleaseRepository(None),
|
||||
parser_holder=ParserHolder(),
|
||||
file_service=FileService(ChunkUploadRepository()),
|
||||
)
|
||||
|
||||
|
||||
def _get_template_service(db: AsyncSession) -> CleaningTemplateService:
|
||||
"""Get cleaning template service instance"""
|
||||
from app.module.cleaning.service import CleaningTaskValidator
|
||||
from app.module.cleaning.repository import (
|
||||
CleaningTemplateRepository,
|
||||
OperatorInstanceRepository,
|
||||
)
|
||||
|
||||
operator_service = _get_operator_service()
|
||||
|
||||
template_repo = CleaningTemplateRepository(None)
|
||||
|
||||
return CleaningTemplateService(
|
||||
template_repo=template_repo,
|
||||
operator_instance_repo=OperatorInstanceRepository(None),
|
||||
operator_service=operator_service,
|
||||
validator=CleaningTaskValidator(task_repo=None, template_repo=template_repo),
|
||||
)
|
||||
|
||||
|
||||
@router.get(
|
||||
"",
|
||||
response_model=StandardResponse[PaginatedData[CleaningTemplateDto]],
|
||||
summary="查询清洗模板列表",
|
||||
description="分页查询清洗模板",
|
||||
)
|
||||
async def get_cleaning_templates(
|
||||
page: int = Query(0, description="页码"),
|
||||
size: int = Query(20, description="每页数量"),
|
||||
keyword: Optional[str] = Query(None, description="关键词搜索"),
|
||||
db: AsyncSession = Depends(get_db),
|
||||
):
|
||||
"""Query cleaning templates with pagination"""
|
||||
template_service = _get_template_service(db)
|
||||
|
||||
items, total = await template_service.get_templates(db, keyword, page, size)
|
||||
|
||||
total_pages = math.ceil(total / size) if total > 0 else 0
|
||||
|
||||
return StandardResponse(
|
||||
code="0",
|
||||
message="success",
|
||||
data=PaginatedData(
|
||||
content=items,
|
||||
total_elements=total,
|
||||
total_pages=total_pages,
|
||||
page=page,
|
||||
size=size,
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
@router.post(
|
||||
"",
|
||||
response_model=StandardResponse[CleaningTemplateDto],
|
||||
summary="创建清洗模板",
|
||||
description="创建新的清洗模板",
|
||||
)
|
||||
async def create_cleaning_template(
|
||||
request: CreateCleaningTemplateRequest,
|
||||
db: AsyncSession = Depends(get_db),
|
||||
):
|
||||
"""Create cleaning template"""
|
||||
template_service = _get_template_service(db)
|
||||
|
||||
template = await template_service.create_template(db, request)
|
||||
await db.commit()
|
||||
|
||||
return StandardResponse(code="0", message="success", data=template)
|
||||
|
||||
|
||||
@router.get(
|
||||
"/{template_id}",
|
||||
response_model=StandardResponse[CleaningTemplateDto],
|
||||
summary="获取清洗模板详情",
|
||||
description="根据ID获取清洗模板详细信息",
|
||||
)
|
||||
async def get_cleaning_template(
|
||||
template_id: str,
|
||||
db: AsyncSession = Depends(get_db),
|
||||
):
|
||||
"""Get cleaning template by ID"""
|
||||
template_service = _get_template_service(db)
|
||||
|
||||
template = await template_service.get_template(db, template_id)
|
||||
return StandardResponse(code="0", message="success", data=template)
|
||||
|
||||
|
||||
@router.put(
|
||||
"/{template_id}",
|
||||
response_model=StandardResponse[CleaningTemplateDto],
|
||||
summary="更新清洗模板",
|
||||
description="更新清洗模板信息",
|
||||
)
|
||||
async def update_cleaning_template(
|
||||
template_id: str,
|
||||
request: UpdateCleaningTemplateRequest,
|
||||
db: AsyncSession = Depends(get_db),
|
||||
):
|
||||
"""Update cleaning template"""
|
||||
template_service = _get_template_service(db)
|
||||
|
||||
template = await template_service.update_template(db, template_id, request)
|
||||
await db.commit()
|
||||
|
||||
return StandardResponse(code="0", message="success", data=template)
|
||||
|
||||
|
||||
@router.delete(
|
||||
"/{template_id}",
|
||||
response_model=StandardResponse[str],
|
||||
summary="删除清洗模板",
|
||||
description="删除指定的清洗模板",
|
||||
)
|
||||
async def delete_cleaning_template(
|
||||
template_id: str,
|
||||
db: AsyncSession = Depends(get_db),
|
||||
):
|
||||
"""Delete cleaning template"""
|
||||
template_service = _get_template_service(db)
|
||||
await template_service.delete_template(db, template_id)
|
||||
await db.commit()
|
||||
|
||||
return StandardResponse(code="0", message="success", data=template_id)
|
||||
Reference in New Issue
Block a user