"""
用户管理 API 客户端
"""

from httpx import AsyncClient


class UserAPI:
    """用户管理 API 客户端"""
    
    def __init__(self, client: AsyncClient):
        self.client = client
    
    async def get_user_list(self):
        """获取用户列表"""
        return await self.client.get('/api/users')
    
    async def get_users_by_page(self, page: int = 0, size: int = 10, **kwargs):
        """分页获取用户列表，支持搜索和排序"""
        params = {'page': page, 'size': size}
        params.update(kwargs)
        return await self.client.get('/api/users/page', params=params)
    
    async def create_user(self, user_data):
        """创建用户"""
        return await self.client.post('/api/users', json=user_data)
    
    async def get_user_by_id(self, user_id):
        """根据ID获取用户"""
        return await self.client.get(f'/api/users/{user_id}')
    
    async def update_user(self, user_id, user_data):
        """更新用户"""
        return await self.client.put(f'/api/users/{user_id}', json=user_data)
    
    async def delete_user(self, user_id):
        """删除用户"""
        return await self.client.delete(f'/api/users/{user_id}')
    
    async def get_user_profile(self):
        """获取当前用户资料（调用get_user_by_id，使用token中的userId）"""
        return await self.client.get('/api/users/profile')
    
    async def update_user_profile(self, profile_data):
        """更新当前用户资料（调用update_user，使用token中的userId）"""
        return await self.client.put('/api/users/profile', json=profile_data)
    
    async def assign_roles(self, user_id, role_ids):
        """为用户分配角色"""
        return await self.client.post(f'/api/users/{user_id}/roles', json=role_ids)
