(saveddata_engine)
| 57 | |
| 58 | @staticmethod |
| 59 | def OrphanedFitDamagePatterns(saveddata_engine): |
| 60 | # Find orphaned damage patterns. |
| 61 | # This solves an issue where the damage pattern doesn't exist, but fits reference the pattern. |
| 62 | # See issue #777 |
| 63 | pyfalog.debug("Running database cleanup for orphaned damage patterns attached to fits.") |
| 64 | query = "SELECT COUNT(*) AS num FROM fits WHERE damagePatternID NOT IN (SELECT ID FROM damagePatterns) OR damagePatternID IS NULL" |
| 65 | results = DatabaseCleanup.ExecuteSQLQuery(saveddata_engine, query) |
| 66 | |
| 67 | if results is None: |
| 68 | return |
| 69 | |
| 70 | row = results.first() |
| 71 | |
| 72 | if row and row['num']: |
| 73 | # Get Uniform damage pattern ID |
| 74 | uniform_query = "SELECT ID FROM damagePatterns WHERE name = 'Uniform'" |
| 75 | uniform_results = DatabaseCleanup.ExecuteSQLQuery(saveddata_engine, uniform_query) |
| 76 | |
| 77 | if uniform_results is None: |
| 78 | return |
| 79 | |
| 80 | rows = uniform_results.fetchall() |
| 81 | |
| 82 | if len(rows) == 0: |
| 83 | pyfalog.error("Missing uniform damage pattern.") |
| 84 | elif len(rows) > 1: |
| 85 | pyfalog.error("More than one uniform damage pattern found.") |
| 86 | else: |
| 87 | uniform_damage_pattern_id = rows[0]['ID'] |
| 88 | update_query = "UPDATE 'fits' SET 'damagePatternID' = {} " \ |
| 89 | "WHERE damagePatternID NOT IN (SELECT ID FROM damagePatterns) OR damagePatternID IS NULL".format(uniform_damage_pattern_id) |
| 90 | update_results = DatabaseCleanup.ExecuteSQLQuery(saveddata_engine, update_query) |
| 91 | pyfalog.error("Database corruption found. Cleaning up {0} records.", update_results.rowcount) |
| 92 | |
| 93 | @staticmethod |
| 94 | def OrphanedFitCharacterIDs(saveddata_engine): |
no test coverage detected