# 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!")