Database
MetalCircle verwendet PostgreSQL. Das Initialschema liegt in db/init/01_initial.sql; spätere Änderungen liegen als nummerierte SQL-Dateien in db/migrations/. Die Anwendung stellt beim Start zusätzlich sicher, dass die aktuellen Feature-Tabellen vorhanden sind. Jede Schemaänderung muss als reproduzierbare Migration vorliegen.
Wichtige Beziehungen:
users ist die Identität für Sessions, Freundschaften, Nachrichten, Kommentare, Attendance, Diary, Badges und Uploads.
concerts verweist optional auf venues, einen Parent-Event und den Ersteller.
concert_comments, concert_photos und concert_attendance hängen an einem Konzert.
concert_diary und concert_diary_photos bilden persönliche Konzertnotizen.
user_badges enthält Badges und optionale auslösende Konzerte.
push_devices bindet Android-FCM-Tokens an Benutzer und die aktuelle Session.
bug_report_submissions enthält ausschließlich kurzlebige Status-/Nonce-Metadaten zur Duplicate-Vermeidung, keine vollständigen Issues.
notification_preferences enthält DE/EN und individuelle Push-Kategorien (Migration 21).
push_notifications enthält transaktionale Aufträge je Gerät/Session, ohne Klartext-Token oder Nachrichteninhalt (Migration 21). Logout löscht sie per Fremdschlüssel; Aufbewahrung siehe Push Notifications.
- Migration 22 erlaubt per partiellem Unique-Index nur einen Alpha-/Beta-/Early-Bird-Patch je Nutzer. Die datumsabhängige Rückbefüllung erfolgt konfigurierbar beim App-Start.
Primäre Indizes unterstützen Konzertdatum, Venue-Suche, Kommentare, Fotos, Attendance, Nachrichten und Einladungen. Backups und Wiederherstellung der PostgreSQL-Daten sind umgebungsabhängig und werden nicht durch diese Repository-Migrationen automatisiert.