diff --git a/pyiron_base/database/sqlcolumnlength.py b/pyiron_base/database/sqlcolumnlength.py new file mode 100644 index 000000000..6813ce24c --- /dev/null +++ b/pyiron_base/database/sqlcolumnlength.py @@ -0,0 +1,11 @@ +DEFAULT_STR_LENGTH = 255 +PROJECT_PATH_STR_LENGTH = DEFAULT_STR_LENGTH +PROJECT_STR_LENGTH = DEFAULT_STR_LENGTH +JOB_STR_LENGTH = DEFAULT_STR_LENGTH +SUBJOB_STR_LENGTH = DEFAULT_STR_LENGTH +CHEMICALFORMULA_STR_LENGTH = 50 +STATUS_STR_LENGTH = 20 +HAMILTON_STR_LENGTH = 20 +HAMVERSION_STR_LENGTH = 50 +USERNAME_STR_LENGTH = 20 +COMPUTER_STR_LENGTH = 100 \ No newline at end of file diff --git a/pyiron_base/database/tables.py b/pyiron_base/database/tables.py index c86b6f9ac..152ea8ecd 100644 --- a/pyiron_base/database/tables.py +++ b/pyiron_base/database/tables.py @@ -13,6 +13,18 @@ String, Table, ) +from pyiron_base.database.sqlcolumnlength import ( + PROJECT_PATH_STR_LENGTH, + PROJECT_STR_LENGTH, + JOB_STR_LENGTH, + SUBJOB_STR_LENGTH, + CHEMICALFORMULA_STR_LENGTH, + STATUS_STR_LENGTH, + HAMILTON_STR_LENGTH, + HAMVERSION_STR_LENGTH, + USERNAME_STR_LENGTH, + COMPUTER_STR_LENGTH, +) __author__ = "Murat Han Celik, Liam Huber" __copyright__ = ( @@ -34,16 +46,16 @@ def get_historical_table(table_name, metadata, extend_existing=True): Column("id", Integer, primary_key=True, autoincrement=True), Column("parentid", Integer), Column("masterid", Integer), - Column("projectpath", String(255)), - Column("project", String(255)), - Column("job", String(255)), - Column("subjob", String(255)), - Column("chemicalformula", String(50)), - Column("status", String(20)), - Column("hamilton", String(20)), - Column("hamversion", String(50)), - Column("username", String(20)), - Column("computer", String(100)), + Column("projectpath", String(PROJECT_PATH_STR_LENGTH)), + Column("project", String(PROJECT_STR_LENGTH)), + Column("job", String(JOB_STR_LENGTH)), + Column("subjob", String(SUBJOB_STR_LENGTH)), + Column("chemicalformula", String(CHEMICALFORMULA_STR_LENGTH)), + Column("status", String(STATUS_STR_LENGTH)), + Column("hamilton", String(HAMILTON_STR_LENGTH)), + Column("hamversion", String(HAMVERSION_STR_LENGTH)), + Column("username", String(USERNAME_STR_LENGTH)), + Column("computer", String(COMPUTER_STR_LENGTH)), Column("timestart", DateTime), Column("timestop", DateTime), Column("totalcputime", Float), diff --git a/pyiron_base/jobs/job/util.py b/pyiron_base/jobs/job/util.py index 0bb0e6fcb..e5629c5c8 100644 --- a/pyiron_base/jobs/job/util.py +++ b/pyiron_base/jobs/job/util.py @@ -15,6 +15,7 @@ from typing import Optional, Union from pyiron_base.utils.instance import static_isinstance from pyiron_base.utils.safetar import safe_extract +from pyiron_base.database.sqlcolumnlength import JOB_STR_LENGTH __author__ = "Jan Janssen" __copyright__ = ( @@ -208,10 +209,9 @@ def _is_valid_job_name(job_name): raise ValueError( f'Invalid name for a pyiron object, must be letters, digits (not as first character) and "_" only, not {job_name}' ) - if len(job_name) > 50: + if len(job_name) > JOB_STR_LENGTH: raise ValueError( - "Invalid name for a PyIron object: must be less then or " - "equal to 50 characters" + f"Invalid name for a PyIron object: must be less then or equal to {JOB_STR_LENGTH} characters" ) diff --git a/pyiron_base/state/update.py b/pyiron_base/state/update.py index 9fb0a5837..ee7bfe5b5 100644 --- a/pyiron_base/state/update.py +++ b/pyiron_base/state/update.py @@ -7,6 +7,18 @@ """ from pyiron_base.state import state +from pyiron_base.database.sqlcolumnlength import ( + PROJECT_PATH_STR_LENGTH, + PROJECT_STR_LENGTH, + JOB_STR_LENGTH, + SUBJOB_STR_LENGTH, + CHEMICALFORMULA_STR_LENGTH, + STATUS_STR_LENGTH, + HAMILTON_STR_LENGTH, + HAMVERSION_STR_LENGTH, + USERNAME_STR_LENGTH, + COMPUTER_STR_LENGTH, +) __author__ = "Joerg Neugebauer, Jan Janssen" __copyright__ = ( @@ -31,24 +43,24 @@ def database(): try: if "projectPath".lower() not in db.get_table_headings(db.table_name): print("add missing column: " + "projectPath") - db.add_column(col_name="projectPath", col_type="varchar(255)") + db.add_column(col_name="projectPath", col_type="varchar(" + PROJECT_PATH_STR_LENGTH + ")") if "subJob".lower() not in db.get_table_headings(db.table_name): print("add missing column: " + "subJob") - db.add_column(col_name="subJob", col_type="varchar(255)") + db.add_column(col_name="subJob", col_type="varchar(" + SUBJOB_STR_LENGTH + ")") else: print("change data type of subJob") - db.change_column_type(col_name="subJob", col_type="varchar(255)") + db.change_column_type(col_name="subJob", col_type="varchar(" + SUBJOB_STR_LENGTH + ")") if "masterID".lower() not in db.get_table_headings(db.table_name): print("add missing column: " + "masterid") db.add_column(col_name="masterid", col_type="bigint") if "hamversion" in db.get_table_headings(db.table_name): print("change data type hamversion") - db.change_column_type(col_name="hamversion", col_type="varchar(50)") + db.change_column_type(col_name="hamversion", col_type="varchar(" + HAMVERSION_STR_LENGTH + ")") if "job" in db.get_table_headings(db.table_name): print("change data type job") - db.change_column_type(col_name="job", col_type="varchar(50)") + db.change_column_type(col_name="job", col_type="varchar(" + JOB_STR_LENGTH + ")") print(db.table_name, " - database successful updated") except ValueError: print(db.table_name, " - database failed")