const db = require("./db"); //
const dayjs = require("dayjs");
// 文章模块
const router = require("express").Router();
// 用户网站模块

// 1.查询文章列表(分页|搜索)
router.get("/web/list", async function (req, res) {
    const page = parseInt(req.query["page"] || 1); // 获取页码
    const size = parseInt(req.query["size"] || 5); // 每天条数
    // 默认每页5条
    const start = (page - 1) * size;
    const search = "%" + (req.query["search"] || "") + "%"; // 搜索关键字
    try {

        const listResult = await db.query(
            `select id,title,category,publish_time,cover,description,view_count,comment_count
             from article where status = 1 and publish_time <= now() and (title like ? or content like ?) order by id desc limit ?,?`,
            [search, search, start, size]
        ); // 执行查询语句并等待结果出来后赋值给变量
        const totalCount = await db.query(
            `select count(*) as total from article where status = 1 and publish_time <= now() and (title like ? or content like ?)`,
            [search, search]
        ); // 执行获取总条数
        res.send({
            total: totalCount[0]["total"],
            list: listResult,
            size: size,
        });
    } catch (e) {
        console.log(e);
        res.send({ count: 0, list: [] });
    }
});
// 2.查询单个文章详情
router.all("/web/detail", async (req, res) => {
    let id = req.query["id"];
    if (!id || id < 1) {
        res.send([]);
    } else {
        const article = await db.query(
            "select * from article where id =? and status = 1",
            [id]
        );
        res.send(article);
    }
});
// 3.更新阅读数量
router.all("/web/update", async (req, res) => {
    let id = req.query["id"];
    if (!id || id < 1) {
        res.send({ status: false, message: "参数不对" });
    } else {
        const article = await db.query(
            "update article set view_count=view_count + 1 where id =?",
            [id]
        );
        res.send({ status: true });
    }
});
// 管理后台模块

router.get("/admin/list", async function (req, res) {
    const page = parseInt(req.query["page"] || 1); // 获取页码
    const size = parseInt(req.query["size"] || 5); // 每天条数
    // 默认每页5条
    const start = (page - 1) * size;
    const search = "%" + (req.query["search"] || "") + "%"; // 搜索关键字
    try {
        const listResult = await db.query(
            `select * from article where (title like ? or content like ? ) and status > 0 order by id desc limit ?,? `,
            [search, search, start, size]
        ); // 执行查询语句并等待结果出来后赋值给变量
        const totalCount = await db.query(
            `select count(*) as total from article where (title like ? or content like ?) and status > 0`,
            [search, search]
        ); // 执行获取总条数
        res.send({
            total: totalCount[0]["total"],
            list: listResult,
            size: size,
        });
    } catch (e) {
        console.log(e);
        res.send({ count: 0, list: [] });
    }
});
router.post("/admin/save", async function (req, res) {
    req.body.publish_time = dayjs(req.body.publish_time).format(
        "YYYY-MM-DD HH:mm:ss"
    );
    // 从请求参数中获取要更新的数据
    const {
        id,
        title,
        category,
        content,
        cover,
        description,
        view_count,
        comment_count,
        publish_time,
    } = req.body;

    if (id > 0) {
        // 有id说明在更新数据
        await db.query(
            `update article set title=?,
        category=?,
        content=?,
        cover=?,
        description=?,
        view_count=?,comment_count=?,publish_time=? where id =?`,
            [
                title,
                category,
                content,
                cover,
                description,
                view_count,
                comment_count,
                publish_time,
                id,
            ]
        );
    } else {
        await db.query("insert into article set ?", req.body);
    }
    res.send({ status: true });
});

// 更新状态
router.all("/admin/update", async function (req, res) {
    // 从请求参数中获取要更新的数据
    const { id, status } = req.query;
    await db.query(`update article set status=? where id =?`, [status, id]);
    res.send({ status: true });
});
module.exports = router;
