Files
pingu-concerts/docs/wiki/Database.md
T

1.8 KiB

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.