Add email functionality to AuthService; implement password reset email feature with nodemailer, including transporter initialization and email template for user notifications.
This commit is contained in:
178
backend/SQL_EXECUTION_ORDER.md
Normal file
178
backend/SQL_EXECUTION_ORDER.md
Normal file
@@ -0,0 +1,178 @@
|
||||
# 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! 🚀
|
||||
|
||||
Reference in New Issue
Block a user