30 lines
1.0 KiB
Python
30 lines
1.0 KiB
Python
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)
|