# Supabase-Integration und Datenbank-Verwaltung Diese Dokumentation beschreibt die Integration von Supabase in die Chat-Anwendung und erklärt die Verwendung der bereitgestellten Skripte zur Datenbankverwaltung. ## Inhaltsverzeichnis 1. [Übersicht](#übersicht) 2. [Datenbankstruktur](#datenbankstruktur) 3. [Einrichtung](#einrichtung) 4. [Skripte zur Datenbankverwaltung](#skripte-zur-datenbankverwaltung) 5. [Fehlerbehebung](#fehlerbehebung) 6. [Häufig gestellte Fragen](#häufig-gestellte-fragen) ## Übersicht Die Chat-Anwendung verwendet Supabase als Backend-Dienst für: - Benutzerauthentifizierung - Datenspeicherung (Konversationen, Nachrichten, Modelle) - Echtzeit-Updates ## Datenbankstruktur Die Anwendung verwendet folgende Tabellen in Supabase: | Tabelle | Beschreibung | Wichtige Felder | |---------|--------------|-----------------| | users | Benutzerinformationen | id, email, name, created_at, updated_at | | conversations | Gespeicherte Konversationen | id, user_id, model_id, template_id, conversation_mode, created_at, updated_at | | messages | Nachrichten innerhalb von Konversationen | id, conversation_id, sender, message_text, created_at, updated_at | | models | Verfügbare LLM-Modelle | id, name, description, parameters, created_at, updated_at | | templates | Konversationsvorlagen | id, name, description, mode_type, initial_questions, created_at, updated_at | ## Einrichtung ### Voraussetzungen 1. Ein Supabase-Konto und -Projekt 2. Node.js und npm installiert 3. Die Umgebungsvariablen in der `.env`-Datei konfiguriert: ``` EXPO_PUBLIC_SUPABASE_URL=https://deine-projekt-id.supabase.co EXPO_PUBLIC_SUPABASE_ANON_KEY=dein-anon-key ``` ### Ersteinrichtung Um die Supabase-Datenbank für die Anwendung einzurichten: 1. Führe das Setup-Skript aus: ```bash npm run supabase:setup ``` Dieses Skript: - Erstellt die notwendigen Funktionen in der Datenbank - Richtet die Tabellen ein, falls sie noch nicht existieren - Fügt die Standard-Modelle mit korrekten UUIDs ein ## Skripte zur Datenbankverwaltung Die Anwendung bietet mehrere Skripte zur Verwaltung der Supabase-Datenbank: ### 1. Supabase-Setup (`npm run supabase:setup`) Richtet die Supabase-Datenbank ein, erstellt notwendige Funktionen und aktualisiert die Modelle. ```bash npm run supabase:setup ``` ### 2. Modell-Update (`npm run supabase:update-models`) Aktualisiert die Modelle in der Datenbank mit den korrekten UUIDs. ```bash npm run supabase:update-models ``` ### 3. Interaktive Supabase-CLI (`npm run supabase:cli`) Ein interaktives Kommandozeilen-Tool zur Verwaltung der Datenbank. ```bash npm run supabase:cli ``` Mit diesem Tool kannst du: - SQL-Abfragen direkt ausführen - SQL-Dateien ausführen - Tabellenlisten anzeigen - Tabellenstrukturen anzeigen #### Beispiel-Befehle in der CLI **Tabellenliste anzeigen:** ``` 3 [Tabellenliste anzeigen] ``` **Tabellenstruktur anzeigen:** ``` 4 [Tabellenstruktur anzeigen] conversations ``` **SQL-Abfrage ausführen:** ``` 1 [SQL-Abfrage ausführen] SELECT * FROM models LIMIT 5; ``` ## Fehlerbehebung ### Problem: UUID-Fehler bei der Erstellung von Konversationen **Symptom:** Fehler "invalid input syntax for type uuid" beim Erstellen einer Konversation. **Lösung:** 1. Führe das Modell-Update-Skript aus, um die Modell-IDs zu korrigieren: ```bash npm run supabase:update-models ``` 2. Überprüfe, ob die Modell-IDs im Frontend mit denen in der Datenbank übereinstimmen: ```bash npm run supabase:cli ``` Dann wähle Option 1 und führe aus: ```sql SELECT id, name FROM models; ``` ### Problem: Authentifizierungsfehler **Symptom:** 400 Bad Request bei der Anmeldung. **Lösung:** 1. Überprüfe, ob der Benutzer in der Auth-Tabelle existiert: ```bash npm run supabase:cli ``` Dann wähle Option 1 und führe aus: ```sql SELECT * FROM auth.users WHERE email = 'deine-email@beispiel.de'; ``` 2. Verwende die Magic Link-Anmeldung als Alternative. ## Häufig gestellte Fragen ### Wie füge ich ein neues Modell hinzu? 1. Füge das Modell zur `FALLBACK_MODELS`-Liste in `app/api/models+api.ts` hinzu 2. Führe das Modell-Update-Skript aus: ```bash npm run supabase:update-models ``` ### Wie kann ich die Datenbankstruktur ändern? 1. Erstelle eine SQL-Datei mit den gewünschten Änderungen 2. Führe die Datei mit der Supabase-CLI aus: ```bash npm run supabase:cli ``` Dann wähle Option 2 und gib den Pfad zur SQL-Datei ein. ### Wie kann ich die Datenbank zurücksetzen? 1. Verwende die Supabase-CLI: ```bash npm run supabase:cli ``` 2. Wähle Option 1 und führe folgende Befehle aus: ```sql DELETE FROM messages; DELETE FROM conversations; ``` 3. Führe das Modell-Update-Skript aus, um die Standard-Modelle wiederherzustellen: ```bash npm run supabase:update-models ``` --- Diese Dokumentation wird kontinuierlich aktualisiert. Bei Fragen oder Problemen, bitte erstelle ein Issue im Repository oder kontaktiere das Entwicklungsteam.