Datenbank & Models

Die App nutzt sqflite (SQLite) als lokale Datenbank. Alle relevanten Klassen befinden sich in lib/database/ und lib/models/.

DatabaseHelper (lib/database/database_helper.dart)

Der DatabaseHelper ist ein Singleton, das den Zugriff auf die SQLite-Datenbank verwaltet.

Kernfunktionen

  • Init: Erstellt Tabellen (reports, events, groups, images…) und führt Migrationen (_onUpgrade) durch.
  • CRUD: Bietet Methoden zum Erstellen, Lesen, Aktualisieren und Löschen (Soft-Delete) von Daten.
  • Sync: Methoden wie getUnsyncedReports() und markReportsAsSynced() steuern den Datenaustausch.
  • Import/Export: Hilfsfunktionen zum Importieren von Backups und ZIP-Paketen.

Report Model (lib/models/report.dart)

Das Report Model ist das Herzstück der Anwendung. Es repräsentiert einen erfassten Baum.

Wichtige Felder

  • id: Eindeutige UUID.
  • status: Der aktuelle Zustand (z.B. erfasst, geplant, geschnitten).
  • severity: Befallsstärke (1-3).
  • finders: Liste der Personen, die den Baum gefunden haben (Datenschutz-konform).
  • image_paths: Lokale Pfade zu den Bildern.
  • is_synced: Status der Synchronisation mit dem Server.

Serialisierung

Die Methoden toMap() und fromMap() wandeln das Dart-Objekt in eine JSON-Map für die Datenbank oder API um.