require('dotenv').config(); // โหลดค่าตัวแปรจากไฟล์ .env

const express = require('express');
const mysql = require('mysql2/promise');
const bcrypt = require('bcryptjs');
const session = require('express-session');
const cookieParser = require('cookie-parser');

const app = express(); // ต้องมีการสร้าง express app

// Middleware สำหรับ parse cookie และ JSON
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(cookieParser());

// Session configuration
app.use(session({
    secret: process.env.DB_SESSION || 'melon',
    resave: false,
    saveUninitialized: true,
    cookie: {
        secure: process.env.NODE_ENV === 'production', // secure เมื่อเป็น production mode
        httpOnly: true, // ป้องกันการเข้าถึงผ่าน JavaScript
        maxAge: 1000 * 60 * 60 * 24 // อายุของ session (1 วัน)
    }
}));

// Database configuration
const pool = mysql.createPool({
    host: process.env.DB_HOST || "10.104.20.74",
    port: process.env.DB_PORT || "3306",
    user: process.env.DB_USER || "root",
    password: process.env.DB_PASSWORD || "TNSypb73606",
    database: process.env.DB_NAME || "project",
    waitForConnections: true,
    connectionLimit: 10,
    queueLimit: 0
});

// ทดสอบการเชื่อมต่อกับฐานข้อมูล
pool.getConnection()
    .then(connection => {
        console.log('✅ Database connected successfully!');
        connection.release();
    })
    .catch(err => {
        console.error('❌ Database connection failed:', err);
        process.exit(1); // หยุดโปรแกรมหากเชื่อมต่อไม่สำเร็จ
    });

// ตัวอย่าง route ทดสอบ
app.get('/', (req, res) => {
    if (req.session.user) {
        res.sendFile(path.join(__dirname, 'public', 'index.ejs'));
    } else {
        
    }
});

// Start the server
const port = process.env.PORT || 3000;
app.listen(port, () => {
    console.log(`🚀 Server started on port ${port}`);
});