Im trying to implement Page-based pagination on this particular endpoint but the problem Im faced is that the response body is not printing out the page, page_size and total results.
The URL is http://localhost:3006/events/tickets?sort_by=name&page=1&page_size=2
How do I get to return a Json body like this ? Ideal Response Im trying to achieve
{
content: [], // respponse items
page: 1, // current page
results_per_page: 10, // results per page
total_pages: 10, // total number of pages
total_results: 100 // number of all results
}
const getTickets = (tickets) => {
return new Promise(async (resolve, reject) => {
try {
let query = `SELECT id, name, description, ticket_price, ticket_type
FROM tickets`;
let sort_by = tickets.sort_by;
if(sort_by ?? false) {
query += ` ORDER BY ${sort_by}`;
if (sort_by) {
query += (sort_by == 'desc' ? ` DESC` : ` ASC`);
}
}
let limit = tickets.page_size;
let replacements = { limit: limit };
if (limit) {
query += ` LIMIT :limit`;
replacements.limit = limit;
}
let offset = limit ? ((tickets.page - 1) * limit) : 0;
if(offset) {
query += ` OFFSET :offset `;
replacements.offset = offset;
};
const ticket = await db.sequelize.query(
query,
{
replacements: replacements,
type: QueryTypes.SELECT,
}
);
return resolve(ticket);
} catch (err) {
return reject(err)
}
})
}
[
{
"id": 1,
"name": "Tennis Finals",
"description": "Finals: Tennis Team 1 vs Tennis Team 2",
"ticket_price": 25,
"ticket_type": 1
},
{
"id": 5,
"name": "Testing Tickets",
"description": "Description....",
"ticket_price": 1000,
"ticket_type": 30
}
]