Files
Solo_bot/core/bootstrap.py
T
2026-04-27 15:42:38 +00:00

81 lines
3.6 KiB
Python

from logger import logger
from database import async_session_maker
from database.db import warm_pool
from database.settings_cache import settings_cache
from database.tariffs import initialize_all_tariff_weights
from .settings.buttons_config import BUTTONS_CONFIG, load_buttons_config, update_buttons_config
from .settings.management_config import MANAGEMENT_CONFIG, load_management_config, update_management_config
from .settings.modes_config import MODES_CONFIG, load_modes_config, update_modes_config
from .settings.money_config import MONEY_CONFIG, load_money_config, update_money_config
from .settings.notifications_config import NOTIFICATIONS_CONFIG, load_notifications_config, update_notifications_config
from .settings.payments_config import PAYMENTS_CONFIG, load_payments_config, update_payments_config
from .settings.providers_order_config import PROVIDERS_ORDER, load_providers_order, update_providers_order
from .settings.runtime_sync import publish_runtime_snapshot
from .settings.tariffs_config import TARIFFS_CONFIG, load_tariffs_config, update_tariffs_config
from .settings.web_config import WEB_CONFIG, load_web_config, update_web_config
async def bootstrap() -> None:
await warm_pool()
async with async_session_maker() as session:
await initialize_all_tariff_weights(session)
await load_buttons_config(session)
await load_notifications_config(session)
await load_modes_config(session)
await load_payments_config(session)
await load_providers_order(session)
await load_money_config(session)
await load_management_config(session)
await load_tariffs_config(session)
await load_web_config(session)
await session.commit()
await settings_cache.load(session)
await publish_runtime_snapshot()
try:
from api.v2.routes._data_uri_migration import run_startup_data_uri_migration
async with async_session_maker() as session:
rows_updated, uris_replaced = await run_startup_data_uri_migration(session)
if uris_replaced:
await session.commit()
logger.info(
"[bootstrap] data: URI migration: rows_updated={} uris_replaced={}",
rows_updated,
uris_replaced,
)
except Exception as exc:
logger.warning("[bootstrap] data: URI migration failed: {}", exc)
try:
from config import API_TOKEN_TTL_DAYS
from database.identity_sessions import cleanup_expired_sessions
async with async_session_maker() as session:
if API_TOKEN_TTL_DAYS is None:
from sqlalchemy import delete
from database.models import IdentitySession
result = await session.execute(delete(IdentitySession))
removed = int(result.rowcount or 0)
if removed:
await session.commit()
logger.info(
"[bootstrap] API_TOKEN_TTL_DAYS=None → identity sessions wiped on restart: {}",
removed,
)
else:
removed = await cleanup_expired_sessions(session)
if removed:
await session.commit()
logger.info(
"[bootstrap] expired identity sessions removed (TTL={}d): {}",
API_TOKEN_TTL_DAYS,
removed,
)
except Exception as exc:
logger.warning("[bootstrap] identity-session cleanup failed: {}", exc)