"""admin RBAC 角色 + 权限目录 schemas。"""
from __future__ import annotations

from pydantic import BaseModel, Field


class PermissionPage(BaseModel):
    key: str
    label: str


class PermissionGroup(BaseModel):
    group: str
    pages: list[PermissionPage]


class RoleOut(BaseModel):
    id: int
    name: str             # 角色 key(承重,不可变)
    label: str            # 展示名(UI 显示)
    pages: list[str]      # 有效可见页 key(super_admin = 全部页)
    is_builtin: bool      # 内建角色(super_admin):不可编辑/删除
    in_use: int           # 使用该角色的管理员数(删除前端提示 / 拦截用)


class RoleCreateRequest(BaseModel):
    # 新增自定义角色:name 即用户输入的名称(同时作 key 与展示名)
    name: str = Field(..., min_length=1, max_length=32)
    pages: list[str] = Field(default_factory=list)


class RoleUpdateRequest(BaseModel):
    # 只改展示名 + 可见页;key 不可变
    label: str | None = Field(None, min_length=1, max_length=32)
    pages: list[str] | None = None
