forked from Dniel97/artemis
dbutils: version can now be left black to auto-upgrade to latest
This commit is contained in:
parent
baa885f674
commit
a416fb09e1
@ -32,7 +32,7 @@ class Data:
|
||||
self.arcade = ArcadeData(self.config, self.session)
|
||||
self.card = CardData(self.config, self.session)
|
||||
self.base = BaseData(self.config, self.session)
|
||||
self.schema_ver_latest = 4
|
||||
self.current_schema_version = 4
|
||||
|
||||
log_fmt_str = "[%(asctime)s] %(levelname)s | Database | %(message)s"
|
||||
log_fmt = logging.Formatter(log_fmt_str)
|
||||
@ -84,8 +84,8 @@ class Data:
|
||||
f"Could not load database schema from {game_dir} - {e}"
|
||||
)
|
||||
|
||||
self.logger.info(f"Setting base_schema_ver to {self.schema_ver_latest}")
|
||||
self.base.set_schema_ver(self.schema_ver_latest)
|
||||
self.logger.info(f"Setting base_schema_ver to {self.current_schema_version}")
|
||||
self.base.set_schema_ver(self.current_schema_version)
|
||||
|
||||
self.logger.info(
|
||||
f"Setting user auto_incrememnt to {self.config.database.user_table_autoincrement_start}"
|
||||
@ -129,9 +129,28 @@ class Data:
|
||||
|
||||
self.create_database()
|
||||
|
||||
def migrate_database(self, game: str, version: int, action: str) -> None:
|
||||
def migrate_database(self, game: str, version: Optional[int], action: str) -> None:
|
||||
old_ver = self.base.get_schema_ver(game)
|
||||
sql = ""
|
||||
if version is None:
|
||||
if not game == "CORE":
|
||||
titles = Utils.get_all_titles()
|
||||
|
||||
for folder, mod in titles.items():
|
||||
for game_ in mod.game_codes:
|
||||
if not game_ == game: continue
|
||||
|
||||
if hasattr(mod, "current_schema_version"):
|
||||
version = mod.current_schema_version
|
||||
|
||||
else:
|
||||
self.logger.warn(f"current_schema_version not found for {folder}")
|
||||
|
||||
else:
|
||||
version = self.current_schema_version
|
||||
|
||||
if version is None:
|
||||
self.logger.warn(f"Could not determine latest version for {game}, please specify --version")
|
||||
|
||||
if old_ver is None:
|
||||
self.logger.error(
|
||||
|
11
dbutils.py
11
dbutils.py
@ -1,5 +1,6 @@
|
||||
import yaml
|
||||
import argparse
|
||||
import logging
|
||||
from core.config import CoreConfig
|
||||
from core.data import Data
|
||||
from os import path, mkdir, access, W_OK
|
||||
@ -43,6 +44,7 @@ if __name__ == "__main__":
|
||||
)
|
||||
exit(1)
|
||||
|
||||
cfg.update({"database": {"loglevel": "info"}}) # Force it to be info if we're doing db work
|
||||
data = Data(cfg)
|
||||
|
||||
|
||||
@ -54,15 +56,14 @@ if __name__ == "__main__":
|
||||
|
||||
elif args.action == "upgrade" or args.action == "rollback":
|
||||
if args.version is None:
|
||||
data.logger.error("Must set game and version to migrate to")
|
||||
exit(0)
|
||||
data.logger.warn("No version set, upgrading to latest")
|
||||
|
||||
if args.game is None:
|
||||
data.logger.info("No game set, upgrading core schema")
|
||||
data.migrate_database("CORE", int(args.version), args.action)
|
||||
data.logger.warn("No game set, upgrading core schema")
|
||||
data.migrate_database("CORE", int(args.version) if args.version is not None else None, args.action)
|
||||
|
||||
else:
|
||||
data.migrate_database(args.game, int(args.version), args.action)
|
||||
data.migrate_database(args.game, int(args.version) if args.version is not None else None, args.action)
|
||||
|
||||
elif args.action == "autoupgrade":
|
||||
data.autoupgrade()
|
||||
|
Loading…
Reference in New Issue
Block a user