import base64 import json import sys from connector import mysql TABLE_NAMES_TO_PK = { 'artist_info': 'artist_id', 'participant_identifier': 'id', 'project': 'project_id', 'releases': 'release_id', 'release_artist': 'release_artist_id', 'subaccount': 'subaccount_id', 'track': 'id', 'track_artist': 'id', 'track_writer': 'track_writer_id', 'vendor': 'vendor_id', } def get_synthetic_events(cursor, table_name, table_pk_field, ids): sql = f"SELECT * FROM {table_name} WHERE {table_pk_field} IN %s;" cursor.execute(sql, (ids, )) rows = cursor.fetchall() returned_ids = set(row[table_pk_field] for row in rows) if len(set(ids)) != len(returned_ids): print("Failed to fetch some rows!", file=sys.stderr) print(set(ids).symmetric_difference(returned_ids), file=sys.stderr) sys.exit(1) data = [ { "commit": True, "data": row, "database": "art_relations", "old": {}, "table": table_name, "type": "update", "source": "distro-scripts-generator", } for row in rows ] return data def main(): con = mysql.get_ar_mysql_connection() cursor = con.cursor() if len(sys.argv) < 3: print("Expected at least two arguments: Table name and a PK", file=sys.stderr) sys.exit(1) table = sys.argv[1] if table not in TABLE_NAMES_TO_PK: print("Unknown table.", file=sys.stderr) sys.exit(1) pks = [int(pk) for pk in sys.argv[2:]] for row in get_synthetic_events(cursor, table, TABLE_NAMES_TO_PK[table], pks): encoded = json.dumps(row, default=str) print(encoded, file=sys.stderr) print(base64.b64encode(encoded.encode('utf-8')).decode()) if __name__ == "__main__": main()