123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- let express = require('express')
- let router = express.Router()
- let { Post, Thread, Sequelize } = require('../models')
- const Errors = require('../lib/errors')
- router.get('/', async (req, res) => {
- try {
- let q = req.query.q
- let offset = +req.query.offset || 0
- let count = await Post.count({
- where: {
- content: { $like: '%' + q + '%' }
- }
- })
- let posts = await Post.findAll({
- where: {
- content: { $like: '%' + q + '%' }
- },
- order: [ ['id', 'DESC'] ],
- include: Post.includeOptions(),
- limit: 10,
- offset
- })
- let retPosts = posts.map(p => {
- let ret = p.toJSON()
- ret.content = ret.content.replace(q, '<b>' + q + '</b>')
- return ret
- })
- let remainingResults = count - (offset + 10)
- let next;
- if(remainingResults < 0) {
- next = 0
- } else if(remainingResults < 10) {
- next = remainingResults
- } else {
- next = 10
- }
- res.json({
- posts: retPosts,
- offset: offset + 10,
- next
- })
- } catch (e) {
- console.log(e)
- res.status(500)
- res.json({
- errors: [Errors.unknown]
- })
- }
- })
- module.exports = router
|