75 lines
1.9 KiB
JavaScript
75 lines
1.9 KiB
JavaScript
const jwt = require('jsonwebtoken');
|
|
const { Pool } = require('pg');
|
|
const pool = new Pool({
|
|
connectionString: process.env.DATABASE_URL,
|
|
});
|
|
|
|
async function getUserIdFromToken(token) {
|
|
try {
|
|
const decoded = jwt.verify(token, process.env.JWT_SECRET);
|
|
return decoded.id;
|
|
} catch (err) {
|
|
throw new Error('Invalid token');
|
|
}
|
|
}
|
|
|
|
async function createMatch(req, res) {
|
|
const token = req.headers['authorization']?.split(' ')[1];
|
|
|
|
if (!token) {
|
|
return res.status(403).json({ error: 'Token is required.' });
|
|
}
|
|
|
|
try {
|
|
const player1_uid = await getUserIdFromToken(token);
|
|
const client = await pool.connect();
|
|
try {
|
|
const result = await client.query(
|
|
'INSERT INTO matches (player1_uid) VALUES ($1) RETURNING match_id;',
|
|
[player1_uid]
|
|
);
|
|
|
|
const match_id = result.rows[0].match_id;
|
|
return res.status(200).json({ match_id });
|
|
} finally {
|
|
client.release();
|
|
}
|
|
} catch (error) {
|
|
console.error('Error creating match:', error);
|
|
return res.status(400).json({ error: error.message });
|
|
}
|
|
}
|
|
|
|
async function createMatch2v2(req, res) {
|
|
const token = req.headers['authorization']?.split(' ')[1];
|
|
|
|
if (!token) {
|
|
return res.status(403).json({ error: 'Token is required.' });
|
|
}
|
|
|
|
try {
|
|
const player1_uid = await getUserIdFromToken(token);
|
|
|
|
const client = await pool.connect();
|
|
try {
|
|
const result = await client.query(
|
|
'INSERT INTO matches_2v2 (player1_team1_uid) VALUES ($1) RETURNING match_id;',
|
|
[player1_uid]
|
|
);
|
|
|
|
const match_id = result.rows[0].match_id;
|
|
return res.status(200).json({ match_id });
|
|
} finally {
|
|
client.release();
|
|
}
|
|
} catch (error) {
|
|
console.error('Error creating 2v2 match:', error);
|
|
return res.status(400).json({ error: error.message });
|
|
}
|
|
}
|
|
|
|
module.exports = {
|
|
createMatch,
|
|
createMatch2v2,
|
|
};
|