X-Git-Url: https://plomlompom.com/repos/?a=blobdiff_plain;f=plomtask%2Fdb.py;h=b7291dba4245852097f7dc3146e9b1d6d355bbcf;hb=357e434444f45ddb3df506b18c5d12fbab2b9153;hp=a8bdbec166fedbcfd3531717917b1291d364efce;hpb=78d82605facbfd468584f7cc6e6f5515af4be8be;p=plomtask diff --git a/plomtask/db.py b/plomtask/db.py index a8bdbec..b7291db 100644 --- a/plomtask/db.py +++ b/plomtask/db.py @@ -1,5 +1,6 @@ """Database management.""" from os.path import isfile +from difflib import Differ from sqlite3 import connect as sql_connect from plomtask.misc import HandledException @@ -29,11 +30,13 @@ class DatabaseFile: def validate_schema(self): """Compare found schema with what's stored at PATH_DB_SCHEMA.""" sql_for_schema = 'SELECT sql FROM sqlite_master ORDER BY sql' - msg_wrong_schema = 'Database has wrong tables schema.' + msg_err = 'Database has wrong tables schema. Diff:\n' with sql_connect(self.path) as conn: schema_rows = [r[0] for r in conn.execute(sql_for_schema) if r[0]] retrieved_schema = ';\n'.join(schema_rows) + ';' with open(PATH_DB_SCHEMA, 'r', encoding='utf-8') as f: stored_schema = f.read().rstrip() if stored_schema != retrieved_schema: - raise HandledException(msg_wrong_schema) + diff_msg = Differ().compare(retrieved_schema.splitlines(), + stored_schema.splitlines()) + raise HandledException(msg_err + '\n'.join(diff_msg))