42 lines
1.4 KiB
Python
42 lines
1.4 KiB
Python
import sqlite3
|
|
import os
|
|
import logging
|
|
|
|
log = logging.getLogger(__name__)
|
|
|
|
|
|
def do_migration(db_dir):
|
|
log.info("Doing the migration")
|
|
migrate_blockchainname_db(db_dir)
|
|
log.info("Migration succeeded")
|
|
|
|
|
|
def migrate_blockchainname_db(db_dir):
|
|
blockchainname_db = os.path.join(db_dir, "blockchainname.db")
|
|
# skip migration on fresh installs
|
|
if not os.path.isfile(blockchainname_db):
|
|
return
|
|
|
|
db_file = sqlite3.connect(blockchainname_db)
|
|
file_cursor = db_file.cursor()
|
|
|
|
tables = file_cursor.execute("SELECT tbl_name FROM sqlite_master "
|
|
"WHERE type='table'").fetchall()
|
|
|
|
if 'tmp_name_metadata_table' in tables and 'name_metadata' not in tables:
|
|
file_cursor.execute("ALTER TABLE tmp_name_metadata_table RENAME TO name_metadata")
|
|
else:
|
|
file_cursor.executescript(
|
|
"CREATE TABLE IF NOT EXISTS tmp_name_metadata_table "
|
|
" (name TEXT UNIQUE NOT NULL, "
|
|
" txid TEXT NOT NULL, "
|
|
" n INTEGER NOT NULL, "
|
|
" sd_hash TEXT NOT NULL); "
|
|
"INSERT OR IGNORE INTO tmp_name_metadata_table "
|
|
" (name, txid, n, sd_hash) "
|
|
" SELECT name, txid, n, sd_hash FROM name_metadata; "
|
|
"DROP TABLE name_metadata; "
|
|
"ALTER TABLE tmp_name_metadata_table RENAME TO name_metadata;"
|
|
)
|
|
db_file.commit()
|
|
db_file.close()
|