3
2
forked from Dniel97/artemis
artemis/dbutils.py

66 lines
2.1 KiB
Python
Raw Normal View History

import yaml
import argparse
from core.config import CoreConfig
from core.data import Data
from os import path
2023-03-09 16:38:58 +00:00
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="Database utilities")
2023-03-09 16:38:58 +00:00
parser.add_argument(
"--config", "-c", type=str, help="Config folder to use", default="config"
)
parser.add_argument(
"--version",
"-v",
type=str,
help="Version of the database to upgrade/rollback to",
)
parser.add_argument(
"--game",
"-g",
type=str,
help="Game code of the game who's schema will be updated/rolled back. Ex. SDFE",
)
parser.add_argument("--email", "-e", type=str, help="Email for the new user")
parser.add_argument("--old_ac", "-o", type=str, help="Access code to transfer from")
parser.add_argument("--new_ac", "-n", type=str, help="Access code to transfer to")
parser.add_argument("--force", "-f", type=bool, help="Force the action to happen")
2023-03-09 16:38:58 +00:00
parser.add_argument(
"action", type=str, help="DB Action, create, recreate, upgrade, or rollback"
)
args = parser.parse_args()
cfg = CoreConfig()
if path.exists(f"{args.config}/core.yaml"):
cfg.update(yaml.safe_load(open(f"{args.config}/core.yaml")))
data = Data(cfg)
if args.action == "create":
data.create_database()
2023-03-09 16:38:58 +00:00
elif args.action == "recreate":
data.recreate_database()
elif args.action == "upgrade" or args.action == "rollback":
if args.version is None:
2023-02-24 19:13:31 +00:00
data.logger.error("Must set game and version to migrate to")
exit(0)
if args.game is None:
2023-02-24 19:13:31 +00:00
data.logger.info("No game set, upgrading core schema")
2023-03-04 00:56:12 +00:00
data.migrate_database("CORE", int(args.version), args.action)
else:
data.migrate_database(args.game, int(args.version), args.action)
elif args.action == "create-owner":
data.create_owner(args.email)
elif args.action == "migrate-card":
data.migrate_card(args.old_ac, args.new_ac, args.force)
elif args.action == "cleanup":
data.delete_hanging_users()
data.logger.info("Done")