Separate looted currency and preserve growing realm state in atomic chunks
Core tests / core (push) Successful in 49s
Core tests / core (push) Successful in 49s
This commit is contained in:
@@ -109,7 +109,12 @@ def backup():
|
||||
assert db.execute("SELECT COUNT(*) FROM sqlite_master WHERE type='table'").fetchone()[0]>0
|
||||
if db.execute("SELECT 1 FROM sqlite_master WHERE type='table' AND name='realm_state'").fetchone():
|
||||
row=db.execute("SELECT payload FROM realm_state WHERE id='realm'").fetchone()
|
||||
if row:restored_state=json.loads(row[0])
|
||||
if row:
|
||||
restored_state=json.loads(row[0])
|
||||
if restored_state.get('chunkToken'):
|
||||
chunks=db.execute('SELECT payload FROM realm_state_chunks WHERE token=? ORDER BY part',(restored_state['chunkToken'],)).fetchall()
|
||||
assert len(chunks)==restored_state['parts'], 'Incomplete restored state'
|
||||
restored_state=json.loads(''.join(r[0] for r in chunks))
|
||||
restored_file.unlink()
|
||||
if not restored_state or not restored_state.get('bots'):raise RuntimeError('Restored app realm state missing')
|
||||
manifest['restoredMemories']=sum(len(b.get('memories',[])) for b in restored_state['bots'])
|
||||
|
||||
Reference in New Issue
Block a user