import logging from typing import TYPE_CHECKING from src import domain, dto if TYPE_CHECKING: from .. import Usecase log = logging.getLogger(__name__) async def disconnect_project_by_tg_id(self: 'Usecase', input: dto.DisconnectProjectByTgIdInput) -> None: user = await self.database.get_user(telegram_id=input.user_telegram_id) if not user: log.warning(f'User with telegram_id {input.user_telegram_id} not found when disconnecting channel') return if user.telegram_user is None: log.warning('User %s missing telegram profile when disconnecting channel', user.id) return project = await self.database.get_project_for_user_by_telegram(user.id, input.telegram_id) if not project: log.warning(f'Project channel {input.telegram_id} not found') raise domain.ProjectNotFound() project.status = domain.ProjectStatus.ARCHIVED await self.database.update_project(project) log.info('Project %s archived for channel %s', project.id, input.telegram_id)