#!/usr/bin/env node
/**
 * Script zum Abfragen der Benutzer aus der SQLite-Datenbank
 * Verwendung: node query_users.js
 */

const Database = require('better-sqlite3');
const path = require('path');

// Datenbank-Pfad - angepasst für Docker-Container
const DB_PATH = process.env.DB_PATH || './data/taskmate.db';

try {
    console.log('Verbinde zur Datenbank:', DB_PATH);
    
    // Datenbank öffnen
    const db = new Database(DB_PATH);
    
    // Alle Benutzer abfragen
    const users = db.prepare(`
        SELECT 
            id,
            username,
            display_name,
            color,
            role,
            email,
            repositories_base_path,
            created_at,
            last_login,
            failed_attempts,
            locked_until
        FROM users 
        ORDER BY id
    `).all();
    
    console.log('\n=== BENUTZER IN DER DATENBANK ===\n');
    
    if (users.length === 0) {
        console.log('Keine Benutzer gefunden!');
    } else {
        users.forEach(user => {
            console.log(`ID: ${user.id}`);
            console.log(`Benutzername: ${user.username}`);
            console.log(`Anzeigename: ${user.display_name}`);
            console.log(`Farbe: ${user.color}`);
            console.log(`Rolle: ${user.role || 'user'}`);
            console.log(`E-Mail: ${user.email || 'nicht gesetzt'}`);
            console.log(`Repository-Basispfad: ${user.repositories_base_path || 'nicht gesetzt'}`);
            console.log(`Erstellt am: ${user.created_at}`);
            console.log(`Letzter Login: ${user.last_login || 'noch nie'}`);
            console.log(`Fehlgeschlagene Versuche: ${user.failed_attempts}`);
            console.log(`Gesperrt bis: ${user.locked_until || 'nicht gesperrt'}`);
            console.log('-----------------------------------');
        });
        
        console.log(`\nGesamt: ${users.length} Benutzer gefunden`);
    }
    
    // Prüfe auch Login-Audit für weitere Informationen
    const recentAttempts = db.prepare(`
        SELECT 
            la.timestamp,
            la.ip_address,
            la.success,
            la.user_agent,
            u.username
        FROM login_audit la
        LEFT JOIN users u ON la.user_id = u.id
        ORDER BY la.timestamp DESC
        LIMIT 10
    `).all();
    
    if (recentAttempts.length > 0) {
        console.log('\n=== LETZTE LOGIN-VERSUCHE ===\n');
        recentAttempts.forEach(attempt => {
            console.log(`${attempt.timestamp}: ${attempt.username || 'Unbekannt'} - ${attempt.success ? 'ERFOLGREICH' : 'FEHLGESCHLAGEN'} - IP: ${attempt.ip_address}`);
        });
    }
    
    // Datenbank schließen
    db.close();
    
} catch (error) {
    console.error('Fehler beim Abfragen der Datenbank:', error.message);
    process.exit(1);
}