From 7803e1e4d78ae6918587a197862cb81af333795d Mon Sep 17 00:00:00 2001 From: WinterSolstice8 <60417494+wintersolstice8@users.noreply.github.com> Date: Thu, 9 May 2024 19:42:24 -0600 Subject: [PATCH] [dbtool] Add migration to verify/fix char_flags count --- tools/migrations/040_verify_char_flags.py | 33 +++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 tools/migrations/040_verify_char_flags.py diff --git a/tools/migrations/040_verify_char_flags.py b/tools/migrations/040_verify_char_flags.py new file mode 100644 index 00000000000..11e58c7b0ca --- /dev/null +++ b/tools/migrations/040_verify_char_flags.py @@ -0,0 +1,33 @@ +import mariadb + + +def migration_name(): + return "Verifying char_flags row count is equal to chars" + + +def check_preconditions(cur): + return + + +def needs_to_run(cur): + # Ensure chatfilters column exists in chars + cur.execute("SELECT COUNT(*) as num_chars FROM chars;") + char_count = cur.fetchone()[0] + + cur.execute("SELECT COUNT(*) as num_char_flags FROM char_flags;") + char_flags_count = cur.fetchone()[0] + + if char_flags_count < char_count: + return True + return False + + +def migrate(cur, db): + try: + # Add default row for each character into new char_flags table, on duplicate do nothing. + cur.execute("INSERT INTO char_flags (charid) SELECT charid FROM chars ON DUPLICATE KEY UPDATE char_flags.disconnecting = char_flags.disconnecting;"); + print("If this (char_flags) migration is running repeatedly, there is probably a bug somewhere. Please report this.") + db.commit() + + except mariadb.Error as err: + print("Something went wrong: {}".format(err))