More tweaks
This commit is contained in:
@@ -19,7 +19,6 @@
|
|||||||
|
|
||||||
import sqlalchemy
|
import sqlalchemy
|
||||||
import logging
|
import logging
|
||||||
from eos.db.saveddata.queries import executeDatabaseQuery
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
@@ -42,7 +41,7 @@ class DatabaseCleanup:
|
|||||||
"WHERE characterID NOT IN (SELECT ID from characters)")
|
"WHERE characterID NOT IN (SELECT ID from characters)")
|
||||||
row = results.first()
|
row = results.first()
|
||||||
|
|
||||||
if row['num']:
|
if row and row['num']:
|
||||||
delete = saveddata_engine.execute("DELETE FROM characterSkills WHERE characterID NOT IN (SELECT ID from characters)")
|
delete = saveddata_engine.execute("DELETE FROM characterSkills WHERE characterID NOT IN (SELECT ID from characters)")
|
||||||
logger.error("Database corruption found. Cleaning up %d records.", delete.rowcount)
|
logger.error("Database corruption found. Cleaning up %d records.", delete.rowcount)
|
||||||
|
|
||||||
@@ -60,19 +59,20 @@ class DatabaseCleanup:
|
|||||||
results = saveddata_engine.execute("SELECT COUNT(*) AS num FROM fits WHERE damagePatternID NOT IN (SELECT ID FROM damagePatterns) OR damagePatternID IS NULL")
|
results = saveddata_engine.execute("SELECT COUNT(*) AS num FROM fits WHERE damagePatternID NOT IN (SELECT ID FROM damagePatterns) OR damagePatternID IS NULL")
|
||||||
row = results.first()
|
row = results.first()
|
||||||
|
|
||||||
if row['num']:
|
if row and row['num']:
|
||||||
# Get Uniform damage pattern ID
|
# Get Uniform damage pattern ID
|
||||||
query_return = executeDatabaseQuery(saveddata_engine, "SELECT ID FROM damagePatterns WHERE name = 'Uniform'")
|
query = saveddata_engine.execute("SELECT ID FROM damagePatterns WHERE name = 'Uniform'")
|
||||||
|
rows = query.fetchall()
|
||||||
|
|
||||||
if query_return.__len__() <= 0:
|
if len(rows) == 0:
|
||||||
logger.error("Missing uniform damage pattern.")
|
logger.error("Missing uniform damage pattern.")
|
||||||
elif query_return.__len__() > 1:
|
elif len(rows) > 1:
|
||||||
logger.error("More than one uniform damage pattern found.")
|
logger.error("More than one uniform damage pattern found.")
|
||||||
else:
|
else:
|
||||||
uniform_damage_pattern_id = query_return[0]['ID']
|
uniform_damage_pattern_id = rows[0]['ID']
|
||||||
update = saveddata_engine.execute("UPDATE 'fits' SET 'damagePatternID' = ? "
|
update = saveddata_engine.execute("UPDATE 'fits' SET 'damagePatternID' = ? "
|
||||||
"WHERE damagePatternID NOT IN (SELECT ID FROM damagePatterns) OR damagePatternID IS NULL",
|
"WHERE damagePatternID NOT IN (SELECT ID FROM damagePatterns) OR damagePatternID IS NULL",
|
||||||
uniform_damage_pattern_id)
|
uniform_damage_pattern_id)
|
||||||
logger.error("Database corruption found. Cleaning up %d records.", update.rowcount)
|
logger.error("Database corruption found. Cleaning up %d records.", update.rowcount)
|
||||||
except sqlalchemy.exc.DatabaseError:
|
except sqlalchemy.exc.DatabaseError:
|
||||||
logger.error("Failed to connect to database.")
|
logger.error("Failed to connect to database.")
|
||||||
@@ -87,17 +87,18 @@ class DatabaseCleanup:
|
|||||||
|
|
||||||
if row['num']:
|
if row['num']:
|
||||||
# Get All 5 character ID
|
# Get All 5 character ID
|
||||||
query_return = executeDatabaseQuery(saveddata_engine, "SELECT ID FROM characters WHERE name = 'All 5'")
|
query = saveddata_engine.execute("SELECT ID FROM characters WHERE name = 'All 5'")
|
||||||
|
rows = query.fetchall()
|
||||||
|
|
||||||
if query_return.__len__() <= 0:
|
if len(rows) == 0:
|
||||||
logger.error("Missing 'All 5' character.")
|
logger.error("Missing 'All 5' character.")
|
||||||
elif query_return.__len__() > 1:
|
elif len(rows) > 1:
|
||||||
logger.error("More than one 'All 5' character found.")
|
logger.error("More than one 'All 5' character found.")
|
||||||
else:
|
else:
|
||||||
all5_id = query_return[0]['ID']
|
all5_id = rows[0]['ID']
|
||||||
update = saveddata_engine.execute("UPDATE 'fits' SET 'characterID' = ? "
|
update = saveddata_engine.execute("UPDATE 'fits' SET 'characterID' = ? "
|
||||||
"WHERE characterID not in (select ID from characters) OR characterID IS NULL",
|
"WHERE characterID not in (select ID from characters) OR characterID IS NULL",
|
||||||
all5_id)
|
all5_id)
|
||||||
logger.error("Database corruption found. Cleaning up %d records.", update.rowcount)
|
logger.error("Database corruption found. Cleaning up %d records.", update.rowcount)
|
||||||
except sqlalchemy.exc.DatabaseError:
|
except sqlalchemy.exc.DatabaseError:
|
||||||
logger.error("Failed to connect to database.")
|
logger.error("Failed to connect to database.")
|
||||||
|
|||||||
@@ -407,22 +407,6 @@ def getCrestCharacter(lookfor, eager=None):
|
|||||||
raise TypeError("Need integer or string as argument")
|
raise TypeError("Need integer or string as argument")
|
||||||
return character
|
return character
|
||||||
|
|
||||||
def executeDatabaseQuery(saveddata_engine, query):
|
|
||||||
# Executes a query against the database, and returns a dict instead of a resultsproxy
|
|
||||||
results = saveddata_engine.execute(query)
|
|
||||||
|
|
||||||
return_list = []
|
|
||||||
|
|
||||||
for row in results:
|
|
||||||
internal_row = {}
|
|
||||||
for key in row._keymap:
|
|
||||||
idx = row._keymap[key][2]
|
|
||||||
internal_row.update({key: row._row[idx]})
|
|
||||||
|
|
||||||
return_list.append(internal_row)
|
|
||||||
|
|
||||||
return return_list
|
|
||||||
|
|
||||||
def getOverrides(itemID, eager=None):
|
def getOverrides(itemID, eager=None):
|
||||||
if isinstance(itemID, int):
|
if isinstance(itemID, int):
|
||||||
return saveddata_session.query(Override).filter(Override.itemID == itemID).all()
|
return saveddata_session.query(Override).filter(Override.itemID == itemID).all()
|
||||||
|
|||||||
Reference in New Issue
Block a user