fix db ignoring port in config, createing database no longer runs over version

This commit is contained in:
Hay1tsme 2023-07-15 00:15:14 -04:00
parent 85b73e634d
commit 2f13596885
2 changed files with 15 additions and 3 deletions

View File

@ -27,9 +27,9 @@ class Data:
if self.config.database.sha2_password: if self.config.database.sha2_password:
passwd = sha256(self.config.database.password.encode()).digest() passwd = sha256(self.config.database.password.encode()).digest()
self.__url = f"{self.config.database.protocol}://{self.config.database.username}:{passwd.hex()}@{self.config.database.host}/{self.config.database.name}?charset=utf8mb4" self.__url = f"{self.config.database.protocol}://{self.config.database.username}:{passwd.hex()}@{self.config.database.host}:{self.config.database.port}/{self.config.database.name}?charset=utf8mb4"
else: else:
self.__url = f"{self.config.database.protocol}://{self.config.database.username}:{self.config.database.password}@{self.config.database.host}/{self.config.database.name}?charset=utf8mb4" self.__url = f"{self.config.database.protocol}://{self.config.database.username}:{self.config.database.password}@{self.config.database.host}:{self.config.database.port}/{self.config.database.name}?charset=utf8mb4"
if Data.engine is None: if Data.engine is None:
Data.engine = create_engine(self.__url, pool_recycle=3600) Data.engine = create_engine(self.__url, pool_recycle=3600)
@ -94,7 +94,7 @@ class Data:
game_mod.database(self.config) game_mod.database(self.config)
metadata.create_all(self.__engine.connect()) metadata.create_all(self.__engine.connect())
self.base.set_schema_ver( self.base.touch_schema_ver(
game_mod.current_schema_version, game_mod.game_codes[0] game_mod.current_schema_version, game_mod.game_codes[0]
) )

View File

@ -102,6 +102,18 @@ class BaseData:
return None return None
return row["version"] return row["version"]
def touch_schema_ver(self, ver: int, game: str = "CORE") -> Optional[int]:
sql = insert(schema_ver).values(game=game, version=ver)
conflict = sql.on_duplicate_key_update(version=schema_ver.c.version)
result = self.execute(conflict)
if result is None:
self.logger.error(
f"Failed to update schema version for game {game} (v{ver})"
)
return None
return result.lastrowid
def set_schema_ver(self, ver: int, game: str = "CORE") -> Optional[int]: def set_schema_ver(self, ver: int, game: str = "CORE") -> Optional[int]:
sql = insert(schema_ver).values(game=game, version=ver) sql = insert(schema_ver).values(game=game, version=ver)