Initial commit from template
This commit is contained in:
55
.claude/skills/postgres-connect/SKILL.md
Normal file
55
.claude/skills/postgres-connect/SKILL.md
Normal file
@@ -0,0 +1,55 @@
|
||||
---
|
||||
name: postgres-connect
|
||||
description: Verbindet mit der PostgreSQL Datenbank. Erkennt das Betriebssystem, installiert psql CLI falls noetig, liest DATABASE_URL aus .env und stellt Verbindung her. Nutze diesen Skill wenn der User "Datenbank verbinden", "DB Verbindung", "psql", "PostgreSQL connect" oder aehnliches erwaehnt.
|
||||
---
|
||||
|
||||
# PostgreSQL Datenbank Verbindung
|
||||
|
||||
Dieser Skill verbindet automatisch mit der PostgreSQL Datenbank des Projekts.
|
||||
|
||||
## Automatischer Ablauf
|
||||
|
||||
1. **OS erkennen** mit dem Script `detect-os.sh`
|
||||
2. **psql pruefen** - ist PostgreSQL CLI installiert?
|
||||
3. **Falls nicht installiert** - Installation je nach OS
|
||||
4. **DATABASE_URL laden** aus `.env.local` oder `.env`
|
||||
5. **Verbindung herstellen** mit psql
|
||||
|
||||
## Scripts verwenden
|
||||
|
||||
### OS-Erkennung
|
||||
```bash
|
||||
bash detect-os.sh
|
||||
```
|
||||
|
||||
### psql Installation
|
||||
```bash
|
||||
bash install-psql.sh
|
||||
```
|
||||
|
||||
### Verbindung herstellen
|
||||
```bash
|
||||
bash connect.sh
|
||||
```
|
||||
|
||||
## Manuelle Befehle nach Verbindung
|
||||
|
||||
```sql
|
||||
-- Alle Tabellen anzeigen
|
||||
\dt
|
||||
|
||||
-- Tabellen-Schema
|
||||
\d table_name
|
||||
|
||||
-- Supabase Auth Users
|
||||
SELECT id, email, created_at FROM auth.users LIMIT 10;
|
||||
|
||||
-- RLS Policies pruefen
|
||||
SELECT * FROM pg_policies WHERE schemaname = 'public';
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
- **Connection refused**: Supabase Projekt evtl. pausiert
|
||||
- **SSL required**: `?sslmode=require` an URL anhaengen
|
||||
- **Auth failed**: Passwort URL-encoded? (@ -> %40)
|
||||
36
.claude/skills/postgres-connect/check-connection.sh
Executable file
36
.claude/skills/postgres-connect/check-connection.sh
Executable file
@@ -0,0 +1,36 @@
|
||||
#!/bin/bash
|
||||
# Testet die Datenbankverbindung ohne interaktive Shell
|
||||
|
||||
set -e
|
||||
|
||||
# DATABASE_URL laden
|
||||
if [ -f .env.local ]; then
|
||||
DATABASE_URL=$(grep -E "^DATABASE_URL=" .env.local | cut -d '=' -f2- | tr -d '"' | tr -d "'")
|
||||
fi
|
||||
|
||||
if [ -z "$DATABASE_URL" ] && [ -f .env ]; then
|
||||
DATABASE_URL=$(grep -E "^DATABASE_URL=" .env | cut -d '=' -f2- | tr -d '"' | tr -d "'")
|
||||
fi
|
||||
|
||||
if [ -z "$DATABASE_URL" ]; then
|
||||
echo "DATABASE_URL nicht gefunden"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Verbindung testen
|
||||
echo "Teste Verbindung..."
|
||||
if psql "$DATABASE_URL" -c "SELECT 1;" > /dev/null 2>&1; then
|
||||
echo "Verbindung erfolgreich!"
|
||||
|
||||
# Zusaetzliche Infos
|
||||
echo ""
|
||||
echo "Datenbank-Info:"
|
||||
psql "$DATABASE_URL" -c "SELECT current_database() as database, current_user as user, version();" 2>/dev/null
|
||||
|
||||
echo ""
|
||||
echo "Tabellen:"
|
||||
psql "$DATABASE_URL" -c "\dt" 2>/dev/null || echo "(keine Tabellen gefunden)"
|
||||
else
|
||||
echo "Verbindung fehlgeschlagen!"
|
||||
exit 1
|
||||
fi
|
||||
27
.claude/skills/postgres-connect/connect.sh
Executable file
27
.claude/skills/postgres-connect/connect.sh
Executable file
@@ -0,0 +1,27 @@
|
||||
#!/bin/bash
|
||||
# Verbindet mit der PostgreSQL Datenbank aus .env
|
||||
|
||||
set -e
|
||||
|
||||
# DATABASE_URL aus .env.local oder .env laden
|
||||
if [ -f .env.local ]; then
|
||||
DATABASE_URL=$(grep -E "^DATABASE_URL=" .env.local | cut -d '=' -f2- | tr -d '"' | tr -d "'")
|
||||
fi
|
||||
|
||||
if [ -z "$DATABASE_URL" ] && [ -f .env ]; then
|
||||
DATABASE_URL=$(grep -E "^DATABASE_URL=" .env | cut -d '=' -f2- | tr -d '"' | tr -d "'")
|
||||
fi
|
||||
|
||||
if [ -z "$DATABASE_URL" ]; then
|
||||
echo "Fehler: DATABASE_URL nicht in .env.local oder .env gefunden."
|
||||
echo ""
|
||||
echo "Bitte fuege DATABASE_URL zu .env.local hinzu:"
|
||||
echo 'DATABASE_URL="postgresql://user:password@host:port/database"'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Verbinde mit Datenbank..."
|
||||
echo "URL: ${DATABASE_URL%%@*}@***" # URL ohne Passwort ausgeben
|
||||
|
||||
# Verbindung herstellen
|
||||
psql "$DATABASE_URL"
|
||||
28
.claude/skills/postgres-connect/detect-os.sh
Executable file
28
.claude/skills/postgres-connect/detect-os.sh
Executable file
@@ -0,0 +1,28 @@
|
||||
#!/bin/bash
|
||||
# Erkennt das Betriebssystem und gibt es aus
|
||||
|
||||
OS_TYPE=$(uname -s)
|
||||
|
||||
case "$OS_TYPE" in
|
||||
"Darwin")
|
||||
echo "macos"
|
||||
;;
|
||||
"Linux")
|
||||
# Unterscheide zwischen verschiedenen Linux-Distributionen
|
||||
if [ -f /etc/alpine-release ]; then
|
||||
echo "alpine"
|
||||
elif [ -f /etc/debian_version ]; then
|
||||
echo "debian"
|
||||
elif [ -f /etc/redhat-release ]; then
|
||||
echo "redhat"
|
||||
else
|
||||
echo "linux"
|
||||
fi
|
||||
;;
|
||||
"MINGW"*|"MSYS"*|"CYGWIN"*)
|
||||
echo "windows"
|
||||
;;
|
||||
*)
|
||||
echo "unknown"
|
||||
;;
|
||||
esac
|
||||
72
.claude/skills/postgres-connect/install-psql.sh
Executable file
72
.claude/skills/postgres-connect/install-psql.sh
Executable file
@@ -0,0 +1,72 @@
|
||||
#!/bin/bash
|
||||
# Installiert PostgreSQL CLI basierend auf dem Betriebssystem
|
||||
|
||||
set -e
|
||||
|
||||
# OS erkennen
|
||||
OS_TYPE=$(uname -s)
|
||||
|
||||
# Pruefen ob psql bereits installiert ist
|
||||
if command -v psql &> /dev/null; then
|
||||
echo "psql ist bereits installiert: $(psql --version)"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "psql nicht gefunden. Starte Installation..."
|
||||
|
||||
case "$OS_TYPE" in
|
||||
"Darwin")
|
||||
# macOS - mit Homebrew
|
||||
if ! command -v brew &> /dev/null; then
|
||||
echo "Homebrew nicht gefunden. Bitte installiere Homebrew zuerst:"
|
||||
echo '/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"'
|
||||
exit 1
|
||||
fi
|
||||
echo "Installiere PostgreSQL via Homebrew..."
|
||||
brew install postgresql
|
||||
;;
|
||||
|
||||
"Linux")
|
||||
if [ -f /etc/alpine-release ]; then
|
||||
# Alpine Linux
|
||||
echo "Installiere PostgreSQL Client auf Alpine..."
|
||||
apk add --no-cache postgresql-client
|
||||
|
||||
elif [ -f /etc/debian_version ]; then
|
||||
# Debian/Ubuntu
|
||||
echo "Installiere PostgreSQL Client auf Debian/Ubuntu..."
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y postgresql-client
|
||||
|
||||
elif [ -f /etc/redhat-release ]; then
|
||||
# RHEL/CentOS/Fedora
|
||||
echo "Installiere PostgreSQL Client auf RHEL/CentOS..."
|
||||
sudo yum install -y postgresql
|
||||
|
||||
else
|
||||
echo "Unbekannte Linux-Distribution. Bitte installiere postgresql-client manuell."
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
|
||||
"MINGW"*|"MSYS"*|"CYGWIN"*)
|
||||
# Windows
|
||||
echo "Windows erkannt."
|
||||
echo "Bitte installiere PostgreSQL von: https://www.postgresql.org/download/windows/"
|
||||
echo "Oder nutze: winget install PostgreSQL.PostgreSQL"
|
||||
exit 1
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "Unbekanntes Betriebssystem: $OS_TYPE"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# Verifizieren
|
||||
if command -v psql &> /dev/null; then
|
||||
echo "Installation erfolgreich: $(psql --version)"
|
||||
else
|
||||
echo "Installation fehlgeschlagen."
|
||||
exit 1
|
||||
fi
|
||||
Reference in New Issue
Block a user