- Реализованы методы `get_post_text_and_anonymity_by_message_id` и `get_post_text_and_anonymity_by_helper_id` в `PostRepository` для получения текста поста и флага анонимности. - Обновлена модель `TelegramPost`, добавлено поле `is_anonymous`. - Изменена схема базы данных для включения поля `is_anonymous` в таблицу `post_from_telegram_suggest`. - Обновлены функции публикации постов в `PostPublishService` для учета анонимности. - Добавлены тесты для проверки новых функций и корректности работы с анонимностью.
106 lines
2.2 KiB
Python
106 lines
2.2 KiB
Python
from dataclasses import dataclass
|
||
from datetime import datetime
|
||
from typing import Optional, List
|
||
|
||
|
||
@dataclass
|
||
class User:
|
||
"""Модель пользователя."""
|
||
user_id: int
|
||
first_name: str
|
||
full_name: str
|
||
username: Optional[str] = None
|
||
is_bot: bool = False
|
||
language_code: str = "ru"
|
||
emoji: str = "😊"
|
||
has_stickers: bool = False
|
||
date_added: Optional[str] = None
|
||
date_changed: Optional[str] = None
|
||
voice_bot_welcome_received: bool = False
|
||
|
||
|
||
@dataclass
|
||
class BlacklistUser:
|
||
"""Модель пользователя в черном списке."""
|
||
user_id: int
|
||
message_for_user: Optional[str] = None
|
||
date_to_unban: Optional[int] = None
|
||
created_at: Optional[int] = None
|
||
|
||
|
||
@dataclass
|
||
class UserMessage:
|
||
"""Модель сообщения пользователя."""
|
||
message_text: str
|
||
user_id: int
|
||
telegram_message_id: int
|
||
date: int
|
||
|
||
|
||
@dataclass
|
||
class TelegramPost:
|
||
"""Модель поста из Telegram."""
|
||
message_id: int
|
||
text: str
|
||
author_id: int
|
||
helper_text_message_id: Optional[int] = None
|
||
created_at: Optional[int] = None
|
||
status: str = "suggest"
|
||
is_anonymous: Optional[bool] = None
|
||
|
||
|
||
@dataclass
|
||
class PostContent:
|
||
"""Модель контента поста."""
|
||
message_id: int
|
||
content_name: str
|
||
content_type: str
|
||
|
||
|
||
@dataclass
|
||
class MessageContentLink:
|
||
"""Модель связи сообщения с контентом."""
|
||
post_id: int
|
||
message_id: int
|
||
|
||
|
||
@dataclass
|
||
class Admin:
|
||
"""Модель администратора."""
|
||
user_id: int
|
||
role: str = "admin"
|
||
created_at: Optional[str] = None
|
||
|
||
|
||
@dataclass
|
||
class Migration:
|
||
"""Модель миграции."""
|
||
version: int
|
||
script_name: str
|
||
created_at: Optional[str] = None
|
||
|
||
|
||
@dataclass
|
||
class AudioMessage:
|
||
"""Модель аудио сообщения."""
|
||
file_name: str
|
||
author_id: int
|
||
date_added: str
|
||
file_id: str
|
||
listen_count: int = 0
|
||
|
||
|
||
@dataclass
|
||
class AudioListenRecord:
|
||
"""Модель записи прослушивания аудио."""
|
||
file_name: str
|
||
user_id: int
|
||
is_listen: bool = False
|
||
|
||
|
||
@dataclass
|
||
class AudioModerate:
|
||
"""Модель для voice bot."""
|
||
message_id: int
|
||
user_id: int
|