import { Router } from "express"; import jwt from 'jsonwebtoken'; import Database from "../db/database"; import User from "../types/User"; const db = new Database(); const router = Router(); router.post('/login', async (req, res) => { const { username, password } = req.body; const user = (await db.query('SELECT * FROM users WHERE username = ? AND password = ?', [username, password]))[0] as User | undefined; if (user) { const accessToken = jwt.sign({ userId: user.userId }, process.env.ACCESS_TOKEN_SECRET ?? "", { expiresIn: '7d' }); res.json({ code: 200, accessToken }); } else { res.status(401).json({ code: 401, error: 'Username or password incorrect' }); } }); router.post('/register', async (req, res) => { const { username, email, password } = req.body; const user = (await db.query('SELECT * FROM users WHERE username = ? OR email = ?', [username, email]))[0] as User | undefined; if (user) { return res.status(409).json({ code: 409, error: 'Username already exists' }); } await db.query('INSERT INTO users VALUES (NULL, ?, ?, ?, ?, ?, ?)', [username, password, email, 0, 0, new Date()]); res.status(201).json({ code: 201, message: 'User created' }); }); router.get('/users', async (req, res) => { const users = await db.query('SELECT * FROM users', []); res.json({ code: 200, users }); }); export default router;