Reference: Database Schema¶
SafeMode uses SQLite with WAL mode for better concurrent access.
Implementation: src/url_monitor/core/database.py
Connection Behavior¶
check_same_thread=Falsefor multi-thread/process scenarios.PRAGMA journal_mode=WALenabled.- timeout configured to avoid immediate lock failures.
Tables¶
alerts¶
Stores security events that reached alert persistence.
Columns:
idINTEGER PKurlTEXThostTEXTsecretsTEXT (JSON payload)timestampTEXTseenINTEGER default0alert_typeTEXT defaultsecret
whitelist¶
Stores user-approved domains/URLs.
Columns:
idINTEGER PKtypeTEXT (domainorurlstyle values)valueTEXT UNIQUEadded_atTEXT
history¶
Stores monitored URL history.
Columns:
idINTEGER PKurlTEXThostTEXTtimestampTEXTstatusINTEGERcontent_typeTEXTblockedBOOLEAN default0block_reasonTEXT
phishtank_urls¶
Stores phishing feed data (incremental model).
Columns:
idINTEGER PKurlTEXT UNIQUEdomainTEXTfirst_seenTEXTlast_updatedTEXTactiveBOOLEAN default1sourceTEXT defaultunknown
Indexes:
idx_phishtank_domainidx_phishtank_active
Migration Behavior¶
Current migration path includes adding missing source column to existing phishtank_urls tables.
Data Lifecycle¶
- Alert rows can be marked as seen.
- History can be auto-cleared by retention settings.
- Phishing URLs are refreshed incrementally; stale entries can be marked inactive.