Add user -> username column name migration script
This commit is contained in:
parent
6c82bad882
commit
4652642bcd
69
utils/migrate_user_tables.py
Normal file
69
utils/migrate_user_tables.py
Normal file
@ -0,0 +1,69 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
This script updates the auth and session sqlite3 databases to use the
|
||||
more compatible `username` column instead of `user`, which is a reserved
|
||||
word in many other SQL dialects.
|
||||
"""
|
||||
import os
|
||||
import sys
|
||||
path = os.path.realpath(os.path.abspath(os.path.join(__file__, '../')))
|
||||
sys.path.insert(0, os.path.dirname(path))
|
||||
|
||||
import sqlite3
|
||||
import ankisyncd.config
|
||||
conf = ankisyncd.config.load()
|
||||
|
||||
|
||||
def main():
|
||||
|
||||
if os.path.isfile(conf["auth_db_path"]):
|
||||
conn = sqlite3.connect(conf["auth_db_path"])
|
||||
|
||||
cursor = conn.cursor()
|
||||
cursor.execute("SELECT * FROM sqlite_master "
|
||||
"WHERE sql LIKE '%user VARCHAR PRIMARY KEY%' "
|
||||
"AND tbl_name = 'auth'")
|
||||
res = cursor.fetchone()
|
||||
|
||||
if res is not None:
|
||||
cursor.execute("ALTER TABLE auth RENAME TO auth_old")
|
||||
cursor.execute("CREATE TABLE auth (username VARCHAR PRIMARY KEY, hash VARCHAR)")
|
||||
cursor.execute("INSERT INTO auth (username, hash) SELECT user, hash FROM auth_old")
|
||||
cursor.execute("DROP TABLE auth_old")
|
||||
conn.commit()
|
||||
print("Successfully updated table 'auth'")
|
||||
else:
|
||||
print("No outdated 'auth' table found.")
|
||||
|
||||
conn.close()
|
||||
else:
|
||||
print("No auth DB found at the configured 'auth_db_path' path.")
|
||||
|
||||
if os.path.isfile(conf["session_db_path"]):
|
||||
conn = sqlite3.connect(conf["session_db_path"])
|
||||
|
||||
cursor = conn.cursor()
|
||||
cursor.execute("SELECT * FROM sqlite_master "
|
||||
"WHERE sql LIKE '%user VARCHAR%' "
|
||||
"AND tbl_name = 'session'")
|
||||
res = cursor.fetchone()
|
||||
|
||||
if res is not None:
|
||||
cursor.execute("ALTER TABLE session RENAME TO session_old")
|
||||
cursor.execute("CREATE TABLE session (hkey VARCHAR PRIMARY KEY, skey VARCHAR, "
|
||||
"username VARCHAR, path VARCHAR)")
|
||||
cursor.execute("INSERT INTO session (hkey, skey, username, path) "
|
||||
"SELECT hkey, skey, user, path FROM session_old")
|
||||
cursor.execute("DROP TABLE session_old")
|
||||
conn.commit()
|
||||
print("Successfully updated table 'session'")
|
||||
else:
|
||||
print("No outdated 'session' table found.")
|
||||
|
||||
conn.close()
|
||||
else:
|
||||
print("No session DB found at the configured 'session_db_path' path.")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Loading…
Reference in New Issue
Block a user