database migrate to multiple primary keys.

This commit is contained in:
clinton-hall 2014-05-27 20:24:37 +09:30
parent 07719e79b6
commit c7b320b3b8
2 changed files with 13 additions and 6 deletions

View file

@ -3,7 +3,7 @@ from nzbtomedia import logger, nzbToMediaDB
from nzbtomedia.nzbToMediaUtil import backupVersionedFile from nzbtomedia.nzbToMediaUtil import backupVersionedFile
MIN_DB_VERSION = 1 # oldest db version we support migrating from MIN_DB_VERSION = 1 # oldest db version we support migrating from
MAX_DB_VERSION = 1 MAX_DB_VERSION = 2
def backupDatabase(version): def backupDatabase(version):
logger.info("Backing up database before upgrade") logger.info("Backing up database before upgrade")
@ -22,11 +22,11 @@ class InitialSchema(nzbToMediaDB.SchemaUpgrade):
return self.hasTable("db_version") return self.hasTable("db_version")
def execute(self): def execute(self):
if not self.hasTable("history") and not self.hasTable("db_version"): if not self.hasTable("downloads") and not self.hasTable("db_version"):
queries = [ queries = [
"CREATE TABLE db_version (db_version INTEGER);", "CREATE TABLE db_version (db_version INTEGER);",
"CREATE TABLE downloads (input_directory TEXT, input_name TEXT PRIMARY KEY, input_hash TEXT, input_id TEXT, client_agent TEXT, status INTEGER, last_update NUMERIC);", "CREATE TABLE downloads (input_directory TEXT, input_name TEXT, input_hash TEXT, input_id TEXT, client_agent TEXT, status INTEGER, last_update NUMERIC, CONSTRAINT pk_downloadID PRIMARY KEY (input_directory, input_name));",
"INSERT INTO db_version (db_version) VALUES (1);" "INSERT INTO db_version (db_version) VALUES (2);"
] ]
for query in queries: for query in queries:
self.connection.action(query) self.connection.action(query)
@ -46,4 +46,11 @@ class InitialSchema(nzbToMediaDB.SchemaUpgrade):
cur_db_version) + ") has been incremented past what this version of nzbToMedia supports (" + \ cur_db_version) + ") has been incremented past what this version of nzbToMedia supports (" + \
str(MAX_DB_VERSION) + ").\n" + \ str(MAX_DB_VERSION) + ").\n" + \
"If you have used other forks of nzbToMedia, your database may be unusable due to their modifications." "If you have used other forks of nzbToMedia, your database may be unusable due to their modifications."
) )
if cur_db_version < MAX_DB_VERSION: # We need to upgrade.
queries = [
"ALTER TABLE downloads ADD CONSTRAINT pk_downloadID PRIMARY KEY (input_directory, input_name);",
"INSERT INTO db_version (db_version) VALUES (2);"
]
for query in queries:
self.connection.action(query)

View file

@ -255,7 +255,7 @@ class SchemaUpgrade(object):
def checkDBVersion(self): def checkDBVersion(self):
result = self.connection.select("SELECT db_version FROM db_version") result = self.connection.select("SELECT db_version FROM db_version")
if result: if result:
return int(result[0]["db_version"]) return int(result[-1]["db_version"])
else: else:
return 0 return 0