from __future__ import annotations from typing import Any from sqlalchemy import Table from sqlalchemy.dialects import postgresql, sqlite from sqlalchemy.ext.asyncio import AsyncSession def insert_for(session: AsyncSession, table: Table) -> Any: """INSERT нужного диалекта — у обоих есть on_conflict_do_update/excluded. Postgres — прод, SQLite — локальная разработка; других БД не ждём. """ dialect = session.get_bind().dialect.name if dialect == "postgresql": return postgresql.insert(table) if dialect == "sqlite": return sqlite.insert(table) raise RuntimeError(f"Upsert не поддержан для диалекта {dialect!r}.")