From 04162f8635428dffcb3abc1aff096cb39c0eb9e9 Mon Sep 17 00:00:00 2001 From: Daniil Maltsev <56772947+da-maltsev@users.noreply.github.com> Date: Thu, 20 Jul 2023 14:35:04 +0500 Subject: [PATCH] DB use always (#15) * drop db check in filter * raise RuntimeError if no DB_URL * err message --- bot.py | 21 +++++++++---------- filters.py | 3 +-- helpers.py | 5 ----- models.py | 5 ++++- .../test_has_no_valid_previous_messages.py | 6 ------ 5 files changed, 15 insertions(+), 25 deletions(-) diff --git a/bot.py b/bot.py index 5fb2bd7..c382dfb 100644 --- a/bot.py +++ b/bot.py @@ -5,13 +5,13 @@ import text from filters import ContainsLink, ContainsTelegramContact, ContainsThreeOrMoreEmojies, IsMedia, IsMessageOnBehalfOfChat, with_default_filters -from helpers import DB_ENABLED, enable_logging, in_production, init_sentry +from helpers import enable_logging, in_production, init_sentry async def log_message(message: Message | None, action: str | None = ''): """Create a log entry for telegram message""" - if message is None or not DB_ENABLED() or message.from_user is None: + if message is None or message.from_user is None: return from models import LogEntry @@ -74,16 +74,15 @@ def delete_messages_that_match(*filters: BaseFilter) -> MessageHandler: bot.add_handler(delete_messages_that_match(ContainsThreeOrMoreEmojies())) bot.add_handler(delete_messages_that_match(IsMedia())) - if DB_ENABLED(): # log all not handled messages - from models import create_tables + from models import create_tables - create_tables() # type: ignore - bot.add_handler( - MessageHandler( - filters=TEXT, - callback=lambda update, context: log_message(update.message or update.edited_message), - ), - ) + create_tables() # type: ignore + bot.add_handler( + MessageHandler( + filters=TEXT, + callback=lambda update, context: log_message(update.message or update.edited_message), + ), + ) if in_production(): init_sentry() diff --git a/filters.py b/filters.py index 10ea573..434be7e 100644 --- a/filters.py +++ b/filters.py @@ -4,14 +4,13 @@ from telegram.ext.filters import BaseFilter, MessageFilter import text -from helpers import DB_ENABLED class HasNoValidPreviousMessages(MessageFilter): MIN_PREVIOUS_MESSAGES_COUNT = 3 def filter(self, message: Message) -> bool: - if not DB_ENABLED() or message.from_user is None: + if message.from_user is None: return True return self.has_no_valid_previous_messages(user_id=message.from_user.id, chat_id=message.chat_id) diff --git a/helpers.py b/helpers.py index 4ab6554..71166a8 100644 --- a/helpers.py +++ b/helpers.py @@ -4,10 +4,6 @@ from sentry_sdk.integrations.asyncio import AsyncioIntegration -def DB_ENABLED() -> bool: - return os.getenv('DATABASE_URL') is not None - - def in_production() -> bool: return os.getenv('BOT_NAME', None) is not None @@ -32,7 +28,6 @@ def init_sentry() -> None: __all__ = [ - 'DB_ENABLED', 'enable_logging', 'in_production', 'init_sentry', diff --git a/models.py b/models.py index b1ef65c..b89d305 100644 --- a/models.py +++ b/models.py @@ -3,7 +3,10 @@ from playhouse.db_url import connect from playhouse.postgres_ext import JSONField -db = connect(os.getenv('DATABASE_URL')) +database_url = os.getenv('DATABASE_URL') +if not database_url: + raise RuntimeError('Please set DATABASE_URL environment variable') +db = connect(database_url) class LogEntry(pw.Model): diff --git a/tests/tests_filters/test_has_no_valid_previous_messages.py b/tests/tests_filters/test_has_no_valid_previous_messages.py index 739f031..c9be3a3 100644 --- a/tests/tests_filters/test_has_no_valid_previous_messages.py +++ b/tests/tests_filters/test_has_no_valid_previous_messages.py @@ -58,12 +58,6 @@ def test_true_if_not_from_user(do_filter, message): assert do_filter(message) is True -def test_true_if_db_disabled(do_filter, message, mocker): - mocker.patch("helpers.DB_ENABLED", return_value=False) - - assert do_filter(message) is True - - def test_true_if_has_not_enough_valid_messages(do_filter, message, valid_messages): LogEntry.get(LogEntry.message_id == 1).delete_instance()