mirror of
https://github.com/DrizzleTime/Foxel.git
synced 2026-05-07 03:12:40 +08:00
93 lines
2.8 KiB
Python
93 lines
2.8 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("")
|
|
@audit(action=AuditAction.READ, description="获取适配器列表")
|
|
@require_system_permission(AdapterPermission.LIST)
|
|
async def list_adapters(
|
|
request: Request,
|
|
current_user: Annotated[User, Depends(get_current_active_user)]
|
|
):
|
|
adapters = await AdapterService.list_adapters()
|
|
return success(adapters)
|
|
|
|
|
|
@router.get("/available")
|
|
@audit(action=AuditAction.READ, description="获取可用适配器类型")
|
|
@require_system_permission(AdapterPermission.LIST)
|
|
async def available_adapter_types(
|
|
request: Request,
|
|
current_user: Annotated[User, Depends(get_current_active_user)]
|
|
):
|
|
data = await AdapterService.available_adapter_types()
|
|
return success(data)
|
|
|
|
|
|
@router.get("/{adapter_id}")
|
|
@audit(action=AuditAction.READ, description="获取适配器详情")
|
|
@require_system_permission(AdapterPermission.LIST)
|
|
async def get_adapter(
|
|
request: Request,
|
|
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)
|