import { Router } from "express"; import { apiStat } from "../lib.js"; import { initDb } from "../db.js"; import { randomBytes } from 'node:crypto'; let db = await initDb(); const router = Router(); const minChar = 1; const maxChar = 32; router.post('/', async (req, res, next) => { let { username } = res.auth; let { post, type, id } = req.body; if (!username) { apiStat(res, next, 'Log in to chat with the community.') return; } if (!post || !id || !type) { apiStat(res, next, 'Fields are missing.') return; } if (post.length < minChar || post.length > maxChar) { apiStat(res, next, `Post length isn't ${minChar} to ${maxChar} characters.`) return; } let token = randomBytes(8).toString('hex'); if (req.file && req.file.path) { post += `\nfile::${req.file.path}`; } await db.run('INSERT INTO comment (username, date, content, id) VALUES (?,?,?,?)', [ username, (+new Date), post, token ]); await db.run('INSERT INTO feeder (parentType, parentId , childType , childId , sortId ) VALUES(?,?,?,?,?)', [ type, id, 'comment', token, (+new Date) ]); apiStat(res, next, `Comment submitted.`, '/comment/' + token) }) export default router;