Mercurial > kallithea
changeset 8590:e1f233b069b0
db: refactor to clarify that we always invoke SA create_all with checkfirst=False
create_all(checkfirst=True) would skip creating tables that already exist,
potentially leaving them with wrong schema.
We are strict and want a successful create_all to leave all the tables in a
fully known state. We thus want it to fail if any tables already are present.
Existing tables should not silently be accepted.
author | Mads Kiilerich <mads@kiilerich.com> |
---|---|
date | Fri, 19 Jun 2020 17:24:36 +0200 |
parents | 7b0aafc6b7ca |
children | 8759238d7356 |
files | kallithea/bin/kallithea_cli_db.py kallithea/lib/db_manage.py kallithea/tests/fixture.py |
diffstat | 3 files changed, 4 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/kallithea/bin/kallithea_cli_db.py Mon Jun 15 17:27:19 2020 +0200 +++ b/kallithea/bin/kallithea_cli_db.py Fri Jun 19 17:24:36 2020 +0200 @@ -57,7 +57,7 @@ ) dbmanage = DbManage(dbconf=dbconf, root=kallithea.CONFIG['here'], tests=False, cli_args=cli_args) - dbmanage.create_tables(override=True) + dbmanage.create_tables() repo_root_path = dbmanage.prompt_repo_root_path(None) dbmanage.create_settings(repo_root_path) dbmanage.create_default_user()
--- a/kallithea/lib/db_manage.py Mon Jun 15 17:27:19 2020 +0200 +++ b/kallithea/lib/db_manage.py Fri Jun 19 17:24:36 2020 +0200 @@ -72,7 +72,7 @@ init_model(engine) self.sa = Session() - def create_tables(self, override=False): + def create_tables(self): """ Create a auth database """ @@ -110,8 +110,7 @@ # known to work on SQLite - possibly not on other databases with strong referential integrity Base.metadata.drop_all() - checkfirst = not override - Base.metadata.create_all(checkfirst=checkfirst) + Base.metadata.create_all(checkfirst=False) # Create an Alembic configuration and generate the version table, # "stamping" it with the most recent Alembic migration revision, to
--- a/kallithea/tests/fixture.py Mon Jun 15 17:27:19 2020 +0200 +++ b/kallithea/tests/fixture.py Fri Jun 19 17:24:36 2020 +0200 @@ -366,7 +366,7 @@ dbmanage = DbManage(dbconf=dbconf, root=config['here'], tests=True) - dbmanage.create_tables(override=True) + dbmanage.create_tables() # for tests dynamically set new root paths based on generated content dbmanage.create_settings(dbmanage.prompt_repo_root_path(repos_test_path)) dbmanage.create_default_user()