style: auto-format codebase with Prettier

Applied formatting to 1487+ files using pnpm format:write
  - TypeScript/JavaScript files
  - Svelte components
  - Astro pages
  - JSON configs
  - Markdown docs

  13 files still need manual review (Astro JSX comments)
This commit is contained in:
Wuesteon 2025-11-27 18:33:16 +01:00
parent 0241f5554c
commit d36b321d9d
3952 changed files with 661498 additions and 739751 deletions

View file

@ -16,51 +16,53 @@ const supabaseUrl = process.env.EXPO_PUBLIC_SUPABASE_URL;
const supabaseKey = process.env.EXPO_PUBLIC_SUPABASE_ANON_KEY;
if (!supabaseUrl || !supabaseKey) {
console.error('Fehler: EXPO_PUBLIC_SUPABASE_URL und EXPO_PUBLIC_SUPABASE_ANON_KEY müssen in der .env-Datei definiert sein.');
process.exit(1);
console.error(
'Fehler: EXPO_PUBLIC_SUPABASE_URL und EXPO_PUBLIC_SUPABASE_ANON_KEY müssen in der .env-Datei definiert sein.'
);
process.exit(1);
}
const supabase = createClient(supabaseUrl, supabaseKey);
// Funktion zum Ausführen einer SQL-Datei
async function executeSqlFile(filePath) {
try {
const fullPath = join(__dirname, filePath);
console.log(`Führe SQL-Datei aus: ${fullPath}`);
if (!fs.existsSync(fullPath)) {
console.error(`Fehler: Datei ${fullPath} existiert nicht.`);
return false;
}
const query = fs.readFileSync(fullPath, 'utf8');
// Teile die Abfrage in einzelne Anweisungen auf
const statements = query.split(';').filter(stmt => stmt.trim() !== '');
for (const statement of statements) {
console.log(`Führe aus: ${statement.trim()}`);
const { error } = await supabase.rpc('execute_sql', { query: statement.trim() });
if (error) {
console.error('Fehler bei der Ausführung:', error.message);
// Fahre trotz Fehler fort
}
}
return true;
} catch (error) {
console.error('Fehler beim Lesen oder Ausführen der Datei:', error.message);
return false;
}
try {
const fullPath = join(__dirname, filePath);
console.log(`Führe SQL-Datei aus: ${fullPath}`);
if (!fs.existsSync(fullPath)) {
console.error(`Fehler: Datei ${fullPath} existiert nicht.`);
return false;
}
const query = fs.readFileSync(fullPath, 'utf8');
// Teile die Abfrage in einzelne Anweisungen auf
const statements = query.split(';').filter((stmt) => stmt.trim() !== '');
for (const statement of statements) {
console.log(`Führe aus: ${statement.trim()}`);
const { error } = await supabase.rpc('execute_sql', { query: statement.trim() });
if (error) {
console.error('Fehler bei der Ausführung:', error.message);
// Fahre trotz Fehler fort
}
}
return true;
} catch (error) {
console.error('Fehler beim Lesen oder Ausführen der Datei:', error.message);
return false;
}
}
// Funktion zum Erstellen der execute_sql-Funktion
async function createExecuteSqlFunction() {
try {
console.log('Erstelle execute_sql-Funktion...');
const query = `
try {
console.log('Erstelle execute_sql-Funktion...');
const query = `
CREATE OR REPLACE FUNCTION execute_sql(query text)
RETURNS JSONB
LANGUAGE plpgsql
@ -77,60 +79,58 @@ async function createExecuteSqlFunction() {
END;
$$;
`;
const { error } = await supabase.rpc('execute_sql', { query });
if (error) {
// Die Funktion existiert möglicherweise noch nicht, versuche direkte SQL-Ausführung
console.log('Versuche direkte SQL-Ausführung...');
const { error: directError } = await supabase
.from('_exec_sql')
.insert({ sql: query });
if (directError) {
console.error('Fehler beim Erstellen der execute_sql-Funktion:', directError.message);
return false;
}
}
console.log('execute_sql-Funktion erfolgreich erstellt.');
return true;
} catch (error) {
console.error('Unerwarteter Fehler:', error.message);
return false;
}
const { error } = await supabase.rpc('execute_sql', { query });
if (error) {
// Die Funktion existiert möglicherweise noch nicht, versuche direkte SQL-Ausführung
console.log('Versuche direkte SQL-Ausführung...');
const { error: directError } = await supabase.from('_exec_sql').insert({ sql: query });
if (directError) {
console.error('Fehler beim Erstellen der execute_sql-Funktion:', directError.message);
return false;
}
}
console.log('execute_sql-Funktion erfolgreich erstellt.');
return true;
} catch (error) {
console.error('Unerwarteter Fehler:', error.message);
return false;
}
}
// Hauptfunktion
async function setupSupabase() {
console.log('Starte Supabase-Setup...');
// Erstelle die execute_sql-Funktion
const execSqlCreated = await createExecuteSqlFunction();
if (!execSqlCreated) {
console.log('Konnte execute_sql-Funktion nicht erstellen. Versuche trotzdem fortzufahren...');
}
// Führe die SQL-Dateien aus
console.log('Führe Supabase-Funktionen-Setup aus...');
await executeSqlFile('setup_supabase_functions.sql');
console.log('Führe Modell-Updates aus...');
await executeSqlFile('update_models.sql');
console.log('Richte RLS-Richtlinien ein...');
await executeSqlFile('setup_rls_policies.sql');
console.log('Supabase-Setup abgeschlossen.');
console.log('Starte Supabase-Setup...');
// Erstelle die execute_sql-Funktion
const execSqlCreated = await createExecuteSqlFunction();
if (!execSqlCreated) {
console.log('Konnte execute_sql-Funktion nicht erstellen. Versuche trotzdem fortzufahren...');
}
// Führe die SQL-Dateien aus
console.log('Führe Supabase-Funktionen-Setup aus...');
await executeSqlFile('setup_supabase_functions.sql');
console.log('Führe Modell-Updates aus...');
await executeSqlFile('update_models.sql');
console.log('Richte RLS-Richtlinien ein...');
await executeSqlFile('setup_rls_policies.sql');
console.log('Supabase-Setup abgeschlossen.');
}
// Führe die Funktion aus
setupSupabase()
.catch(error => {
console.error('Unerwarteter Fehler:', error);
})
.finally(() => {
process.exit(0);
});
.catch((error) => {
console.error('Unerwarteter Fehler:', error);
})
.finally(() => {
process.exit(0);
});

View file

@ -9,75 +9,75 @@ const path = require('path');
const { spawnSync } = require('child_process');
const { createClient } = require('@supabase/supabase-js');
// Get environment variables
// Get environment variables
const SUPABASE_URL = process.env.SUPABASE_URL;
const SUPABASE_SERVICE_KEY = process.env.SUPABASE_SERVICE_KEY;
if (!SUPABASE_URL || !SUPABASE_SERVICE_KEY) {
console.error('Error: SUPABASE_URL and SUPABASE_SERVICE_KEY environment variables must be set');
process.exit(1);
console.error('Error: SUPABASE_URL and SUPABASE_SERVICE_KEY environment variables must be set');
process.exit(1);
}
// Create Supabase client
const supabase = createClient(SUPABASE_URL, SUPABASE_SERVICE_KEY, {
auth: {
autoRefreshToken: false,
persistSession: false
}
auth: {
autoRefreshToken: false,
persistSession: false,
},
});
async function executeSQL(filename) {
try {
const filePath = path.join(__dirname, filename);
const sql = fs.readFileSync(filePath, 'utf8');
// Split the SQL file by semicolons to get individual statements
const statements = sql
.split(';')
.map(statement => statement.trim())
.filter(statement => statement.length > 0);
try {
const filePath = path.join(__dirname, filename);
const sql = fs.readFileSync(filePath, 'utf8');
console.log(`Executing ${statements.length} statements from ${filename}...`);
for (const statement of statements) {
const { error } = await supabase.rpc('exec_sql', { sql: statement });
if (error) {
console.error(`Error executing statement:`, error);
console.error(`Statement was: ${statement.substring(0, 100)}...`);
}
}
console.log(`✅ Successfully executed ${filename}`);
return true;
} catch (error) {
console.error(`❌ Error executing ${filename}:`, error);
return false;
}
// Split the SQL file by semicolons to get individual statements
const statements = sql
.split(';')
.map((statement) => statement.trim())
.filter((statement) => statement.length > 0);
console.log(`Executing ${statements.length} statements from ${filename}...`);
for (const statement of statements) {
const { error } = await supabase.rpc('exec_sql', { sql: statement });
if (error) {
console.error(`Error executing statement:`, error);
console.error(`Statement was: ${statement.substring(0, 100)}...`);
}
}
console.log(`✅ Successfully executed ${filename}`);
return true;
} catch (error) {
console.error(`❌ Error executing ${filename}:`, error);
return false;
}
}
async function main() {
console.log('Setting up spaces feature...');
// Run the SQL scripts in the correct order
const scripts = [
'create_spaces_tables.sql',
'create_spaces_triggers.sql',
'create_spaces_rls.sql'
];
for (const script of scripts) {
const success = await executeSQL(script);
if (!success) {
console.error(`Failed to execute ${script}. Aborting.`);
process.exit(1);
}
}
console.log('✅ Spaces feature setup complete!');
console.log('Setting up spaces feature...');
// Run the SQL scripts in the correct order
const scripts = [
'create_spaces_tables.sql',
'create_spaces_triggers.sql',
'create_spaces_rls.sql',
];
for (const script of scripts) {
const success = await executeSQL(script);
if (!success) {
console.error(`Failed to execute ${script}. Aborting.`);
process.exit(1);
}
}
console.log('✅ Spaces feature setup complete!');
}
main().catch(err => {
console.error('Unhandled error:', err);
process.exit(1);
});
main().catch((err) => {
console.error('Unhandled error:', err);
process.exit(1);
});

View file

@ -17,148 +17,150 @@ const supabaseUrl = process.env.EXPO_PUBLIC_SUPABASE_URL;
const supabaseKey = process.env.EXPO_PUBLIC_SUPABASE_ANON_KEY;
if (!supabaseUrl || !supabaseKey) {
console.error('Fehler: EXPO_PUBLIC_SUPABASE_URL und EXPO_PUBLIC_SUPABASE_ANON_KEY müssen in der .env-Datei definiert sein.');
process.exit(1);
console.error(
'Fehler: EXPO_PUBLIC_SUPABASE_URL und EXPO_PUBLIC_SUPABASE_ANON_KEY müssen in der .env-Datei definiert sein.'
);
process.exit(1);
}
const supabase = createClient(supabaseUrl, supabaseKey);
// Readline-Interface für interaktive Eingabe
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
input: process.stdin,
output: process.stdout,
});
// Funktion zum Ausführen einer SQL-Abfrage
async function executeQuery(query) {
try {
console.log(`Führe Abfrage aus: ${query}`);
const { data, error } = await supabase.rpc('execute_sql', { query });
if (error) {
console.error('Fehler bei der Ausführung der Abfrage:', error.message);
return;
}
console.log('Ergebnis:');
console.table(data);
} catch (error) {
console.error('Unerwarteter Fehler:', error.message);
}
try {
console.log(`Führe Abfrage aus: ${query}`);
const { data, error } = await supabase.rpc('execute_sql', { query });
if (error) {
console.error('Fehler bei der Ausführung der Abfrage:', error.message);
return;
}
console.log('Ergebnis:');
console.table(data);
} catch (error) {
console.error('Unerwarteter Fehler:', error.message);
}
}
// Funktion zum Ausführen einer SQL-Datei
async function executeFile(filePath) {
try {
const fullPath = join(process.cwd(), filePath);
console.log(`Führe SQL-Datei aus: ${fullPath}`);
if (!fs.existsSync(fullPath)) {
console.error(`Fehler: Datei ${fullPath} existiert nicht.`);
return;
}
const query = fs.readFileSync(fullPath, 'utf8');
await executeQuery(query);
} catch (error) {
console.error('Fehler beim Lesen oder Ausführen der Datei:', error.message);
}
try {
const fullPath = join(process.cwd(), filePath);
console.log(`Führe SQL-Datei aus: ${fullPath}`);
if (!fs.existsSync(fullPath)) {
console.error(`Fehler: Datei ${fullPath} existiert nicht.`);
return;
}
const query = fs.readFileSync(fullPath, 'utf8');
await executeQuery(query);
} catch (error) {
console.error('Fehler beim Lesen oder Ausführen der Datei:', error.message);
}
}
// Funktion zum Anzeigen der Tabellenliste
async function listTables() {
try {
const query = `
try {
const query = `
SELECT table_name
FROM information_schema.tables
WHERE table_schema = 'public'
ORDER BY table_name;
`;
const { data, error } = await supabase.rpc('execute_sql', { query });
if (error) {
console.error('Fehler beim Abrufen der Tabellenliste:', error.message);
return;
}
console.log('Verfügbare Tabellen:');
data.forEach((row, index) => {
console.log(`${index + 1}. ${row.table_name}`);
});
} catch (error) {
console.error('Unerwarteter Fehler:', error.message);
}
const { data, error } = await supabase.rpc('execute_sql', { query });
if (error) {
console.error('Fehler beim Abrufen der Tabellenliste:', error.message);
return;
}
console.log('Verfügbare Tabellen:');
data.forEach((row, index) => {
console.log(`${index + 1}. ${row.table_name}`);
});
} catch (error) {
console.error('Unerwarteter Fehler:', error.message);
}
}
// Funktion zum Anzeigen der Tabellenstruktur
async function describeTable(tableName) {
try {
const query = `
try {
const query = `
SELECT column_name, data_type, is_nullable
FROM information_schema.columns
WHERE table_schema = 'public' AND table_name = '${tableName}'
ORDER BY ordinal_position;
`;
const { data, error } = await supabase.rpc('execute_sql', { query });
if (error) {
console.error(`Fehler beim Beschreiben der Tabelle ${tableName}:`, error.message);
return;
}
console.log(`Struktur der Tabelle ${tableName}:`);
console.table(data);
} catch (error) {
console.error('Unerwarteter Fehler:', error.message);
}
const { data, error } = await supabase.rpc('execute_sql', { query });
if (error) {
console.error(`Fehler beim Beschreiben der Tabelle ${tableName}:`, error.message);
return;
}
console.log(`Struktur der Tabelle ${tableName}:`);
console.table(data);
} catch (error) {
console.error('Unerwarteter Fehler:', error.message);
}
}
// Hauptmenü
function showMenu() {
console.log('\n--- Supabase CLI ---');
console.log('1. SQL-Abfrage ausführen');
console.log('2. SQL-Datei ausführen');
console.log('3. Tabellenliste anzeigen');
console.log('4. Tabellenstruktur anzeigen');
console.log('5. Beenden');
rl.question('\nWähle eine Option (1-5): ', async (answer) => {
switch (answer.trim()) {
case '1':
rl.question('Gib deine SQL-Abfrage ein: ', async (query) => {
await executeQuery(query);
showMenu();
});
break;
case '2':
rl.question('Gib den Pfad zur SQL-Datei ein: ', async (filePath) => {
await executeFile(filePath);
showMenu();
});
break;
case '3':
await listTables();
showMenu();
break;
case '4':
rl.question('Gib den Tabellennamen ein: ', async (tableName) => {
await describeTable(tableName);
showMenu();
});
break;
case '5':
console.log('Auf Wiedersehen!');
rl.close();
process.exit(0);
break;
default:
console.log('Ungültige Option. Bitte wähle 1-5.');
showMenu();
break;
}
});
console.log('\n--- Supabase CLI ---');
console.log('1. SQL-Abfrage ausführen');
console.log('2. SQL-Datei ausführen');
console.log('3. Tabellenliste anzeigen');
console.log('4. Tabellenstruktur anzeigen');
console.log('5. Beenden');
rl.question('\nWähle eine Option (1-5): ', async (answer) => {
switch (answer.trim()) {
case '1':
rl.question('Gib deine SQL-Abfrage ein: ', async (query) => {
await executeQuery(query);
showMenu();
});
break;
case '2':
rl.question('Gib den Pfad zur SQL-Datei ein: ', async (filePath) => {
await executeFile(filePath);
showMenu();
});
break;
case '3':
await listTables();
showMenu();
break;
case '4':
rl.question('Gib den Tabellennamen ein: ', async (tableName) => {
await describeTable(tableName);
showMenu();
});
break;
case '5':
console.log('Auf Wiedersehen!');
rl.close();
process.exit(0);
break;
default:
console.log('Ungültige Option. Bitte wähle 1-5.');
showMenu();
break;
}
});
}
// Starte das Programm

View file

@ -15,98 +15,95 @@ const supabaseUrl = process.env.EXPO_PUBLIC_SUPABASE_URL;
const supabaseKey = process.env.EXPO_PUBLIC_SUPABASE_ANON_KEY;
if (!supabaseUrl || !supabaseKey) {
console.error('Fehler: EXPO_PUBLIC_SUPABASE_URL und EXPO_PUBLIC_SUPABASE_ANON_KEY müssen in der .env-Datei definiert sein.');
process.exit(1);
console.error(
'Fehler: EXPO_PUBLIC_SUPABASE_URL und EXPO_PUBLIC_SUPABASE_ANON_KEY müssen in der .env-Datei definiert sein.'
);
process.exit(1);
}
const supabase = createClient(supabaseUrl, supabaseKey);
// Modelle, die wir in die Datenbank einfügen wollen
const models = [
{
id: '550e8400-e29b-41d4-a716-446655440000',
name: 'GPT-O3-Mini',
description: 'Azure OpenAI O3-Mini: Effizientes Modell für schnelle Antworten.',
parameters: {
temperature: 0.7,
max_tokens: 800,
provider: 'azure',
deployment: 'gpt-o3-mini-se',
endpoint: 'https://memoroseopenai.openai.azure.com',
api_version: '2024-12-01-preview'
}
},
{
id: '550e8400-e29b-41d4-a716-446655440004',
name: 'GPT-4o-Mini',
description: 'Azure OpenAI GPT-4o-Mini: Kompaktes, leistungsstarkes KI-Modell.',
parameters: {
temperature: 0.7,
max_tokens: 1000,
provider: 'azure',
deployment: 'gpt-4o-mini-se',
endpoint: 'https://memoroseopenai.openai.azure.com',
api_version: '2024-12-01-preview'
}
},
{
id: '550e8400-e29b-41d4-a716-446655440005',
name: 'GPT-4o',
description: 'Azure OpenAI GPT-4o: Das fortschrittlichste multimodale KI-Modell.',
parameters: {
temperature: 0.7,
max_tokens: 1200,
provider: 'azure',
deployment: 'gpt-4o-se',
endpoint: 'https://memoroseopenai.openai.azure.com',
api_version: '2024-12-01-preview'
}
}
{
id: '550e8400-e29b-41d4-a716-446655440000',
name: 'GPT-O3-Mini',
description: 'Azure OpenAI O3-Mini: Effizientes Modell für schnelle Antworten.',
parameters: {
temperature: 0.7,
max_tokens: 800,
provider: 'azure',
deployment: 'gpt-o3-mini-se',
endpoint: 'https://memoroseopenai.openai.azure.com',
api_version: '2024-12-01-preview',
},
},
{
id: '550e8400-e29b-41d4-a716-446655440004',
name: 'GPT-4o-Mini',
description: 'Azure OpenAI GPT-4o-Mini: Kompaktes, leistungsstarkes KI-Modell.',
parameters: {
temperature: 0.7,
max_tokens: 1000,
provider: 'azure',
deployment: 'gpt-4o-mini-se',
endpoint: 'https://memoroseopenai.openai.azure.com',
api_version: '2024-12-01-preview',
},
},
{
id: '550e8400-e29b-41d4-a716-446655440005',
name: 'GPT-4o',
description: 'Azure OpenAI GPT-4o: Das fortschrittlichste multimodale KI-Modell.',
parameters: {
temperature: 0.7,
max_tokens: 1200,
provider: 'azure',
deployment: 'gpt-4o-se',
endpoint: 'https://memoroseopenai.openai.azure.com',
api_version: '2024-12-01-preview',
},
},
];
async function updateModels() {
console.log('Aktualisiere Modelle in der Supabase-Datenbank...');
// Prüfe, ob die Tabelle existiert
const { error: tableError } = await supabase
.from('models')
.select('id')
.limit(1);
if (tableError) {
console.error('Fehler beim Zugriff auf die models-Tabelle:', tableError.message);
console.log('Erstelle models-Tabelle...');
// Erstelle die Tabelle, falls sie nicht existiert
const { error: createError } = await supabase.rpc('create_models_table');
if (createError) {
console.error('Fehler beim Erstellen der models-Tabelle:', createError.message);
return;
}
}
// Füge die Modelle ein oder aktualisiere sie
for (const model of models) {
const { error } = await supabase
.from('models')
.upsert(model, { onConflict: 'id' });
if (error) {
console.error(`Fehler beim Aktualisieren des Modells ${model.name}:`, error.message);
} else {
console.log(`Modell ${model.name} erfolgreich aktualisiert.`);
}
}
console.log('Modellaktualisierung abgeschlossen.');
console.log('Aktualisiere Modelle in der Supabase-Datenbank...');
// Prüfe, ob die Tabelle existiert
const { error: tableError } = await supabase.from('models').select('id').limit(1);
if (tableError) {
console.error('Fehler beim Zugriff auf die models-Tabelle:', tableError.message);
console.log('Erstelle models-Tabelle...');
// Erstelle die Tabelle, falls sie nicht existiert
const { error: createError } = await supabase.rpc('create_models_table');
if (createError) {
console.error('Fehler beim Erstellen der models-Tabelle:', createError.message);
return;
}
}
// Füge die Modelle ein oder aktualisiere sie
for (const model of models) {
const { error } = await supabase.from('models').upsert(model, { onConflict: 'id' });
if (error) {
console.error(`Fehler beim Aktualisieren des Modells ${model.name}:`, error.message);
} else {
console.log(`Modell ${model.name} erfolgreich aktualisiert.`);
}
}
console.log('Modellaktualisierung abgeschlossen.');
}
// Führe die Funktion aus
updateModels()
.catch(error => {
console.error('Unerwarteter Fehler:', error);
})
.finally(() => {
process.exit(0);
});
.catch((error) => {
console.error('Unerwarteter Fehler:', error);
})
.finally(() => {
process.exit(0);
});