feat: Add SQLite database integration for aircraft history and callsign enhancement

- Implement comprehensive database package with versioned migrations
- Add skyview-data CLI tool for managing aviation reference data
- Integrate database with merger for real-time aircraft history persistence
- Support OurAirports and OpenFlights data sources (runtime loading)
- Add systemd timer for automated database updates
- Fix transaction-based bulk loading for 2400% performance improvement
- Add callsign enhancement system with airline/airport lookups
- Update Debian packaging with database directory and permissions

Database features:
- Aircraft position history with configurable retention
- External aviation data loading (airlines, airports)
- Callsign parsing and enhancement
- API client for external lookups (OpenSky, etc.)
- Privacy mode for complete offline operation

CLI commands:
- skyview-data status: Show database statistics
- skyview-data update: Load aviation reference data
- skyview-data list: Show available data sources
- skyview-data clear: Remove specific data sources

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Ole-Morten Duesund 2025-08-31 16:48:28 +02:00
commit 37c4fa2b57
25 changed files with 4771 additions and 12 deletions

View file

@ -0,0 +1,33 @@
[Unit]
Description=SkyView Database Update
Documentation=man:skyview-data(1)
After=network-online.target
Wants=network-online.target
[Service]
Type=oneshot
User=skyview
Group=skyview
ExecStart=/usr/bin/skyview-data update
StandardOutput=journal
StandardError=journal
# Security hardening
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=strict
ProtectHome=true
ReadWritePaths=/var/lib/skyview /tmp
ProtectKernelTunables=true
ProtectKernelModules=true
ProtectControlGroups=true
RestrictRealtime=true
RestrictSUIDSGID=true
# Resource limits
MemoryMax=256M
TasksMax=50
TimeoutStartSec=300
[Install]
WantedBy=multi-user.target

View file

@ -0,0 +1,17 @@
[Unit]
Description=SkyView Database Update Timer
Documentation=man:skyview-data(1)
Requires=skyview-database-update.service
[Timer]
# Run weekly on Sunday at 3 AM
OnCalendar=Sun 03:00
# Randomize start time within 1 hour to avoid thundering herd
RandomizedDelaySec=3600
# Start immediately if system was down during scheduled time
Persistent=true
# Don't start if system is on battery (laptops)
ConditionACPower=true
[Install]
WantedBy=timers.target