This adds Python code, based on SQLAlchemy and Alembic, to setup a configuration database and manage it. The database itself is currently a stub and will be expanded later (this MR being the opportunity to discuss how Python code should behave in
cmsgemos). I borrowed the Python setup from
cmsgemos-analysis, with the understanding that it will eventually be merged into
cmsgemos and documentation about Python will be inherited from the merge.
I named the Python module
gem because I had run out of imagination and assumed this would be discussed anyway
A new command is introduced, gem-configdb, that will become the main entry point for all database operation on the command line. At the moment, it only exposes a wrapper around the alembic management tool that adds the necessary argument for the configuration to be found.
Couldn't find one for this specific task, is this policy still enforced?
How Has This Been Tested?
Tested creating the database, adding tables, and rolling back on
gem904daq04 using my user database. The relevant command that can be tested with the code from this PR are:
$ poetry run gem-configdb alembic upgrade $ poetry run gem-configdb alembic current $ poetry run gem-configdb alembic history
This should work out of the box on
gem904daq04, using your own database. Another database can be specified by setting the
GEM_CONFIG_DB environment variable to the connection URL (ie something like
Types of changes
Bug fix (non-breaking change which fixes an issue)
New feature (non-breaking change which adds functionality)
Breaking change (fix or feature that would cause existing functionality to change)
My code follows the code style of this project.
My change requires a change to the documentation.
I have updated the documentation accordingly.
I have read the CONTRIBUTING document.
I have added tests to cover my changes.
All new and existing tests passed.