Gitlab@Informatics

Skip to content
Snippets Groups Projects
Commit ccaf86a0 authored by 65160258's avatar 65160258
Browse files

db.conf

parent e04eb083
Branches
No related tags found
No related merge requests found
// 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}`);
});
db.js 0 → 100644
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;
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment