QueryBuilder/test_autocomplete_debug.html
2025-10-14 21:27:41 +02:00

78 lines
3.0 KiB
HTML

<!DOCTYPE html>
<html>
<head>
<title>Autocomplete Test</title>
<script>
function testColumnAutocomplete() {
// Teste die verschiedenen Funktionen
console.log('Testing extractTableNameFromQuery...');
// Test-Queries
const testQueries = [
'SELECT * FROM AUTH_CONFIG',
'SELECT NAME FROM AUTH_CONFIG WHERE',
'select id, name from AUTH_CONFIG',
'SELECT COUNT(*) FROM AUTH_CONFIG',
'SELECT * FROM AUTH_CONFIG ORDER BY'
];
testQueries.forEach(query => {
console.log(`Query: "${query}"`);
// Simuliere extractTableNameFromQuery
const upperText = query.toUpperCase();
const patterns = [
/\bFROM\s+([A-Z_][A-Z0-9_]*)/,
/\bFROM\s+([A-Z_][A-Z0-9_]*)\s+[A-Z_]/,
/\bFROM\s+([A-Z_][A-Z0-9_]*)\s*,/,
/\bFROM\s+([A-Z_][A-Z0-9_]*)\s*$/,
/\bFROM\s+([A-Z_][A-Z0-9_]*)\s+WHERE/,
/\bFROM\s+([A-Z_][A-Z0-9_]*)\s+ORDER/,
/\bFROM\s+([A-Z_][A-Z0-9_]*)\s+GROUP/
];
let found = false;
for (const pattern of patterns) {
const match = upperText.match(pattern);
if (match && match[1]) {
console.log(` Found table: ${match[1]} with pattern: ${pattern}`);
found = true;
break;
}
}
if (!found) {
console.log(' No table found');
}
// Teste shouldShowColumnAutocomplete
const textBeforeCursor = query.toUpperCase();
const hasFromClause = /\bFROM\s+[A-Z_][A-Z0-9_]*/.test(textBeforeCursor);
console.log(` Has FROM clause: ${hasFromClause}`);
const selectPatterns = [
/\bSELECT\s*$/,
/\bSELECT\s+((?:[A-Z_0-9*]+(?:\s*,\s*)?)*)\s*([A-Z_0-9]*)$/,
/\bSELECT\s+[^,]+(?:\s*,\s*[^,]*)*\s*,\s*([A-Z_0-9]*)$/
];
selectPatterns.forEach((pattern, index) => {
if (pattern.test(textBeforeCursor)) {
console.log(` SELECT pattern ${index} matched`);
}
});
console.log('---');
});
}
// Teste beim Laden der Seite
window.onload = testColumnAutocomplete;
</script>
</head>
<body>
<h1>Autocomplete Debug Test</h1>
<p>Öffne die Browser-Konsole um die Test-Ergebnisse zu sehen.</p>
<p>Teste dann in der echten Anwendung: "SELECT " gefolgt von "FROM AUTH_CONFIG"</p>
</body>
</html>