179 lines
4.4 KiB
Markdown
179 lines
4.4 KiB
Markdown
# TimeClock v3 - SQL-Scripts Ausführungsreihenfolge
|
|
|
|
Diese Anleitung zeigt, welche SQL-Scripts in welcher Reihenfolge ausgeführt werden müssen.
|
|
|
|
## Auf dem Server ausführen:
|
|
|
|
```bash
|
|
cd /var/www/timeclock/backend
|
|
|
|
# DB-Credentials aus .env
|
|
DB_HOST=$(grep DB_HOST .env | cut -d= -f2)
|
|
DB_USER=$(grep DB_USER .env | cut -d= -f2)
|
|
DB_PASSWORD=$(grep DB_PASSWORD .env | cut -d= -f2)
|
|
DB_NAME=$(grep DB_NAME .env | cut -d= -f2)
|
|
|
|
# Alias für einfachere Befehle
|
|
alias dbexec="mysql -h $DB_HOST -u $DB_USER -p'$DB_PASSWORD' $DB_NAME"
|
|
```
|
|
|
|
## 1. Basis-Schema (WICHTIG - zuerst!)
|
|
|
|
```bash
|
|
# Erstellt alle Haupt-Tabellen
|
|
dbexec < database-schema.sql
|
|
|
|
# Zeige erstellte Tabellen
|
|
dbexec -e "SHOW TABLES;"
|
|
```
|
|
|
|
## 2. Zusätzliche Tabellen
|
|
|
|
```bash
|
|
# Invitation Table
|
|
dbexec < create-invitation-table.sql
|
|
|
|
# Watcher Table
|
|
dbexec < create-watcher-table.sql
|
|
```
|
|
|
|
## 3. Indices für Performance
|
|
|
|
```bash
|
|
# Sick Index
|
|
dbexec < add-sick-index.sql
|
|
|
|
# Vacation Index
|
|
dbexec < add-vacation-index.sql
|
|
```
|
|
|
|
## 4. Timewish Setup (korrigierte Version!)
|
|
|
|
```bash
|
|
# Timewish mit Zeiträumen
|
|
dbexec < setup-timewish-complete.sql
|
|
|
|
# ODER falls noch Fehler: Nur die Spalten hinzufügen
|
|
dbexec << 'EOF'
|
|
-- Prüfe ob start_date existiert
|
|
SET @col_exists = (SELECT COUNT(*) FROM information_schema.COLUMNS
|
|
WHERE TABLE_SCHEMA = DATABASE()
|
|
AND TABLE_NAME = 'timewish'
|
|
AND COLUMN_NAME = 'start_date');
|
|
|
|
SET @sql = IF(@col_exists = 0,
|
|
'ALTER TABLE timewish ADD COLUMN start_date DATE DEFAULT ''2023-01-01'' AFTER end_time;',
|
|
'SELECT ''start_date existiert bereits'';'
|
|
);
|
|
PREPARE stmt FROM @sql;
|
|
EXECUTE stmt;
|
|
DEALLOCATE PREPARE stmt;
|
|
|
|
-- end_date
|
|
SET @col_exists = (SELECT COUNT(*) FROM information_schema.COLUMNS
|
|
WHERE TABLE_SCHEMA = DATABASE()
|
|
AND TABLE_NAME = 'timewish'
|
|
AND COLUMN_NAME = 'end_date');
|
|
|
|
SET @sql = IF(@col_exists = 0,
|
|
'ALTER TABLE timewish ADD COLUMN end_date DATE DEFAULT NULL AFTER start_date;',
|
|
'SELECT ''end_date existiert bereits'';'
|
|
);
|
|
PREPARE stmt FROM @sql;
|
|
EXECUTE stmt;
|
|
DEALLOCATE PREPARE stmt;
|
|
EOF
|
|
```
|
|
|
|
## 5. Optionale Scripts (nur bei Bedarf!)
|
|
|
|
### User als Admin setzen
|
|
```bash
|
|
# Passe user_id an! (Deine User-ID aus der users-Tabelle)
|
|
dbexec < set-user-admin.sql
|
|
```
|
|
|
|
### Timezone-Fixes (nur falls Probleme mit Zeitzonen)
|
|
```bash
|
|
# Worklog Timezone korrigieren
|
|
dbexec < fix-worklog-timezone.sql
|
|
```
|
|
|
|
### Overtime Offset Update
|
|
```bash
|
|
dbexec < update-overtime-offset.sql
|
|
```
|
|
|
|
### Wednesday-Fix (nur falls benötigt)
|
|
```bash
|
|
dbexec < add-missing-wednesday.sql
|
|
```
|
|
|
|
## Überprüfung
|
|
|
|
```bash
|
|
# Zeige alle Tabellen
|
|
dbexec -e "SHOW TABLES;"
|
|
|
|
# Zeige timewish-Struktur
|
|
dbexec -e "DESCRIBE timewish;"
|
|
|
|
# Zeige Anzahl User
|
|
dbexec -e "SELECT COUNT(*) AS user_count FROM users;"
|
|
|
|
# Zeige deine Timewishes
|
|
dbexec -e "SELECT * FROM timewish WHERE user_id = 1 ORDER BY day, start_date;"
|
|
```
|
|
|
|
## Nach SQL-Ausführung: Backend neu starten
|
|
|
|
```bash
|
|
# Backend neu starten damit es die neuen Tabellen/Spalten erkennt
|
|
pm2 restart timeclock-backend
|
|
|
|
# Logs prüfen
|
|
pm2 logs timeclock-backend --lines 30
|
|
|
|
# Sollte zeigen:
|
|
# 🕐 TimeClock Server läuft auf Port 3010
|
|
# 📍 API verfügbar unter http://localhost:3010/api
|
|
```
|
|
|
|
## Schnell-Befehl (alle wichtigen Scripts):
|
|
|
|
```bash
|
|
cd /var/www/timeclock/backend
|
|
|
|
# DB-Credentials setzen
|
|
DB_HOST=$(grep DB_HOST .env | cut -d= -f2)
|
|
DB_USER=$(grep DB_USER .env | cut -d= -f2)
|
|
DB_PASSWORD=$(grep DB_PASSWORD .env | cut -d= -f2)
|
|
DB_NAME=$(grep DB_NAME .env | cut -d= -f2)
|
|
|
|
echo "Führe SQL-Scripts aus..."
|
|
|
|
# 1. Basis-Schema
|
|
mysql -h $DB_HOST -u $DB_USER -p"$DB_PASSWORD" $DB_NAME < database-schema.sql 2>&1 | grep -v "already exists" || true
|
|
|
|
# 2. Zusätzliche Tabellen
|
|
mysql -h $DB_HOST -u $DB_USER -p"$DB_PASSWORD" $DB_NAME < create-invitation-table.sql 2>&1 | grep -v "already exists" || true
|
|
mysql -h $DB_HOST -u $DB_USER -p"$DB_PASSWORD" $DB_NAME < create-watcher-table.sql 2>&1 | grep -v "already exists" || true
|
|
|
|
# 3. Indices
|
|
mysql -h $DB_HOST -u $DB_USER -p"$DB_PASSWORD" $DB_NAME < add-sick-index.sql 2>&1 || true
|
|
mysql -h $DB_HOST -u $DB_USER -p"$DB_PASSWORD" $DB_NAME < add-vacation-index.sql 2>&1 || true
|
|
|
|
# 4. Timewish (korrigiert)
|
|
mysql -h $DB_HOST -u $DB_USER -p"$DB_PASSWORD" $DB_NAME < setup-timewish-complete.sql
|
|
|
|
echo "✅ SQL-Scripts ausgeführt!"
|
|
|
|
# Backend neu starten
|
|
pm2 restart timeclock-backend
|
|
|
|
echo "✅ Backend neu gestartet!"
|
|
```
|
|
|
|
Kopiere diesen Schnell-Befehl auf den Server und führe ihn aus! 🚀
|
|
|