from __future__ import annotations import asyncio from sqlalchemy import select from app.db import AppSetting, Database from app.services import REQUIRED_SETTINGS from app.settings import get_settings async def validate() -> int: database = Database(get_settings().database_url) try: async with database.sessions() as session: active_keys = set( ( await session.execute( select(AppSetting.setting_key).where(AppSetting.record_status == "A") ) ) .scalars() .all() ) finally: await database.close() missing = sorted(REQUIRED_SETTINGS - active_keys) if missing: raise RuntimeError(f"Mandatory application settings are missing: {', '.join(missing)}") return len(REQUIRED_SETTINGS) def main() -> None: count = asyncio.run(validate()) print(f"Mandatory application settings validated: {count}") if __name__ == "__main__": main()