- Restructure chat as apps/mobile, apps/web, apps/landing, backend - Add NestJS backend for secure Azure OpenAI API calls - Remove exposed API key from mobile app (security fix) - Add shared chat-types package - Create SvelteKit web app scaffold - Create Astro landing page scaffold - Update pnpm workspace configuration - Add project-level CLAUDE.md documentation 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
4.8 KiB
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
- Übersicht
- Datenbankstruktur
- Einrichtung
- Skripte zur Datenbankverwaltung
- Fehlerbehebung
- 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
- Ein Supabase-Konto und -Projekt
- Node.js und npm installiert
- 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:
- Führe das Setup-Skript aus:
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.
npm run supabase:setup
2. Modell-Update (npm run supabase:update-models)
Aktualisiert die Modelle in der Datenbank mit den korrekten UUIDs.
npm run supabase:update-models
3. Interaktive Supabase-CLI (npm run supabase:cli)
Ein interaktives Kommandozeilen-Tool zur Verwaltung der Datenbank.
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:
- Führe das Modell-Update-Skript aus, um die Modell-IDs zu korrigieren:
npm run supabase:update-models
- Überprüfe, ob die Modell-IDs im Frontend mit denen in der Datenbank übereinstimmen:
npm run supabase:cli
Dann wähle Option 1 und führe aus:
SELECT id, name FROM models;
Problem: Authentifizierungsfehler
Symptom: 400 Bad Request bei der Anmeldung.
Lösung:
- Überprüfe, ob der Benutzer in der Auth-Tabelle existiert:
npm run supabase:cli
Dann wähle Option 1 und führe aus:
SELECT * FROM auth.users WHERE email = 'deine-email@beispiel.de';
- Verwende die Magic Link-Anmeldung als Alternative.
Häufig gestellte Fragen
Wie füge ich ein neues Modell hinzu?
- Füge das Modell zur
FALLBACK_MODELS-Liste inapp/api/models+api.tshinzu - Führe das Modell-Update-Skript aus:
npm run supabase:update-models
Wie kann ich die Datenbankstruktur ändern?
- Erstelle eine SQL-Datei mit den gewünschten Änderungen
- Führe die Datei mit der Supabase-CLI aus:
npm run supabase:cli
Dann wähle Option 2 und gib den Pfad zur SQL-Datei ein.
Wie kann ich die Datenbank zurücksetzen?
- Verwende die Supabase-CLI:
npm run supabase:cli
- Wähle Option 1 und führe folgende Befehle aus:
DELETE FROM messages;
DELETE FROM conversations;
- Führe das Modell-Update-Skript aus, um die Standard-Modelle wiederherzustellen:
npm run supabase:update-models
Diese Dokumentation wird kontinuierlich aktualisiert. Bei Fragen oder Problemen, bitte erstelle ein Issue im Repository oder kontaktiere das Entwicklungsteam.