Add ProfileSyncMiddleware to keep user profile data updated in the database

- Integrated ProfileSyncMiddleware to ensure that user profile information (username, first_name, last_name) remains current in the database.
- Updated get_enhanced_user_statistics to use timezone-aware datetime for accurate SQL queries, preventing naive/aware comparison issues.
- Clarified comments in the user statistics function for better understanding of active user metrics and subscription handling.
This commit is contained in:
machka-pasla
2025-08-15 23:40:23 +03:00
parent 13a9e58e27
commit a75a1f483c
9 changed files with 227 additions and 7 deletions
+2
View File
@@ -0,0 +1,2 @@
+55
View File
@@ -0,0 +1,55 @@
from aiogram import Bot
from sqlalchemy.orm import sessionmaker
from typing import Tuple
from config.settings import Settings
from bot.services.yookassa_service import YooKassaService
from bot.services.panel_api_service import PanelApiService
from bot.services.subscription_service import SubscriptionService
from bot.services.referral_service import ReferralService
from bot.services.promo_code_service import PromoCodeService
from bot.services.stars_service import StarsService
from bot.services.tribute_service import TributeService
from bot.services.crypto_pay_service import CryptoPayService
from bot.services.panel_webhook_service import PanelWebhookService
def build_core_services(settings: Settings, bot: Bot, async_session_factory: sessionmaker):
panel_service = PanelApiService(settings)
subscription_service = SubscriptionService(settings, panel_service, bot)
referral_service = ReferralService(settings, subscription_service, bot)
promo_code_service = PromoCodeService(settings, subscription_service, bot)
stars_service = StarsService(bot, settings, None, subscription_service, referral_service)
cryptopay_service = CryptoPayService(
settings.CRYPTOPAY_TOKEN,
settings.CRYPTOPAY_NETWORK,
bot,
settings,
None,
async_session_factory,
subscription_service,
referral_service,
)
tribute_service = TributeService(
bot,
settings,
None,
async_session_factory,
panel_service,
subscription_service,
referral_service,
)
panel_webhook_service = PanelWebhookService(bot, settings, None, async_session_factory)
return {
"panel_service": panel_service,
"subscription_service": subscription_service,
"referral_service": referral_service,
"promo_code_service": promo_code_service,
"stars_service": stars_service,
"cryptopay_service": cryptopay_service,
"tribute_service": tribute_service,
"panel_webhook_service": panel_webhook_service,
}