import { serve } from 'bun'; import index from './index.html'; import DB from './server/db'; const db = new DB(); const server = serve({ routes: { // Serve index.html for all unmatched routes. '/*': index, '/api/user/:mail': async req => { const mail = req.params.mail; console.log('Received request for user:', mail); const user = await db.getUserByMail(mail); console.log('Fetching user with mail:', mail, 'Result:', user); return new Response(JSON.stringify(user), { headers: { 'Content-Type': 'application/json' } }); }, '/api/user': { async POST(req) { try { const { mail } = await req.json() as { mail: string }; console.log('Received request to create user with mail:', mail); const user = await db.createUser(mail); return new Response(JSON.stringify(user), { headers: { 'Content-Type': 'application/json' } }); } catch (err) { console.error('Error creating user:', err); return new Response(JSON.stringify({ error: 'Failed to create user' }), { status: 500 }); } }, }, '/api/group/:code': async req => { const code = req.params.code; console.log('Received request for group:', code); const group = await db.getGroupByCode(code); console.log('Fetching group with ID:', code, 'Result:', group); return new Response(JSON.stringify(group), { headers: { 'Content-Type': 'application/json' } }); }, '/api/group': { async POST(req) { try { const { name, mail } = await req.json() as { name: string; mail: string }; console.log('Received request to create group with name:', name, 'and mail:', mail); const response = await db.createGroup({ name, mail }); return new Response(JSON.stringify(response), { headers: { 'Content-Type': 'application/json' } }); } catch (err) { console.error('Error creating group:', err); return new Response(JSON.stringify({ error: 'Failed to create group' }), { status: 500 }); } } }, '/api/group_members/:groupId': async req => { const groupId = parseInt(req.params.groupId, 10); console.log('Received request for group members of group ID:', groupId); const members = await db.getGroupMembers(groupId); console.log('Fetching members for group ID:', groupId, 'Result:', members); return new Response(JSON.stringify(members), { headers: { 'Content-Type': 'application/json' } }); }, '/api/group_members': { async POST(req) { try { const { groupId, userId } = await req.json() as { groupId: number; userId: number }; console.log('Received request to add user ID ', userId, 'to group ID:', groupId); const response = await db.addUserToGroup(groupId, userId); return new Response(JSON.stringify(response), { headers: { 'Content-Type': 'application/json' } }); } catch (err) { console.error('Error adding user to group:', err); return new Response(JSON.stringify({ error: 'Failed to add user to group' }), { status: 500 }); } } } }, development: process.env.NODE_ENV !== 'production' && { // Enable browser hot reloading in development hmr: true, // Echo console logs from the browser to the server console: true, }, }); console.log(`🚀 Server running at ${server.url}`);