Refactor database code to remove unused UI version field

This commit is contained in:
Théophile Diot 2024-10-29 15:38:01 +01:00
parent c1fe1a5483
commit 08167b70b5
No known key found for this signature in database
GPG key ID: FA995104A0BA376A
3 changed files with 8 additions and 13 deletions

View file

@ -409,7 +409,6 @@ class Database:
"last_instances_change": None,
"integration": "unknown",
"version": "1.6.0-beta",
"ui_version": "1.6.0-beta",
"database_version": "Unknown", # ? Extracted from the database
"default": True, # ? Extra field to know if the returned data is the default one
}
@ -521,7 +520,6 @@ class Database:
inspector = inspect(self.sql_engine)
db_version = None
db_ui_version = bunkerweb_version
has_all_tables = True
old_data = {}
@ -529,15 +527,11 @@ class Database:
if inspector and len(inspector.get_table_names()):
metadata = self.get_metadata()
db_version = metadata["version"]
db_ui_version = metadata["ui_version"]
if metadata["default"]:
db_version = "error"
# ? Check if the version is different from the database one
if db_version != bunkerweb_version:
if db_ui_version != bunkerweb_version:
db_ui_version = db_version
self.logger.warning(f"Database version ({db_version}) is different from Bunkerweb version ({bunkerweb_version}), migrating ...")
current_time = datetime.now().astimezone()
error = True
@ -1223,9 +1217,11 @@ class Database:
# ? As the external column has been replaced by the type column, we need to update the data if the column exists
if table_name == "bw_plugins" and external_column is not None:
row["type"] = "external" if external_column else "core"
elif table_name in ("bw_services", "bw_instances") and "creation_date" not in row:
elif table_name in ("bw_services", "bw_instances", "bw_ui_users") and "creation_date" not in row:
row["creation_date"] = datetime.now().astimezone()
row["last_update" if table_name == "bw_services" else "last_seen"] = datetime.now().astimezone()
row["last_update" if table_name == "bw_services" else "last_seen" if table_name == "bw_instances" else "update_date"] = (
datetime.now().astimezone()
)
elif table_name == "bw_ui_users" and two_factor_enabled is not None:
if two_factor_enabled:
self.logger.warning(
@ -1236,7 +1232,7 @@ class Database:
with self._db_session() as session:
try:
if table_name == "bw_metadata":
session.add(Metadata(**(row | {"ui_version": db_ui_version})))
session.add(Metadata(**row))
session.commit()
continue

View file

@ -49,8 +49,8 @@ class Plugins(Base):
stream = Column(STREAM_TYPES_ENUM, default="no", nullable=False)
type = Column(PLUGIN_TYPES_ENUM, default="core", nullable=False)
method = Column(METHODS_ENUM, default="manual", nullable=False)
data = Column(LargeBinary(length=(2**32) - 1), nullable=True)
checksum = Column(String(128), nullable=True)
data = Column(LargeBinary(length=(2**32) - 1), default=None, nullable=True)
checksum = Column(String(128), default=None, nullable=True)
config_changed = Column(Boolean, default=False, nullable=True)
last_config_change = Column(DateTime(timezone=True), nullable=True)
@ -304,7 +304,6 @@ class Metadata(Base):
failover = Column(Boolean, default=None, nullable=True)
integration = Column(INTEGRATIONS_ENUM, default="Unknown", nullable=False)
version = Column(String(32), default="1.6.0-beta", nullable=False)
ui_version = Column(String(32), default="1.6.0-beta", nullable=False)
## UI Models

View file

@ -184,7 +184,7 @@ def on_starting(server):
exit(1)
ret = DB.create_ui_user(user_name, gen_password_hash(env_admin_password), ["admin"], admin=True)
if ret:
if ret and "already exists" not in ret:
LOGGER.error(f"Couldn't create the admin user in the database: {ret}")
exit(1)