Refactor database queries and error handling in multiple artifact scripts #633
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
This PR hardens multiple parsers against schema variations, missing tables, malformed files, and uninitialized variables. The goal: remove all crash paths caused by unexpected DB structures or corrupt input.
Changes
notificationHistory.py
ParseFromStringto avoid attempting to parse raw XML."Unexpected end-group tag"error.gmailEmails.py
messagehtmlfor every row prior to use.UnboundLocalErrorwhen email rows lack HTML parts.googleMapsGmm.py
sync_itemtable exists before running queries.googleDuo.py
self_id,call_state,outgoing,content_size_bytes,saved_status).googleMessages.py
Schema-aware attachment handling:
file_size_bytes/local_cache_pathwhen present.storage_uri/uri, or empty when all missing.Guard all attachment queries from missing-column crashes.
wireMessenger.py
Robust join between assets and messages:
Assets2,Assets,asset_id,_iddynamically.Fixed indentation issues and prevented missing-column exceptions.
wellbeing.py
component_eventstable before querying."no such table"errors.Outcome
messagehtml).Testing
Verified all modified modules run on:
Confirmed zero crashes across tests; all failures logged and skipped as intended.
Checklist