40 lines
1.3 KiB
JavaScript
40 lines
1.3 KiB
JavaScript
/* eslint-disable no-undef */
|
|
import express from 'express';
|
|
import { pool } from '../modules/database.js';
|
|
import { requestLimiter, respondWithStatus, respondWithStatusJSON } from '../modules/requestHandler.js';
|
|
|
|
const router = express.Router();
|
|
|
|
router.get('/', requestLimiter, async (req, res) => {
|
|
try {
|
|
const [rows] = await pool.execute('SELECT * FROM users');
|
|
if (!rows.length) return await respondWithStatus(res, 404, 'There are no users');
|
|
|
|
return await respondWithStatusJSON(res, 200, {
|
|
message: 'Successfully retrieved users',
|
|
users: rows,
|
|
});
|
|
}
|
|
catch (error) {
|
|
console.error(error);
|
|
return await respondWithStatus(res, 500, 'An error has occured');
|
|
}
|
|
});
|
|
|
|
router.get('/:username', requestLimiter, async (req, res) => {
|
|
try {
|
|
const [rows] = await pool.execute('SELECT u.*, (SELECT COUNT(*) + 1 FROM users AS uu WHERE uu.score > u.score) AS rank FROM users AS u WHERE username = ? LIMIT 1', [req.params.username]);
|
|
if (!rows.length) return await respondWithStatus(res, 404, 'There are no users');
|
|
|
|
return await respondWithStatusJSON(res, 200, {
|
|
message: 'Successfully retrieved user',
|
|
users: rows[0],
|
|
});
|
|
}
|
|
catch (error) {
|
|
console.error(error);
|
|
return await respondWithStatus(res, 500, 'An error has occured');
|
|
}
|
|
});
|
|
|
|
export default router; |