"""Справочники: дополнения и фракции.""" from __future__ import annotations from sqlmodel import Session, select from app.models import Expansion, Faction def list_expansions(session: Session) -> list[Expansion]: return list( session.exec(select(Expansion).order_by(Expansion.sort_order)).all() ) def list_factions(session: Session) -> list[Faction]: return list( session.exec( select(Faction).order_by(Faction.expansion_id, Faction.sort_order) ).all() ) # Предложный падеж названий фракций для фразы «Чаще всего играет на …». # Словарь в коде, а не колонка в БД: набор фракций задан игрой и не меняется. # Фракция, добавленная админом мимо словаря, выводится в именительном падеже. _PREPOSITIONAL: dict[str, str] = { "orks": "Орках", "ultramarines": "Ультрамаринах", "eldar": "Эльдарах", "chaos": "Хаоситах", "astra_militarum": "Имперской гвардии", "tau": "Тау", "necrons": "Некронах", "tyranids": "Тиранидах", "inquisition": "Инквизиции", "sisters_of_battle": "Сёстрах битвы", "drukhari": "Друкхари", "adeptus_mechanicus": "Адептус Механикус", } def prepositional(code: str, name_ru: str) -> str: """Название фракции в предложном падеже; вне словаря — именительный как есть.""" return _PREPOSITIONAL.get(code, name_ru)