from datetime import datetime

from pydantic import BaseModel


class RoleBase(BaseModel):
    name: str
    description: str | None = None


class RoleCreate(RoleBase):
    pass


class RoleUpdate(BaseModel):
    name: str | None = None
    description: str | None = None


class RoleResponse(BaseModel):
    id: int
    code: str
    name: str
    description: str | None = None
    is_system: bool
    tenant_id: int | None = None
    created_at: datetime
    updated_at: datetime

    class Config:
        from_attributes = True


class RoleWithMenus(RoleResponse):
    menu_ids: list[int] = []

    class Config:
        from_attributes = True


class PermissionItem(BaseModel):
    resource: str
    action: str


class RolePermissionsUpdate(BaseModel):
    permissions: list[PermissionItem]


class RolePermissionResponse(BaseModel):
    resource: str
    action: str

    class Config:
        from_attributes = True


class ResourceInfo(BaseModel):
    name: str
    actions: list[str]
