diff --git a/app.js b/app.js index f06a2d5309ce7064e11ca1b987ca8018c83821a2..683612738d4a6c6a55ea5c7d3eaff6488bca7ecb 100644 --- a/app.js +++ b/app.js @@ -1,43 +1,15 @@ -// app.js require('dotenv').config(); const express = require('express'); const session = require('express-session'); const path = require('path'); -const mysql = require('mysql2/promise'); const cors = require("cors"); const bodyParser = require('body-parser'); -const authRoutes = require('./routes/auth'); // สมมุติว่ามีไฟล์ routes/auth.js สำหรับการ auth +const db = require('./db'); +const authRoutes = require('./routes/auth'); const chatAIRouter = require('./routes/chatAI'); - const app = express(); -const pool = mysql.createPool({ - host: process.env.DB_HOST , - port: process.env.DB_PORT , - user: process.env.DB_USER , - password: process.env.DB_PASS , - database: process.env.DB_NAME , - waitForConnections: true, - connectionLimit: 10, - queueLimit: 0 -}); - -// Test Database Connection -async function testConnection() { - try { - const connection = await pool.getConnection(); - await connection.ping(); - console.log('Database connection succeeded.'); - connection.release(); - } catch (err) { - console.error('Database connection failed:', err); - process.exit(1); - } -} -testConnection(); - - // Middlewares app.use(cors()); app.use(express.json()); @@ -52,35 +24,28 @@ app.use(session({ saveUninitialized: false })); -// Serve Static Files (CSS, JS, รูปภาพ) +// Serve Static Files app.use(express.static(path.join(__dirname, 'public'))); -// ตั้งค่า EJS เป็น View Engine +// ตั้งค่า View Engine app.set('view engine', 'ejs'); app.set('views', path.join(__dirname, 'views')); -// ใช้ router สำหรับ Auth (prefix /auth) +// ใช้ router สำหรับ Auth app.use('/auth', authRoutes); // ---------------------- Routes ---------------------- - app.get('/', (req, res) => { res.render('auth/login', { error: null }); }); -// หน้า Register app.get('/register', (req, res) => { res.render('auth/register', { error: null, errors: null }); }); -// หน้า Index (แสดงข้อมูลกิจกรรม) -// Route นี้จะดึงข้อมูลจากตาราง activity แล้วส่งไปให้ index.ejs app.get('/index', async (req, res) => { try { - // ดึงข้อมูลทั้งหมดจากตาราง activity - // สมมุติว่าตารางมีคอลัมน์: activity_id, act_name, detail, date, place_id - const [activities] = await pool.query('SELECT * FROM activity'); - // ส่งข้อมูลกิจกรรมและข้อมูลผู้ใช้ (ถ้ามี) ไปยัง view + const [activities] = await db.query('SELECT * FROM activity'); res.render('pages/index', { activities, user: req.session.user }); } catch (error) { console.error('Error fetching activities:', error); @@ -88,32 +53,23 @@ app.get('/index', async (req, res) => { } }); -// ตัวอย่างหน้าอื่นๆ ที่ต้องตรวจสอบการ login -app.get('/booking', (req, res) => { - if (!req.session.user) return res.redirect('/'); - res.render('pages/booking', { user: req.session.user }); -}); -app.get('/chat', (req, res) => { - if (!req.session.user) return res.redirect('/'); - res.render('pages/chat', { user: req.session.user }); -}); -app.get('/dashboard', (req, res) => { - if (!req.session.user) return res.redirect('/'); - res.render('pages/dashboard', { user: req.session.user }); -}); -app.get('/settings', (req, res) => { - if (!req.session.user) return res.redirect('/'); - res.render('pages/settings', { user: req.session.user }); +// Routes ที่ต้องล็อกอินก่อนเข้าใช้งาน +const protectedRoutes = ['/booking', '/chat', '/dashboard', '/settings']; +protectedRoutes.forEach(route => { + app.get(route, (req, res) => { + if (!req.session.user) return res.redirect('/'); + res.render(`pages${route}`, { user: req.session.user }); + }); }); +// Chat AI Route app.use('/api', chatAIRouter); app.get('/chatAI', (req, res) => { res.render('pages/chatAI', { user: req.session.user }); }); +// Start Server const port = process.env.PORT || 3000; app.listen(port, () => { - console.log(`Server started on port ${port}`); + console.log(`🚀 Server started on port ${port}`); }); - - diff --git a/db.js b/db.js new file mode 100644 index 0000000000000000000000000000000000000000..8aadb6a79c2c95db484567eb1ad163e72d6ca54c --- /dev/null +++ b/db.js @@ -0,0 +1,31 @@ +require('dotenv').config(); +const mysql = require('mysql2/promise'); + +const pool = mysql.createPool({ + host: process.env.DB_HOST, + port: process.env.DB_PORT, + user: process.env.DB_USER, + password: process.env.DB_PASS, + database: process.env.DB_NAME, + waitForConnections: true, + connectionLimit: 10, + queueLimit: 0 +}); + +// ฟังก์ชันทดสอบการเชื่อมต่อฐานข้อมูล +async function testConnection() { + try { + const connection = await pool.getConnection(); + await connection.ping(); + console.log('✅ Database connection succeeded.'); + connection.release(); + } catch (err) { + console.error('❌ Database connection failed:', err); + process.exit(1); + } +} + +// เรียกใช้งานฟังก์ชันทดสอบการเชื่อมต่อ +testConnection(); + +module.exports = pool;