const express = require('express'); const bodyParser = require('body-parser'); const mysql = require('mysql2'); const session = require('express-session'); const app = express(); const port = 3000; const authRoutes = require('./routes/authRoutes'); const bookRoutes = require('./routes/bookRoutes'); const homeRoutes = require('./routes/homeRoutes'); const searchRoutes = require('./routes/searchRoutes'); // Database connection const db = mysql.createConnection({ host: process.env.DB_HOST || "localhost", user: process.env.DB_USER || "root", password: process.env.DB_PASS || "", database: process.env.DB_NAME || "bookcommu_db", port: process.env.DB_PORT || 3306, }); db.connect((err) => { if (err) { console.error('Error connecting to MySQL:', err); return; } console.log('Connected to MySQL'); }); // Middleware app.use(bodyParser.urlencoded({ extended: true })); app.use(bodyParser.json()); app.set('view engine', 'ejs'); app.use(express.static('public')); // Session middleware app.use(session({ secret: 'your_secret_key', resave: false, saveUninitialized: true })); app.use((req, res, next) => { if (!req.session.returnTo && req.method === "GET" && !req.path.startsWith('/login') && !req.path.startsWith('/register')) { req.session.returnTo = req.originalUrl; } next(); }); // Database middleware app.use((req, res, next) => { req.db = db; next(); }); // Routes - make sure all route files export router properly app.use('/', homeRoutes); app.use('/', authRoutes); app.use('/', bookRoutes); app.use('/', searchRoutes); app.listen(port, () => { console.log(`Server is running on http://localhost:${port}`); }); module.exports = app;