started backend conversion to typescript
This commit is contained in:
81
api/src/routes/members.js
Normal file
81
api/src/routes/members.js
Normal file
@@ -0,0 +1,81 @@
|
||||
const express = require('express');
|
||||
const router = express.Router();
|
||||
|
||||
// DB pool (same as used in api/index.js)
|
||||
const pool = require('../db');
|
||||
|
||||
//create a new user?
|
||||
router.post('/', async (req, res) => {
|
||||
|
||||
});
|
||||
|
||||
//get all users
|
||||
router.get('/', async (req, res) => {
|
||||
try {
|
||||
const result = await pool.query(
|
||||
`SELECT
|
||||
v.*,
|
||||
CASE
|
||||
WHEN EXISTS (
|
||||
SELECT 1
|
||||
FROM leave_of_absences l
|
||||
WHERE l.member_id = v.member_id
|
||||
AND l.deleted = 0
|
||||
AND UTC_TIMESTAMP() BETWEEN l.start_date AND l.end_date
|
||||
) THEN 1 ELSE 0
|
||||
END AS on_loa
|
||||
FROM view_member_rank_status_all v;`);
|
||||
return res.status(200).json(result);
|
||||
} catch (err) {
|
||||
console.error('Error fetching users:', err);
|
||||
return res.status(500).json({ error: 'Failed to fetch users' });
|
||||
}
|
||||
});
|
||||
|
||||
router.get('/me', async (req, res) => {
|
||||
console.log(req.user);
|
||||
if (req.user === undefined)
|
||||
return res.sendStatus(401)
|
||||
|
||||
try {
|
||||
const LOAData = await pool.query(
|
||||
`SELECT *
|
||||
FROM leave_of_absences
|
||||
WHERE member_id = ?
|
||||
AND deleted = 0
|
||||
AND UTC_TIMESTAMP() BETWEEN start_date AND end_date;`, req.user.id)
|
||||
const userWithLOA = {
|
||||
...req.user,
|
||||
loa: LOAData
|
||||
};
|
||||
res.json(userWithLOA);
|
||||
} catch (error) {
|
||||
console.error('Error fetching LOA data:', error);
|
||||
return res.status(500).json({ error: 'Failed to fetch user data' });
|
||||
}
|
||||
})
|
||||
|
||||
router.get('/:id', async (req, res) => {
|
||||
try {
|
||||
const userId = req.params.id;
|
||||
const result = await pool.query('SELECT * FROM view_member_rank_status_all WHERE id = $1;', [userId]);
|
||||
if (result.rows.length === 0) {
|
||||
return res.status(404).json({ error: 'User not found' });
|
||||
}
|
||||
return res.status(200).json(result.rows[0]);
|
||||
} catch (err) {
|
||||
console.error('Error fetching user:', err);
|
||||
return res.status(500).json({ error: 'Failed to fetch user' });
|
||||
}
|
||||
});
|
||||
|
||||
//update a user's display name (stub)
|
||||
router.put('/:id/displayname', async (req, res) => {
|
||||
// Stub: not implemented yet
|
||||
return res.status(501).json({ error: 'Update display name not implemented' });
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
module.exports = router;
|
||||
Reference in New Issue
Block a user