Some checks failed
Deploy to Firebase Hosting on merge / build_and_deploy (push) Has been cancelled
109 lines
3.4 KiB
JavaScript
Executable File
109 lines
3.4 KiB
JavaScript
Executable File
const authRoutes = require('./authRoutes');
|
|
const app = require('./app');
|
|
const db = require('./db');
|
|
|
|
// Routes
|
|
app.use(authRoutes);
|
|
|
|
// Create new session
|
|
app.post('/api/session', async (req, res) => {
|
|
const sessionId = req.body.sessionId;
|
|
const query = 'INSERT INTO sessions (id) VALUES (?)';
|
|
await db.query(query, [sessionId], (err, result) => {
|
|
if (err) return res.status(500).json({ error: err });
|
|
res.json({ sessionId });
|
|
});
|
|
});
|
|
|
|
// Add user to session
|
|
app.post('/api/session/:sessionId/user', async (req, res) => {
|
|
const { sessionId } = req.params;
|
|
const { userId, provider } = req.body;
|
|
|
|
// Insert the user into the `users` table if they don't already exist
|
|
const userQuery = `
|
|
INSERT INTO users (id, provider)
|
|
VALUES (?, ?)
|
|
ON DUPLICATE KEY UPDATE id = id`; // If the user already exists, do nothing
|
|
|
|
// Insert the user into the `session_users` table for this session
|
|
const sessionUserQuery = `
|
|
INSERT INTO session_users (session_id, user_id, provider)
|
|
VALUES (?, ?, ?)
|
|
ON DUPLICATE KEY UPDATE session_id = session_id`; // If the user is already in the session, do nothing
|
|
|
|
// Insert the initial vote (-1) for the user in this session
|
|
const voteQuery = `
|
|
INSERT INTO votes (session_id, user_id, vote)
|
|
VALUES (?, ?, -1)
|
|
ON DUPLICATE KEY UPDATE vote = -1`; // If a vote already exists, reset it to -1
|
|
|
|
try {
|
|
// Insert the user into the `users` table
|
|
await db.query(userQuery, [userId, provider]);
|
|
|
|
// Add the user to the `session_users` table
|
|
await db.query(sessionUserQuery, [sessionId, userId, provider]);
|
|
|
|
// Set the initial vote for the user in the session
|
|
await db.query(voteQuery, [sessionId, userId]);
|
|
|
|
res.json({ userId });
|
|
} catch (err) {
|
|
console.error('Error adding user to session:', err);
|
|
res.status(500).json({ error: 'Server error' });
|
|
}
|
|
});
|
|
|
|
// Get users in a session
|
|
app.get('/api/session/:sessionId/users', async (req, res) => {
|
|
const { sessionId } = req.params;
|
|
const query = `
|
|
SELECT session_users.user_id, session_users.provider
|
|
FROM session_users
|
|
WHERE session_id = ?
|
|
`;
|
|
|
|
try {
|
|
const [results] = await db.query(query, [sessionId]);
|
|
console.log('Query results:', results);
|
|
res.json(results);
|
|
} catch (err) {
|
|
console.error('Error fetching session users:', err);
|
|
res.status(500).json({ error: 'Server error' });
|
|
}
|
|
});
|
|
|
|
app.delete('/api/session/:sessionId/votes/:userId', async (req, res) => {
|
|
const { sessionId, userId } = req.params;
|
|
const query = 'DELETE FROM votes WHERE session_id = ? AND user_id = ?';
|
|
|
|
try {
|
|
const [result] = await db.query(query, [sessionId, userId]);
|
|
res.json({ success: true, message: 'Vote removed successfully' });
|
|
} catch (error) {
|
|
console.error('Error removing vote:', error);
|
|
res.status(500).json({ error: 'Server error' });
|
|
}
|
|
});
|
|
|
|
app.delete('/api/session/:sessionId/users/:userId', async (req, res) => {
|
|
const { sessionId, userId } = req.params;
|
|
const query =
|
|
'DELETE FROM session_users WHERE session_id = ? AND user_id = ?';
|
|
|
|
try {
|
|
const [result] = await db.query(query, [sessionId, userId]);
|
|
res.json({ success: true, message: 'User removed successfully' });
|
|
} catch (error) {
|
|
console.error('Error removing user:', error);
|
|
res.status(500).json({ error: 'Server error' });
|
|
}
|
|
});
|
|
|
|
// Start the server
|
|
const PORT = process.env.PORT || 5000;
|
|
app.listen(PORT, () => {
|
|
console.log(`Server is running on port ${PORT}`);
|
|
});
|