Skip to content

settings: use pydantic to load and validate database settings

Maico Timmerman requested to merge pydantic-settings-from-database into master

In 535aff5c is er een nieuwe settings source pydantic.BaseSettings gemaakt.

Het uiteindelijk doel is om business configuratie volledig in deze soort settings classes te zetten, welke ze automatisch uit de settings tabel in de database haalt. Dat zorgt er voor dat:

  • Er geen herstart van de app nodig is om deze waarde te veranderen.
  • De code die ze gebruikt typed is.
  • De waardes niet meer uit app.config hoeven te komen.

In de opvolgende commits heb ik al een aantal simpele settings uit Config gehaald.

Om Config helemaal netjes te maken zijn, er nog een paar die wat lastiger zijn.

  1. Alle settings die in app.config moeten komen werden met een losse engine/sessie opgehaald. Daarvoor wil ik in een losse MR proberen om 1 gedeelde engine tussen (Flask-)SQLAlchemy en de config te gebruiken. Dan worden er niet twee losse ConnectionPools gemaakt.
  2. Alle settings welke al gebruikt worden in Config.post_load op module niveau, kunnen nog niet omgezet worden. Tijdens het importeren van modules kan er nog geen app context met bijbehorende config gemaakt worden, want daar is nu Config voor nodig. Hiervoor moet de uitsplitsing gemaakt worden tussen alle db settings en alle hardcoded settings (zie ONLY NON-DB OPTIONS AFTER THIS).
Edited by Maico Timmerman

Merge request reports