aboutsummaryrefslogtreecommitdiff
path: root/migration
diff options
context:
space:
mode:
authorGravatar jesopo2019-12-01 07:06:30 +0000
committerGravatar jesopo2019-12-01 07:07:28 +0000
commit499e83a1cb0d9cdd5503d6e6593c1669ca372257 (patch)
tree444d457fbed545fec69e9b0094401866c8aef927 /migration
parentadd database.users.get_nickname, to get nickname from ID (diff)
refactor karma to be per-user. added data migration script for this
Diffstat (limited to 'migration')
-rw-r--r--migration/v01.16.00-karma.py45
1 files changed, 45 insertions, 0 deletions
diff --git a/migration/v01.16.00-karma.py b/migration/v01.16.00-karma.py
new file mode 100644
index 00000000..a7a502fd
--- /dev/null
+++ b/migration/v01.16.00-karma.py
@@ -0,0 +1,45 @@
+# Used to migrate karma from prior to v1.16.0
+# usage: $ python3 migration/v01.16.00-karma.py ~/.bitbot/bot.db
+
+import argparse
+parser = argparse.ArgumentParser(description="Migrate pre-v1.16.0 karma")
+parser.add_argument("database")
+args = parser.parse_args()
+
+import json, sqlite3
+database = sqlite3.connect(args.database)
+
+cursor = database.cursor()
+cursor.execute(
+ """SELECT server_id, setting, value FROM server_settings
+ WHERE setting LIKE 'karma-%'""")
+results = cursor.fetchall()
+
+cursor.execute("SELECT nickname, user_id FROM users")
+users = dict(cursor.fetchall())
+
+cursor.execute("SELECT server_id, alias FROM servers")
+servers = dict(cursor.fetchall())
+
+server_users = {}
+for server_id, setting, karma in results:
+ if not server_id in server_users:
+ cursor.execute(
+ "INSERT INTO users (server_id, nickname) VALUES (?, ?)",
+ [server_id, "*karma"])
+ cursor.execute(
+ "SELECT user_id FROM users WHERE server_id=? AND nickname=?",
+ [server_id, "*karma"])
+ server_users[server_id] = cursor.fetchone()[0]
+
+ print("[%s] Migrating '%s' (%s)" %
+ (servers[server_id], setting.replace("karma-", "", 1), karma))
+ cursor.execute(
+ "INSERT INTO user_settings VALUES (?, ?, ?)",
+ [server_users[server_id], setting, karma])
+
+database.commit()
+database.close()
+
+print()
+print("Migration successful!")