""" Модули работы с базой данных """ from .base import OracleDatabase from .core_queries import VinQueries from .user_management import UserManager from .payment_tracking import PaymentTracker # Импорты из аналитики from .analytics.users_stats import UserAnalytics from .analytics.finance_stats import FinanceAnalytics from .analytics.business_stats import BusinessAnalytics # Главный класс базы данных - агрегатор всех модулей class DatabaseManager(OracleDatabase): """ Главный класс для работы с базой данных Использует композицию для объединения всех модулей """ def __init__(self): super().__init__() # Инициализируем все модули self._vin_queries = None self._user_manager = None self._payment_tracker = None self._user_analytics = None self._finance_analytics = None self._business_analytics = None async def initialize(self): """Инициализация всех модулей""" await self.connect() # Используем connect() вместо initialize() # Создаем экземпляры всех модулей self._vin_queries = VinQueries() self._user_manager = UserManager() self._payment_tracker = PaymentTracker() self._user_analytics = UserAnalytics() self._finance_analytics = FinanceAnalytics() self._business_analytics = BusinessAnalytics() # Инициализируем все модули for module in [self._vin_queries, self._user_manager, self._payment_tracker, self._user_analytics, self._finance_analytics, self._business_analytics]: await module.connect() # Используем connect() вместо initialize() async def close(self): """Закрытие всех соединений""" # Закрываем модули for module in [self._vin_queries, self._user_manager, self._payment_tracker, self._user_analytics, self._finance_analytics, self._business_analytics]: if module: await module.close() await super().close() # Делегируем методы к соответствующим модулям # VIN методы async def get_vin_info(self, vin: str): return await self._vin_queries.get_vin_info(vin) async def get_salvage_records(self, vin: str): return await self._vin_queries.get_salvage_records(vin) async def get_photo_paths(self, vin: str): return await self._vin_queries.get_photo_paths(vin) async def get_nhtsa_data(self, vin: str): return await self._vin_queries.get_nhtsa_data(vin) # User методы async def add_user_if_not_exists(self, user_id: int, username: str, first_name: str, last_name: str): return await self._user_manager.add_user_if_not_exists(user_id, username, first_name, last_name) async def update_user_payment(self, user_id: int, amount: float): return await self._user_manager.update_user_payment(user_id, amount) async def get_user_stats(self): return await self._user_manager.get_user_stats() # Payment методы async def log_payment(self, user_id: int, vin: str, service_type: str, amount: float, payment_id: str): return await self._payment_tracker.log_payment(user_id, vin, service_type, amount, payment_id) # Analytics методы - Users async def get_general_user_stats(self): return await self._user_analytics.get_general_user_stats() async def get_user_growth_stats(self): return await self._user_analytics.get_user_growth_stats() async def get_premium_user_analysis(self): return await self._user_analytics.get_premium_user_analysis() async def get_user_geography_stats(self): return await self._user_analytics.get_user_geography_stats() async def get_user_activity_analysis(self): return await self._user_analytics.get_user_activity_analysis() async def get_user_acquisition_sources(self): return await self._user_analytics.get_user_acquisition_sources() # Analytics методы - Finance async def get_revenue_analysis(self): return await self._finance_analytics.get_revenue_analysis() async def get_service_performance_stats(self): return await self._finance_analytics.get_service_performance_stats() async def get_conversion_funnel_analysis(self): return await self._finance_analytics.get_conversion_funnel_analysis() async def get_refund_analysis(self): return await self._finance_analytics.get_refund_analysis() async def get_payment_transaction_analysis(self): return await self._finance_analytics.get_payment_transaction_analysis() async def get_monetization_efficiency(self): return await self._finance_analytics.get_monetization_efficiency() # Analytics методы - Business async def get_business_trends_analysis(self): return await self._business_analytics.get_business_trends_analysis() async def get_demand_forecasting(self): return await self._business_analytics.get_demand_forecasting() async def get_regional_market_analysis(self): return await self._business_analytics.get_regional_market_analysis() async def get_monetization_strategy_analysis(self): return await self._business_analytics.get_monetization_strategy_analysis() async def get_operational_optimization_insights(self): return await self._business_analytics.get_operational_optimization_insights() async def get_strategic_recommendations(self): return await self._business_analytics.get_strategic_recommendations() # Экспорт для удобного импорта __all__ = [ 'OracleDatabase', 'VinQueries', 'UserManager', 'PaymentTracker', 'UserAnalytics', 'FinanceAnalytics', 'BusinessAnalytics', 'DatabaseManager' ]