// routes/public.js const express = require('express'); const { Pool } = require('pg'); const router = express.Router(); // PostgreSQL Pool mit .env Konfiguration const pool = new Pool({ host: process.env.DB_HOST, port: process.env.DB_PORT, database: process.env.DB_NAME, user: process.env.DB_USER, password: process.env.DB_PASSWORD, ssl: process.env.DB_SSL === 'true' ? { rejectUnauthorized: false } : false }); // Fehlerbehandlung für Pool pool.on('error', (err) => { console.error('PostgreSQL Pool Fehler:', err); }); // Public endpoint für Standorte (keine Authentifizierung erforderlich) router.get('/locations', async (req, res) => { try { const result = await pool.query('SELECT * FROM "GetLocations"'); res.json({ success: true, data: result.rows }); } catch (error) { console.error('Fehler beim Abrufen der getlocations:', error); res.status(500).json({ success: false, message: 'Fehler beim Abrufen der Standorte' }); } }); // Public route to get times for location with parameter router.get('/times', async (req, res) => { const { location } = req.query; try { // First, let's check if the view exists and has data const viewCheck = await pool.query('SELECT COUNT(*) as count FROM "GetTimesWithPlayerAndLocation"'); // Check what location names are available const availableLocations = await pool.query('SELECT DISTINCT location_name FROM "GetTimesWithPlayerAndLocation"'); // Now search for the specific location const result = await pool.query('SELECT * FROM "GetTimesWithPlayerAndLocation" WHERE location_name = $1', [location]); res.json({ success: true, data: result.rows, debug: { searchedFor: location, totalRecords: viewCheck.rows[0].count, availableLocations: availableLocations.rows.map(r => r.location_name), foundRecords: result.rows.length } }); } catch (error) { console.error('❌ Fehler beim Abrufen der Zeiten:', error); res.status(500).json({ success: false, message: 'Fehler beim Abrufen der Zeiten', error: error.message }); } }); module.exports = router;