diff --git a/davtelepot/__init__.py b/davtelepot/__init__.py index 8431c94..0e9f5ad 100644 --- a/davtelepot/__init__.py +++ b/davtelepot/__init__.py @@ -11,7 +11,7 @@ __author__ = "Davide Testa" __email__ = "davide@davte.it" __credits__ = ["Marco Origlia", "Nick Lee @Nickoala"] __license__ = "GNU General Public License v3.0" -__version__ = "2.8.8" +__version__ = "2.8.9" __maintainer__ = "Davide Testa" __contact__ = "t.me/davte" diff --git a/davtelepot/database.py b/davtelepot/database.py index baf264c..80c92e5 100644 --- a/davtelepot/database.py +++ b/davtelepot/database.py @@ -2,6 +2,7 @@ # Standard library modules import logging +from typing import Tuple # Third party modules import dataset @@ -71,3 +72,32 @@ class ObjectWithDatabase(object): ) except Exception as e: logging.error(f"{e}") + + def add_table_and_columns_if_not_existent(self, + table_name: str, + columns: Tuple[ + Tuple[str, + dataset.database.Types], + ...] = None): + """Create table (if it does not exist) and add given columns (if missing). + + @param table_name: Table name (string) + @param columns: Table columns as tuples of column name and type + @return: None + """ + if table_name not in self.db.tables: + table = self.db.create_table(table_name=table_name) + logging.info(f"Created table `{table_name}`") + else: + table = self.db[table_name] + if columns is None: + columns = [] + for column_name, column_type in columns: + if not table.has_column(column_name): + table.create_column( + column_name, + column_type + ) + logging.info(f"Added column `{column_name}` " + f"(type `{column_type}`) " + f"to table `{table_name}`")