from typing import Any, Dict, List, Optional

from pydantic import BaseModel, Field

from src.apps.role_permission.schemas.common import PermissionSchema, RoleSchema


class ResponseData(BaseModel):
    data: Any
    message: str = "Request handled successfully"
    status_code: int = 200
    success: bool = True


class RoleResponse(BaseModel):
    data: RoleSchema
    message: str = "Request handled successfully"
    status_code: int = 200
    success: bool = True


class RolesListResponse(BaseModel):
    data: List[RoleSchema]
    message: str = "Request handled successfully"
    status_code: int = 200
    success: bool = True


class PermissionsListResponse(BaseModel):
    data: List[PermissionSchema]
    message: str = "Request handled successfully"
    status_code: int = 200
    success: bool = True


class DeleteRoleResponse(BaseModel):
    data: Dict[str, bool]
    message: str = "Request handled successfully"
    status_code: int = 200
    success: bool = True
