123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- async function getNextId(Model, where, items) {
- try {
- let maxId = await Model.max('id', { where })
- let lastItem = items.slice(-1)[0]
- if(!lastItem || maxId === lastItem.id) {
- return null
- } else {
- return lastItem.id
- }
- } catch (e) {
- console.log(e)
- return null
- }
- }
- async function getNextIdDesc(Model, where, items) {
- try {
- let minId = await Model.min('id', { where })
- let lastItem = items.slice(-1)[0]
- if(!lastItem || minId === lastItem.id) {
- return null
- } else {
- return lastItem.id
- }
- } catch (e) {
- console.log(e)
- return null
- }
- }
- async function getNextCount (Model, items, limit, where, desc) {
- let lastItem
- if(Array.isArray(items)) {
- lastItem = items.slice(-1)[0]
- } else {
- lastItem = items
- }
- if(desc) {
- where.id = { $lt: lastItem.id }
- } else {
- where.id = { $gt: lastItem.id }
- }
- let remaining = await Model.count({ where })
- if(remaining - limit < 0) {
- return remaining
- } else {
- return limit
- }
- }
- function getPaginationProps(query, desc) {
- let from = 0
- let limit = 10
- if(desc) {
- from = null
- }
- if(+query.from > 0) from = +query.from
- if(+query.limit > 0) limit = +query.limit
- if(+query.postNumber > 0) {
- let lowerFrom = +query.postNumber - Math.floor(limit / 2) + 1
- if(lowerFrom < 0) {
- from = 0
- } else {
- from = lowerFrom
- }
- }
- return { from, limit }
- }
- module.exports = {
- getNextId,
- getNextIdDesc,
- getNextCount,
- getPaginationProps
- }
|