- app/db/models.py: 13 таблиц (ARCHITECTURE §2.10); перечисления — VARCHAR + CHECK, JSON → JSONB на Postgres, BIGINT/INTEGER-ключи для SQLite - миграция 0001 (автогенерация + ручная чистка: импорт sa.Text, дубли CHECK) - миграции применяются при старте бота программно (app.db.migrate), script_location из пакета - SqlStorage: FSM aiogram поверх fsm_state — состояние переживает рестарт (перенесено из #4) - cleanup_loop: истёкшие черновики, снимки контейнеров и попытки входа старше суток - тесты: upgrade/downgrade, дрейф моделей и миграций, CHECK, CASCADE, FSM, чистка Refs #5 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
11 lines
315 B
Python
11 lines
315 B
Python
"""FSM storage factory: dialog state lives in the DB and survives restarts (SPEC M-4)."""
|
|
|
|
from aiogram.fsm.storage.base import BaseStorage
|
|
|
|
from app.bot.fsm_storage import SqlStorage
|
|
from app.db.session import SessionMaker
|
|
|
|
|
|
def make_storage(sessions: SessionMaker) -> BaseStorage:
|
|
return SqlStorage(sessions)
|