from dooray_mcp.services import member_api
from dooray_mcp.types.common import ControllerResponse
async def search_members(
name: str | None = None,
user_code: str | None = None,
external_email: str | None = None,
page: int = 0,
size: int = 20,
) -> ControllerResponse:
result = await member_api.search_members(name, user_code, external_email, page, size)
if not result.contents:
return ControllerResponse(content="No members found.")
lines = [f"Found {result.total_count} members:\n"]
for member in result.contents:
lines.append(f"- **{member.name or 'Unknown'}** (ID: {member.id})")
lines.append(f" - User Code: {member.user_code or 'N/A'}")
lines.append(f" - Email: {member.external_email_address or 'N/A'}")
lines.append("")
return ControllerResponse(content="\n".join(lines))
async def list_project_members(
project_id: str, page: int = 0, size: int = 20
) -> ControllerResponse:
result = await member_api.list_project_members(project_id, page, size)
if not result.contents:
return ControllerResponse(content="No project members found.")
lines = [f"Found {result.total_count} project members:\n"]
for pm in result.contents:
member_name = pm.member.name if pm.member else "Unknown"
lines.append(f"- **{member_name}** (ID: {pm.id})")
lines.append(f" - Role: {pm.role or 'N/A'}")
lines.append("")
return ControllerResponse(content="\n".join(lines))
async def get_project_member(project_id: str, member_id: str) -> ControllerResponse:
pm = await member_api.get_project_member(project_id, member_id)
member_name = pm.member.name if pm.member else "Unknown"
lines = [
f"# {member_name}",
"",
f"- **ID**: {pm.id}",
f"- **Role**: {pm.role or 'N/A'}",
f"- **Created**: {pm.created_at or 'N/A'}",
]
return ControllerResponse(content="\n".join(lines))
async def add_project_member(
project_id: str, member_id: str, role: str = "member"
) -> ControllerResponse:
pm = await member_api.add_project_member(project_id, member_id, role)
return ControllerResponse(content=f"Member added to project successfully. (ID: {pm.id})")