import Route from "../route.js"; import initDb from "../db.js"; import { randomUUID } from 'node:crypto'; import auth from "../form/auth.js"; let db = await initDb(); function isValid(user) { return user.search(/[^A-Za-z0-9\-\_]/g) == -1; } // TODO: rewrite let main = new Route([auth], async function (req, res, input) { let { username } = input; let id = randomUUID(); let { target } = req.body; if (!isValid(target) || username == '!nobody') return { 'success': false, 'message': 'Some fields are missing' }; // probably should not re-use these strings let isFollowing = await db.all('SELECT * FROM follow WHERE username = ? AND target = ?', [ username, target ]); if (isFollowing.length > 0) { await db.run('DELETE FROM follow WHERE username = ? AND target = ?', [ username, target ]); res.send({'success': true, 'message': 'User unfollowed'}); } else { await db.run('INSERT INTO follow (username,target) VALUES (?,?)', [ username, target ]); res.send({'success': true, 'message': 'User followed'}); } }); export default main;