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 { AdminAuth } from "../middlewares/auth";
import { trainerExists } from "../middlewares/trainer";
import { idSchema } from "../schemas";
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) => {
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(`
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 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;

Loading…
Cancel
Save