import json import os import shutil import sqlite3 from dotenv import load_dotenv load_dotenv() remap = json.load(open(file="../Migration & Backup/CHN to 39.06/unalteredRemap.json", encoding="utf-8")) os.makedirs("./temp/", exist_ok=True) os.makedirs("./Data_exported/Server/wwwroot/data/datatable", exist_ok=True) os.makedirs("./Data_exported/Data_mods/x64/datatable/dec/", exist_ok=True) shutil.copy2( "../Migration & Backup/CHN to 39.06/unaltered" + os.getenv("DBNAME"), "./Data_exported/Server/wwwroot/taiko.db3", ) # Connect to the database conn = sqlite3.connect("./Data_exported/Server/wwwroot/taiko.db3") cursor = conn.cursor() def update_ids_in_table(cursor, table, column, id_mappings): """ Updates the IDs in a specific table and column based on the provided id_mappings. Args: cursor: SQLite cursor object. table: Name of the table to update. column: Name of the column to update. id_mappings: Dictionary with old IDs as keys and new IDs as values. """ for old_id, new_id in id_mappings.items(): # SQL query to update the IDs sql_update_query = f"UPDATE {table} SET {column} = ? WHERE {column} = ?" # Execute the update query cursor.execute(sql_update_query, (new_id, old_id)) print(f"Updated {table}.{column} from {old_id} to {new_id}") # List of tables and their corresponding columns to update tables_to_update = { "AiScoreData": "SongId", "AiSectionScoreData": "SongId", "SongBestData": "SongId", "SongPlayData": "SongId", } invert = False id_mappings = {} for remapentry in remap: RemapFrom = remapentry["uniqueIdOriginal" if invert else "uniqueIdRemap"] RemapTo = remapentry["uniqueIdRemap" if invert else "uniqueIdOriginal"] id_mappings[RemapFrom] = RemapTo try: # Iterate over each table and update the IDs for table, column in tables_to_update.items(): update_ids_in_table(cursor, table, column, id_mappings) # Commit the changes to the database conn.commit() except sqlite3.Error as e: print(f"An error occurred: {e}") conn.rollback() # Rollback changes if something goes wrong finally: # Close the database connection conn.close() print("Database connection closed.")