migrate local user to V3
This commit is contained in:
parent
da30a40fd6
commit
e2ea8fe42f
2 changed files with 40 additions and 0 deletions
21
oml/setup.py
21
oml/setup.py
|
@ -423,6 +423,27 @@ def upgrade_db(old, new=None):
|
|||
)''')
|
||||
run_sql('CREATE UNIQUE INDEX IF NOT EXISTS user_metadata_index ON user_metadata(id, user_id)')
|
||||
run_sql('CREATE INDEX ix_user_metadata_data_hash ON user_metadata (data_hash)')
|
||||
if old <= '20240608-1469-647a8b9':
|
||||
old_hostname = os.path.join(settings.data_path, 'tor/hostname')
|
||||
if os.path.exists(old_hostname):
|
||||
with open(old_hostname) as fd:
|
||||
OLD_USER_ID = fd.read().split('.')[0]
|
||||
statements = [
|
||||
"UPDATE user SET id = '{nid}' WHERE id = '{oid}'",
|
||||
"UPDATE list SET user_id = '{nid}' WHERE user_id = '{oid}'",
|
||||
"UPDATE useritem SET user_id = '{nid}' WHERE user_id = '{oid}'",
|
||||
"UPDATE changelog SET user_id = '{nid}' WHERE user_id = '{oid}'",
|
||||
]
|
||||
run_sql([
|
||||
sql.format(oid=OLD_USER_ID, nid=settings.USER_ID)
|
||||
for sql in statements
|
||||
])
|
||||
for ext in ('log', 'db', 'json'):
|
||||
old_log = os.path.join(settings.data_path, 'peers/%s.%s' % (OLD_USER_ID, ext))
|
||||
new_log = os.path.join(settings.data_path, 'peers/%s.%s' % (USER_ID, ext))
|
||||
if os.path.exists(old_log) and not os.path.exists(new_log):
|
||||
os.rename(old_log, new_log)
|
||||
|
||||
|
||||
def create_default_lists(user_id=None):
|
||||
with db.session():
|
||||
|
|
19
oml/utils.py
19
oml/utils.py
|
@ -596,3 +596,22 @@ def time_cache(max_age, maxsize=128, typed=False):
|
|||
return _wrapped
|
||||
|
||||
return _decorator
|
||||
|
||||
def migrate_userid(old_id, new_id):
|
||||
from db import run_sql
|
||||
import settings
|
||||
statements = [
|
||||
"UPDATE user SET id = '{nid}' WHERE id = '{oid}'",
|
||||
"UPDATE list SET user_id = '{nid}' WHERE user_id = '{oid}'",
|
||||
"UPDATE useritem SET user_id = '{nid}' WHERE user_id = '{oid}'",
|
||||
"UPDATE changelog SET user_id = '{nid}' WHERE user_id = '{oid}'",
|
||||
]
|
||||
run_sql([
|
||||
sql.format(oid=old_id, nid=new_id)
|
||||
for sql in statements
|
||||
])
|
||||
for ext in ('log', 'db', 'json'):
|
||||
old_file = os.path.join(settings.data_path, 'peers/%s.%s' % (old_id, ext))
|
||||
new_file = os.path.join(settings.data_path, 'peers/%s.%s' % (new_id, ext))
|
||||
if os.path.exists(old_file) and not os.path.exists(new_file):
|
||||
os.rename(old_file, new_file)
|
||||
|
|
Loading…
Reference in a new issue