54 lines
1.9 KiB
Python
54 lines
1.9 KiB
Python
import sqlite3
|
|
import os
|
|
import binascii
|
|
|
|
|
|
def do_migration(conf):
|
|
db_path = os.path.join(conf.data_dir, "lbrynet.sqlite")
|
|
connection = sqlite3.connect(db_path)
|
|
cursor = connection.cursor()
|
|
|
|
current_columns = []
|
|
for col_info in cursor.execute("pragma table_info('file');").fetchall():
|
|
current_columns.append(col_info[1])
|
|
if 'content_fee' in current_columns or 'saved_file' in current_columns:
|
|
connection.close()
|
|
print("already migrated")
|
|
return
|
|
|
|
cursor.execute(
|
|
"pragma foreign_keys=off;"
|
|
)
|
|
|
|
cursor.execute("""
|
|
create table if not exists new_file (
|
|
stream_hash text primary key not null references stream,
|
|
file_name text,
|
|
download_directory text,
|
|
blob_data_rate real not null,
|
|
status text not null,
|
|
saved_file integer not null,
|
|
content_fee text
|
|
);
|
|
""")
|
|
for (stream_hash, file_name, download_dir, data_rate, status) in cursor.execute("select * from file").fetchall():
|
|
saved_file = 0
|
|
if download_dir != '{stream}' and file_name != '{stream}':
|
|
try:
|
|
if os.path.isfile(os.path.join(binascii.unhexlify(download_dir).decode(),
|
|
binascii.unhexlify(file_name).decode())):
|
|
saved_file = 1
|
|
else:
|
|
download_dir, file_name = None, None
|
|
except Exception:
|
|
download_dir, file_name = None, None
|
|
else:
|
|
download_dir, file_name = None, None
|
|
cursor.execute(
|
|
"insert into new_file values (?, ?, ?, ?, ?, ?, NULL)",
|
|
(stream_hash, file_name, download_dir, data_rate, status, saved_file)
|
|
)
|
|
cursor.execute("drop table file")
|
|
cursor.execute("alter table new_file rename to file")
|
|
connection.commit()
|
|
connection.close()
|