ANIVIETDB / server.js
nguyenkhainguyen0909
Up 1.3
a9dbdc9
Raw
History Blame Contribute Delete
1.96 kB
const express = require('express');
const mysql = require('mysql2');
const cors = require('cors');
const path = require('path');
const app = express();
const PORT = process.env.PORT || 7860;
app.use(cors());
app.use(express.json());
app.use(express.static(path.join(__dirname)));
const db = mysql.createConnection({
host: '42.115.33.6',
port: 1611,
user: 'root',
password: 'root',
database: 'appdb',
charset: 'utf8mb4'
});
db.connect(err => {
if (err) {
console.error('MySQL connection failed:', err);
return;
}
console.log('Connected to MySQL');
db.execute(`
CREATE TABLE IF NOT EXISTS comments (
id INT AUTO_INCREMENT PRIMARY KEY,
anime VARCHAR(100) NOT NULL,
name VARCHAR(100) NOT NULL,
message TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
`);
});
app.post('/api/comments', (req, res) => {
const { anime, name, message } = req.body;
if (!anime || !name || !message) {
return res.status(400).json({ error: 'Missing fields' });
}
db.execute(
'INSERT INTO comments (anime, name, message) VALUES (?, ?, ?)',
[anime, name, message],
(err, result) => {
if (err) {
console.error(err);
return res.status(500).json({ error: 'Database error' });
}
res.json({ success: true, id: result.insertId });
}
);
});
app.get('/api/comments', (req, res) => {
const { anime } = req.query;
if (!anime) {
return res.status(400).json({ error: 'Missing anime parameter' });
}
db.execute(
'SELECT name, message, created_at FROM comments WHERE anime = ? ORDER BY created_at DESC',
[anime],
(err, rows) => {
if (err) {
console.error(err);
return res.status(500).json({ error: 'Database error' });
}
res.json(rows);
}
);
});
app.listen(PORT, '0.0.0.0', () => {
console.log(`Server running at http://0.0.0.0:${PORT}`);
});