155 lines
6.2 KiB
Python
155 lines
6.2 KiB
Python
"""
|
||
Модули работы с базой данных
|
||
"""
|
||
|
||
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'
|
||
] |