Files
hudozka/modules/hudozka-api/src/server/articles.ts
T
2020-02-25 02:37:05 +03:00

57 lines
1.3 KiB
TypeScript

import Article from '../core/Article'
import ImageArtifactType from '../core/ImageArtifactType'
import { sortBy } from '../utils/sort'
import { timestamp } from '../lib/date'
export const sortArticleByDate = sortBy(
x => timestamp(new Date(x.date))
)
export async function findArticlesNin(nin, skip, limit, sort) {
const query = {
_id: { $nin: nin }
}
return Article.find(query, {
sort,
skip,
limit,
})
}
export async function findArticles(page: number, pageSize: number) {
const limit = pageSize
const skip = (page - 1) * pageSize
// const pinnedArticles = page === 1
// ? await Article.findPinned()
// : []
const total = await Article.total()
const totalPages = Math.ceil(total / pageSize)
const id = i => i._id
// const pinnedIds = pinnedArticles.map(id)
// const articles = await findArticlesNin(pinnedIds, skip, limit, { date: -1 })
const articles = await Article.find({}, { skip, limit, sort: { date: -1 } })
const prevPage = page > 1
? page - 1
: null
const nextPage = page < totalPages
? page + 1
: null
const items = [
...articles
]
return {
items,
prevPage,
nextPage,
totalPages,
}
}