feat: Implement pagination logic and use with getExecutions query

This commit is contained in:
Faruk AYDIN
2022-03-10 23:20:54 +03:00
committed by Ömer Faruk Aydın
parent 906a8d0644
commit 44623cc384
3 changed files with 55 additions and 5 deletions

View File

@@ -0,0 +1,30 @@
import { QueryBuilder, Model } from 'objection';
const paginate = async (
query: QueryBuilder<Model, Model[]>,
limit: number,
offset: number
) => {
if (limit < 1 || limit > 100) {
throw new Error('Limit must be between 1 and 100');
}
const [records, count] = await Promise.all([
query.limit(limit).offset(offset),
query.resultSize(),
]);
return {
pageInfo: {
currentPage: Math.ceil(offset / limit + 1),
totalPages: Math.ceil(count / limit),
},
edges: records.map((record: Model) => {
return {
node: record,
};
}),
};
};
export default paginate;