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
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; |