from typing import TYPE_CHECKING from src import domain, dto if TYPE_CHECKING: from .. import Usecase async def get_workspace_projects( self: 'Usecase', input: dto.GetWorkspaceProjectsInput ) -> list[dto.ProjectOutput]: context = await self.ensure_workspace_permission( input.workspace_id, input.user_id, domain.PermissionKey.PROJECTS_READ ) allowed_project_ids = context.allowed_project_ids(domain.PermissionKey.PROJECTS_READ) projects = await self.database.get_workspace_projects(input.workspace_id, allowed_project_ids=allowed_project_ids) return [ dto.ProjectOutput( id=project.id, telegram_id=project.channel.telegram_id, title=project.channel.title, username=project.channel.username, status=project.status, invite_link_type=project.invite_link_type, ) for project in projects ]