Files
funcode2.0/app/api/events/route.js
devbeni 2c5461b0e0 Refactor socket handling and integrate database for event management
- Removed old socket handling code and replaced it with a new implementation in `app/api/socketio/route.js`.
- Added MySQL database integration for managing active sessions and queue entries.
- Implemented event retrieval and ticket purchasing APIs in `app/api/events/route.js` and `app/api/purchase/route.js`.
- Created database schema for events, tickets, active sessions, and orders in `database/schema.sql`.
- Updated front-end to handle event data fetching and ticket purchasing with improved UI components.
- Removed unused SVG files from the public directory.
2025-09-19 19:02:15 +02:00

60 lines
1.6 KiB
JavaScript

import mysql from 'mysql2/promise'
async function getDbConnection() {
if (!process.env.MYSQL_HOST) return null
return await mysql.createConnection({
host: process.env.MYSQL_HOST,
user: process.env.MYSQL_USER,
password: process.env.MYSQL_PASSWORD,
database: process.env.MYSQL_DATABASE,
})
}
export async function GET(request) {
try {
const { searchParams } = new URL(request.url)
const eventId = searchParams.get('id')
const connection = await getDbConnection()
if (!connection) {
return Response.json({ error: 'Database not configured' }, { status: 500 })
}
if (eventId) {
// Get specific event with tickets
const [eventRows] = await connection.execute(
'SELECT * FROM events WHERE id = ?',
[eventId]
)
const [ticketRows] = await connection.execute(
'SELECT * FROM tickets WHERE event_id = ? ORDER BY price ASC',
[eventId]
)
if (eventRows.length === 0) {
return Response.json({ error: 'Event not found' }, { status: 404 })
}
await connection.end()
return Response.json({
event: eventRows[0],
tickets: ticketRows
})
} else {
// Get all events
const [eventRows] = await connection.execute(
'SELECT e.*, COUNT(t.id) as ticket_types FROM events e LEFT JOIN tickets t ON e.id = t.event_id GROUP BY e.id ORDER BY e.created_at DESC'
)
await connection.end()
return Response.json({ events: eventRows })
}
} catch (error) {
console.error('Events API error:', error)
return Response.json({ error: 'Internal server error' }, { status: 500 })
}
}