settings: use pydantic to load and validate database settings
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.
- 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. - 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 nuConfig
voor nodig. Hiervoor moet de uitsplitsing gemaakt worden tussen alle db settings en alle hardcoded settings (zieONLY NON-DB OPTIONS AFTER THIS
).
Edited by Maico Timmerman