pagination.js 1012 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. async function getNextId(Model, where, items) {
  2. try {
  3. let maxId = await Model.max('id', { where })
  4. let lastItem = items.slice(-1)[0]
  5. if(!lastItem || maxId === lastItem.id) {
  6. return null
  7. } else {
  8. return lastItem.id
  9. }
  10. } catch (e) {
  11. console.log(e)
  12. return null
  13. }
  14. }
  15. async function getPreviousId(Model, where, items, limit) {
  16. try {
  17. let minId = await Model.min('id', { where })
  18. let firstItem = items[0]
  19. if(!firstItem || minId === firstItem.id) {
  20. return null
  21. } else {
  22. return firstItem.id
  23. }
  24. } catch (e) {
  25. console.log(e)
  26. return null
  27. }
  28. }
  29. function getPaginationProps(query) {
  30. let lastId = 0
  31. let previousId = null
  32. let limit = 10
  33. if(+query.lastId > 0) lastId = +query.lastId
  34. if(+query.limit > 0) limit = +query.limit
  35. if(query.previousId) {
  36. lastId = null
  37. if(+query.previousId > 0) {
  38. previousId = +query.previousId
  39. } else {
  40. previousId = 0
  41. }
  42. }
  43. return { lastId, limit, previousId }
  44. }
  45. module.exports = {
  46. getNextId,
  47. getPreviousId,
  48. getPaginationProps
  49. }