• v0.7.0 3c8d93ca14

    v0.7.0 – PostgreSQL-Backend
    All checks were successful
    Deploy docs / deploy (push) Successful in 1m7s
    Tests / test (push) Successful in 2m53s
    Build and Push Docker Image / build (push) Successful in 7s
    Stable

    ppfeiffer released this 2026-04-17 21:16:29 +02:00 | 86 commits to main since this release

    Was ist neu

    PostgreSQL-Backend (modules/pg_adapter.py)

    Transparenter Drop-in-Ersatz für sqlite3 — alle 17 datenbanknutzenden Module importieren jetzt from modules import pg_adapter as sqlite3.

    • Automatische SQL-Übersetzung: ?%s, AUTOINCREMENTGENERATED ALWAYS AS IDENTITY, datetime(now, ...)NOW() + INTERVAL, PRAGMA table_infoinformation_schema.columns, sqlite_masterinformation_schema.tables, INSERT OR REPLACE/IGNOREON CONFLICT, COLLATE NOCASE entfernt
    • Psycopg2-Thread-Connection-Pool (2–20), CompatRow für Dict+Index-Zugriff
    • Vollständiger SQLite-Fallback wenn DATABASE_URL nicht gesetzt — keine Änderung für bestehende SQLite-Setups

    Config-in-Datenbank (modules/config_store.py)

    bot_config-Tabelle als Overlay für ConfigParser. DB-Werte überschreiben config.ini. Beim ersten Start werden alle config.ini-Werte als Defaults importiert.

    Docker mit PostgreSQL (docker-compose.yml)

    PostgreSQL 16 Alpine als separater Service mit Healthcheck. Bot startet erst nach pg_isready. Passwort über ${DB_PASSWORD:-meshcore_secret} konfigurierbar.

    Dashboard-API (GET /api/dashboard)

    Neuer öffentlicher Endpoint: bot_name, version, uptime, Kontakte, Nachrichten, Top-5-Commands, zuletzt gehörte Kontakte.

    Migrationsskript (scripts/migrate_sqlite_to_postgres.py)

    Idempotentes SQLite→PostgreSQL-Migrationsskript für beide Datenbanken, mit --dry-run-Flag.

    Behoben

    • PgCursor.execute: lastrowid-Fetch konsumierte SELECT-Rows → Login schlug stets fehl
    • Web-Viewer-Subprocess: fehlende cwd+PYTHONPATH verhinderten modules-Import
    • sqlite_master: fehlende Übersetzung zu information_schema.tables
    • /api/dashboard: falscher Spaltenname command statt command_name

    Upgrade-Hinweis

    SQLite-Nutzer: Keine Änderung erforderlich — der Bot fällt automatisch auf SQLite zurück wenn DATABASE_URL nicht gesetzt ist.

    PostgreSQL-Migration:

    DATABASE_URL=postgresql://user:pass@host:5432/meshcore_bot \
      python3 scripts/migrate_sqlite_to_postgres.py \
      --sqlite-main data/databases/meshcore_bot.db \
      --sqlite-telemetry data/databases/telemetry_data.db
    

    Vollständiges Changelog: CHANGELOG.md

    Downloads