File: //opt/kw-schueler.bak.21032025/migrate_data.sh
#!/bin/bash
# Skript zur Installation und Migration der Klausurenweb-Datenbank
# Farben für Ausgaben
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
echo -e "${GREEN}=== Klausurenweb Datenbank-Setup ===${NC}"
# Prüfe, ob Umgebungsvariablen gesetzt sind
if [ -z "$MYSQL_HOST" ] || [ -z "$MYSQL_USER" ] || [ -z "$MYSQL_PASSWORD" ]; then
echo -e "${RED}Bitte setze die Umgebungsvariablen MYSQL_HOST, MYSQL_USER und MYSQL_PASSWORD.${NC}"
echo -e "Beispiel: ${YELLOW}export MYSQL_HOST=localhost MYSQL_USER=root MYSQL_PASSWORD=root_password${NC}"
exit 1
fi
# Datenbankname
DB_NAME="klausurenweb_db"
echo -e "\n${GREEN}1. Erstelle und konfiguriere die Datenbank${NC}"
mysql -h $MYSQL_HOST -u $MYSQL_USER -p$MYSQL_PASSWORD < mysql_setup.sql
if [ $? -ne 0 ]; then
echo -e "${RED}Fehler bei der Datenbankerstellung. Bitte überprüfe die MySQL-Verbindung.${NC}"
exit 1
fi
echo -e "${GREEN}Datenbank erfolgreich erstellt.${NC}"
# Entfernen des UNIQUE KEY-Constraints, falls es eine bestehende Installation ist
echo -e "\n${GREEN}1a. Entferne UNIQUE KEY-Constraint auf assignment_types.name${NC}"
mysql -h $MYSQL_HOST -u $MYSQL_USER -p$MYSQL_PASSWORD < remove_unique_constraint.sql
if [ $? -ne 0 ]; then
echo -e "${YELLOW}Hinweis: Konnte UNIQUE KEY nicht entfernen. Dies kann bei Neuinstallationen normal sein.${NC}"
else
echo -e "${GREEN}UNIQUE KEY-Constraint erfolgreich entfernt.${NC}"
fi
echo -e "\n${GREEN}2. Importiere Lehrerkonten${NC}"
if [ -f "teachers_import.csv" ]; then
python update_teacher_passwords.py \
--host=$MYSQL_HOST \
--user=$MYSQL_USER \
--password=$MYSQL_PASSWORD \
--database=$DB_NAME \
--csv-file=teachers_import.csv
if [ $? -ne 0 ]; then
echo -e "${RED}Fehler beim Import der Lehrerkonten.${NC}"
exit 1
fi
echo -e "${GREEN}Lehrerkonten erfolgreich importiert.${NC}"
else
echo -e "${YELLOW}Die Datei teachers_import.csv wurde nicht gefunden. Lehrerkonten werden nicht importiert.${NC}"
echo -e "${YELLOW}Du kannst die Beispieldatei teachers_import_example.csv als Vorlage verwenden.${NC}"
fi
echo -e "\n${GREEN}3. Migriere Fächer und Aufgabentypen${NC}"
if [ -f "fach_aufgaben.json" ]; then
echo -e "${YELLOW}Bitte gib die ID des Lehrers ein, dem die Fächer und Aufgabentypen zugewiesen werden sollen (leer lassen, um zu überspringen):${NC}"
read TEACHER_ID
if [ -n "$TEACHER_ID" ]; then
TEACHER_PARAM="--admin-teacher-id=$TEACHER_ID"
else
TEACHER_PARAM=""
fi
python migrate_subjects_types.py \
--host=$MYSQL_HOST \
--user=$MYSQL_USER \
--password=$MYSQL_PASSWORD \
--database=$DB_NAME \
--json-file=fach_aufgaben.json \
$TEACHER_PARAM
if [ $? -ne 0 ]; then
echo -e "${RED}Fehler bei der Migration der Fächer und Aufgabentypen.${NC}"
exit 1
fi
echo -e "${GREEN}Fächer und Aufgabentypen erfolgreich migriert.${NC}"
else
echo -e "${RED}Die Datei fach_aufgaben.json wurde nicht gefunden. Migration wird übersprungen.${NC}"
fi
# Neu: Migration der Materialien
echo -e "\n${GREEN}4. Migriere Lehrmaterialien in die Datenbank${NC}"
if [ -d "schule-materialien" ]; then
echo -e "${YELLOW}Sollen die vorhandenen Materialien in die Datenbank migriert werden? (j/n):${NC}"
read MIGRATE_MATERIALS
if [ "$MIGRATE_MATERIALS" = "j" ] || [ "$MIGRATE_MATERIALS" = "J" ]; then
# Erstelle zuerst die benötigten Tabellen
python migrate_materials.py \
--host=$MYSQL_HOST \
--user=$MYSQL_USER \
--password=$MYSQL_PASSWORD \
--database=$DB_NAME \
--setup-tables
if [ $? -ne 0 ]; then
echo -e "${RED}Fehler beim Erstellen der Materialtabellen. Abbruch.${NC}"
exit 1
fi
echo -e "${GREEN}Materialien-Tabellen erfolgreich erstellt.${NC}"
echo -e "${YELLOW}Starte Migration der Materialien...${NC}"
python migrate_materials.py \
--host=$MYSQL_HOST \
--user=$MYSQL_USER \
--password=$MYSQL_PASSWORD \
--database=$DB_NAME \
--materials-dir="schule-materialien"
if [ $? -ne 0 ]; then
echo -e "${RED}Fehler bei der Migration der Materialien.${NC}"
exit 1
fi
echo -e "${GREEN}Materialien erfolgreich migriert.${NC}"
else
echo -e "${YELLOW}Migration der Materialien übersprungen.${NC}"
fi
else
echo -e "${YELLOW}Das Verzeichnis schule-materialien wurde nicht gefunden. Migration der Materialien wird übersprungen.${NC}"
fi
echo -e "\n${GREEN}5. Streamlit-Konfiguration${NC}"
if [ ! -d ".streamlit" ]; then
mkdir -p .streamlit
fi
if [ ! -f ".streamlit/secrets.toml" ]; then
echo -e "${YELLOW}Erstelle .streamlit/secrets.toml Konfigurationsdatei...${NC}"
cat > .streamlit/secrets.toml << EOF
[mysql]
host = "$MYSQL_HOST"
user = "$MYSQL_USER"
password = "$MYSQL_PASSWORD"
database = "$DB_NAME"
[email]
smtp_server = "smtp.example.com"
smtp_port = 587
username = "dein_username"
password = "dein_passwort"
sender = "no-reply@example.com"
# Basis-URL für Passwort-Reset-Links
base_url = "https://klausurenweb.de"
EOF
echo -e "${GREEN}.streamlit/secrets.toml erstellt. Bitte passe die E-Mail-Einstellungen an.${NC}"
else
echo -e "${YELLOW}.streamlit/secrets.toml existiert bereits. Bitte überprüfe, ob die Konfiguration korrekt ist.${NC}"
fi
echo -e "\n${GREEN}=== Setup abgeschlossen ===${NC}"
echo -e "${GREEN}Die Klausurenweb-Datenbank wurde erfolgreich eingerichtet.${NC}"
echo -e "${YELLOW}Bitte stelle sicher, dass die E-Mail-Einstellungen in .streamlit/secrets.toml korrekt sind.${NC}"