"""入口模块管理服务接口。"""

from abc import ABC, abstractmethod

from fastapi_modules.fastapi_leaudit.domian.Dto.entryModuleDto import EntryModuleCreateDTO, EntryModuleUpdateDTO
from fastapi_modules.fastapi_leaudit.domian.vo.entryModuleAdminVo import EntryModuleImageUploadVO, EntryModuleListVO, EntryModuleVO


class IEntryModuleAdminService(ABC):
    """入口模块管理服务接口。"""

    @abstractmethod
    async def ListModules(self, Name: str | None, Area: str | None, Page: int, PageSize: int) -> EntryModuleListVO:
        """分页查询入口模块。"""
        ...

    @abstractmethod
    async def GetModule(self, ModuleId: int) -> EntryModuleVO:
        """获取入口模块详情。"""
        ...

    @abstractmethod
    async def CreateModule(self, Body: EntryModuleCreateDTO) -> EntryModuleVO:
        """创建入口模块。"""
        ...

    @abstractmethod
    async def UpdateModule(self, ModuleId: int, Body: EntryModuleUpdateDTO) -> EntryModuleVO:
        """更新入口模块。"""
        ...

    @abstractmethod
    async def DeleteModule(self, ModuleId: int) -> None:
        """删除入口模块。"""
        ...

    @abstractmethod
    async def UploadModuleImage(self, ModuleId: int, FileName: str, ContentType: str, Content: bytes) -> EntryModuleImageUploadVO:
        """上传入口模块图标。"""
        ...
