diff options
| author | 2019-12-01 07:06:30 +0000 | |
|---|---|---|
| committer | 2019-12-01 07:07:28 +0000 | |
| commit | 499e83a1cb0d9cdd5503d6e6593c1669ca372257 (patch) | |
| tree | 444d457fbed545fec69e9b0094401866c8aef927 /migration | |
| parent | add 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.py | 45 |
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!") |
