]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Update GDPR dump script to latest migration (#41387)
authorPieter-Jan Briers <pieterjan.briers+git@gmail.com>
Mon, 10 Nov 2025 22:33:53 +0000 (23:33 +0100)
committerGitHub <noreply@github.com>
Mon, 10 Nov 2025 22:33:53 +0000 (22:33 +0000)
Tools/dump_user_data.py

index 39d23a9d3fd83e2cf547010bef45d1b88dde7809..09f9410805431a82fa539f2e32e166efdfec400b 100755 (executable)
@@ -8,7 +8,7 @@ import os
 import psycopg2
 from uuid import UUID
 
-LATEST_DB_MIGRATION = "20230725193102_AdminNotesImprovementsForeignKeys"
+LATEST_DB_MIGRATION = "20250314222016_ConstructionFavorites"
 
 def main():
     parser = argparse.ArgumentParser()
@@ -36,10 +36,12 @@ def main():
     dump_admin_messages(cur, user_id, arg_output)
     dump_admin_notes(cur, user_id, arg_output)
     dump_admin_watchlists(cur, user_id, arg_output)
+    dump_blacklist(cur, user_id, arg_output)
     dump_connection_log(cur, user_id, arg_output)
     dump_play_time(cur, user_id, arg_output)
     dump_player(cur, user_id, arg_output)
     dump_preference(cur, user_id, arg_output)
+    dump_role_whitelists(cur, user_id, arg_output)
     dump_server_ban(cur, user_id, arg_output)
     dump_server_ban_exemption(cur, user_id, arg_output)
     dump_server_role_ban(cur, user_id, arg_output)
@@ -257,7 +259,29 @@ FROM (
                 (SELECT COALESCE(json_agg(to_jsonb(trait_subq) - 'profile_id'), '[]') FROM (
                     SELECT * FROM trait WHERE trait.profile_id = profile.profile_id
                 ) trait_subq)
-                as traits
+                as traits,
+                (SELECT COALESCE(json_agg(to_jsonb(role_loadout_subq) - 'profile_id'), '[]') FROM (
+                    SELECT
+                        *,
+                        (SELECT COALESCE(json_agg(to_jsonb(loadout_group_subq) - 'profile_role_loadout_id'), '[]') FROM (
+                            SELECT
+                                *,
+                                (SELECT COALESCE(json_agg(to_jsonb(loadout_subq) - 'profile_loadout_group_id'), '[]') FROM (
+                                    SELECT * FROM profile_loadout WHERE profile_loadout.profile_loadout_group_id = profile_loadout_group.profile_loadout_group_id
+                                ) loadout_subq)
+                                as loadouts
+                            FROM
+                                profile_loadout_group
+                            WHERE
+                                profile_loadout_group.profile_role_loadout_id = profile_role_loadout.profile_role_loadout_id
+                        ) loadout_group_subq)
+                        as loadout_groups
+                    FROM
+                        profile_role_loadout
+                    WHERE
+                        profile_role_loadout.profile_id = profile.profile_id
+                ) role_loadout_subq)
+                as role_loadouts
             FROM
                 profile
             WHERE
@@ -395,6 +419,49 @@ FROM (
         f.write(json_data)
 
 
+def dump_blacklist(cur: "psycopg2.cursor", user_id: str, outdir: str):
+    print("Dumping blacklist...")
+
+    cur.execute("""
+SELECT
+    COALESCE(json_agg(to_json(data)), '[]') #>> '{}'
+FROM (
+    SELECT
+        *
+    FROM
+        blacklist
+    WHERE
+        user_id = %s
+) as data
+""", (user_id,))
+
+    json_data = cur.fetchall()[0][0]
+
+    with open(os.path.join(outdir, "blacklist.json"), "w", encoding="utf-8") as f:
+        f.write(json_data)
+
+def dump_role_whitelists(cur: "psycopg2.cursor", user_id: str, outdir: str):
+    print("Dumping role_whitelists...")
+
+    cur.execute("""
+SELECT
+    COALESCE(json_agg(to_json(data)), '[]') #>> '{}'
+FROM (
+    SELECT
+        *
+    FROM
+        role_whitelists
+    WHERE
+        player_user_id = %s
+) as data
+""", (user_id,))
+
+    json_data = cur.fetchall()[0][0]
+
+    with open(os.path.join(outdir, "role_whitelists.json"), "w", encoding="utf-8") as f:
+        f.write(json_data)
+
+
 def dump_admin_messages(cur: "psycopg2.cursor", user_id: str, outdir: str):
     print("Dumping admin_messages...")