Added center filter to trainer endpoint
continuous-integration/drone/push Build is passing Details

main
Filip Borum Poulsen 3 years ago
parent f41680fc42
commit f6c5e0f0c4

@ -6,16 +6,38 @@ import { DatabaseError } from "pg";
import Trainer from "../interfaces/trainer"; import Trainer from "../interfaces/trainer";
import { AdminAuth } from "../middlewares/auth"; import { AdminAuth } from "../middlewares/auth";
import { trainerExists } from "../middlewares/trainer"; import { trainerExists } from "../middlewares/trainer";
import { idSchema } from "../schemas";
const router: Router = express.Router(); const router: Router = express.Router();
const trainerFiltersSchema = Joi.object({
center: Joi.array().single().items(
idSchema.required()
)
});
interface TrainerFilters {
center?: number[]
}
router.get("/trainer", async (req: Request, res: Response) => { router.get("/trainer", async (req: Request, res: Response) => {
try { try {
const validation = trainerFiltersSchema.validate(req.query, { abortEarly: false, stripUnknown: true });
if (validation.error !== undefined) {
return res.status(400).send(validation.error.details);
}
const trainerFilters: TrainerFilters = validation.value;
const databaseResult = await client.query(` const databaseResult = await client.query(`
SELECT trainers.id, first_name, last_name, center_id, centers.name as center_name FROM trainers SELECT trainers.id, first_name, last_name, center_id, centers.name as center_name FROM trainers
JOIN users ON trainers.user_id = users.id JOIN users ON trainers.user_id = users.id
JOIN centers on trainers.center_id = centers.id; JOIN centers on trainers.center_id = centers.id
`); WHERE trainers.id = ANY($1) OR $2;
`,[
trainerFilters.center !== undefined ? trainerFilters.center : [],
trainerFilters.center === undefined
]);
const trainers: Trainer[] = databaseResult.rows; const trainers: Trainer[] = databaseResult.rows;

Loading…
Cancel
Save