savagedb_bot/database/__init__.py

155 lines
6.2 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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