These endpoints fire on every visit or refresh and drown the audit log. Login, config writes, uploads, downloads, and other mutations stay audited.
106 lines
3.1 KiB
Python
106 lines
3.1 KiB
Python
from typing import Annotated
|
|
|
|
from fastapi import APIRouter, Depends, Request
|
|
|
|
from api.response import success
|
|
from domain.audit import AuditAction, audit
|
|
from domain.auth import User, get_current_active_user
|
|
from domain.permission import require_system_permission
|
|
from domain.permission.types import AdapterPermission
|
|
from .service import AdapterService
|
|
from .types import AdapterCreate
|
|
|
|
router = APIRouter(prefix="/api/adapters", tags=["adapters"])
|
|
|
|
|
|
@router.post("")
|
|
@audit(
|
|
action=AuditAction.CREATE,
|
|
description="创建存储适配器",
|
|
body_fields=["name", "type", "path", "sub_path", "enabled"],
|
|
)
|
|
@require_system_permission(AdapterPermission.CREATE)
|
|
async def create_adapter(
|
|
request: Request,
|
|
data: AdapterCreate,
|
|
current_user: Annotated[User, Depends(get_current_active_user)]
|
|
):
|
|
adapter = await AdapterService.create_adapter(data, current_user)
|
|
return success(adapter)
|
|
|
|
|
|
@router.get("")
|
|
@require_system_permission(AdapterPermission.LIST)
|
|
async def list_adapters(
|
|
current_user: Annotated[User, Depends(get_current_active_user)]
|
|
):
|
|
adapters = await AdapterService.list_adapters()
|
|
return success(adapters)
|
|
|
|
|
|
@router.get("/available")
|
|
@require_system_permission(AdapterPermission.LIST)
|
|
async def available_adapter_types(
|
|
current_user: Annotated[User, Depends(get_current_active_user)]
|
|
):
|
|
data = await AdapterService.available_adapter_types()
|
|
return success(data)
|
|
|
|
|
|
@router.get("/usage")
|
|
@require_system_permission(AdapterPermission.LIST)
|
|
async def list_adapter_usages(
|
|
current_user: Annotated[User, Depends(get_current_active_user)]
|
|
):
|
|
usages = await AdapterService.list_adapter_usages()
|
|
return success(usages)
|
|
|
|
|
|
@router.get("/{adapter_id}/usage")
|
|
@require_system_permission(AdapterPermission.LIST)
|
|
async def get_adapter_usage(
|
|
adapter_id: int,
|
|
current_user: Annotated[User, Depends(get_current_active_user)]
|
|
):
|
|
usage = await AdapterService.get_adapter_usage(adapter_id)
|
|
return success(usage)
|
|
|
|
|
|
@router.get("/{adapter_id}")
|
|
@require_system_permission(AdapterPermission.LIST)
|
|
async def get_adapter(
|
|
adapter_id: int,
|
|
current_user: Annotated[User, Depends(get_current_active_user)]
|
|
):
|
|
adapter = await AdapterService.get_adapter(adapter_id)
|
|
return success(adapter)
|
|
|
|
|
|
@router.put("/{adapter_id}")
|
|
@audit(
|
|
action=AuditAction.UPDATE,
|
|
description="更新存储适配器",
|
|
body_fields=["name", "type", "path", "sub_path", "enabled"],
|
|
)
|
|
@require_system_permission(AdapterPermission.EDIT)
|
|
async def update_adapter(
|
|
request: Request,
|
|
adapter_id: int,
|
|
data: AdapterCreate,
|
|
current_user: Annotated[User, Depends(get_current_active_user)]
|
|
):
|
|
adapter = await AdapterService.update_adapter(adapter_id, data, current_user)
|
|
return success(adapter)
|
|
|
|
|
|
@router.delete("/{adapter_id}")
|
|
@audit(action=AuditAction.DELETE, description="删除存储适配器")
|
|
@require_system_permission(AdapterPermission.DELETE)
|
|
async def delete_adapter(
|
|
request: Request,
|
|
adapter_id: int,
|
|
current_user: Annotated[User, Depends(get_current_active_user)]
|
|
):
|
|
result = await AdapterService.delete_adapter(adapter_id, current_user)
|
|
return success(result)
|