41 lines
1.0 KiB
Python
41 lines
1.0 KiB
Python
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()
|