Browse Source

First pass at migration script

Kirk Trombley 4 years ago
parent
commit
8e1445bc29
3 changed files with 36 additions and 1 deletions
  1. 0 1
      README.md
  2. 2 0
      migration/.gitignore
  3. 34 0
      migration/migrate.py

+ 0 - 1
README.md

@@ -9,7 +9,6 @@ TODO as always
 ## Missing Commands
 
 Needs the following ported from rollbot3 for feature parity:
-- hangguy
 - watchlist
 - rollcoin
 

+ 2 - 0
migration/.gitignore

@@ -0,0 +1,2 @@
+*.sqlite
+*.db

+ 34 - 0
migration/migrate.py

@@ -0,0 +1,34 @@
+import json
+import sqlite3
+import pickle
+import uuid
+from datetime import datetime
+from collections import defaultdict
+
+with sqlite3.connect("./rollbot.sqlite") as db:
+    cur = db.execute("SELECT person_id, curses, blessings FROM curse_bless_score")
+    karma = defaultdict(int)
+    for (pid, c, b) in cur:
+        karma[pid] -= c
+        karma[pid] += b
+    curses = {k: json.dumps({"score": v, "zero_passes": 0}) for k, v in karma.items()}
+    print(curses)
+
+    # cur = db.execute("SELECT items, group_id FROM watchlist")
+    # watchlist = []
+    # for (items, _) in cur:
+    #     watchlist += pickle.loads(items)
+    # print(watchlist)
+
+    dead_guys = {}
+    cur = db.execute("SELECT state, games, timestamp FROM hangguy_dead_guy")
+    for (state, liftime, timestamp) in cur:
+        timestamp = datetime.fromisoformat(timestamp)
+        dead_guys[f"{uuid.uuid4().hex}-{timestamp.isoformat()}"] = json.dumps({"state": state, "lifetime": liftime, "timestamp": timestamp.timestamp()})
+    print(dead_guys)
+
+
+with sqlite3.connect("./rollbot.db") as db:
+    db.executemany("INSERT INTO curse_score VALUES (?, ?)", list(curses.items()))
+    # db.execute("INSERT INTO watchlist VALUES (?, ?)", .items())
+    db.executemany("INSERT INTO dead_guy VALUES (?, ?)", list(dead_guys.items()))