managarten/chat/apps/mobile/readme/Supabase.md
Till-JS c638a7ffee feat(chat): integrate chat project into monorepo with full app structure
- 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>
2025-11-25 13:48:24 +01:00

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

  1. Übersicht
  2. Datenbankstruktur
  3. Einrichtung
  4. Skripte zur Datenbankverwaltung
  5. Fehlerbehebung
  6. 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:
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:

  1. Führe das Modell-Update-Skript aus, um die Modell-IDs zu korrigieren:
npm run supabase:update-models
  1. Ü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:

  1. Ü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';
  1. 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:
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:
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:
npm run supabase:cli
  1. Wähle Option 1 und führe folgende Befehle aus:
DELETE FROM messages;
DELETE FROM conversations;
  1. 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.