You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

38 lines
1.1 KiB
TypeScript

import express, { Router, Request, Response } from "express";
import { client } from "../db";
import { DatabaseError } from "pg";
import { UserAuth } from "../middlewares/auth";
import { AuthedRequest } from "../interfaces/auth";
const router: Router = express.Router();
interface UserObject {
first_name: string
last_name: string
email: string
isAdmin: boolean
isTrainer: boolean
}
router.get("/user", UserAuth, async (req: AuthedRequest, res: Response) => {
try {
const databaseResult = await client.query(`
SELECT first_name, last_name, email, is_admin as isAdmin, trainers.user_id IS NOT NULL as isTrainer
FROM users
LEFT JOIN trainers ON trainers.user_id = users.id
WHERE users.id = $1;
`, [
req.user?.userId
]);
const user: UserObject = databaseResult.rows[0];
return res.status(200).send(user);
} catch (error: DatabaseError | Error | any) {
console.error(error);
return res.sendStatus(500);
}
})
export default router;