const db = require('../config/database');
const bcrypt = require('bcryptjs');
class Tour {
  static async getAllTours() {
    const [rows] = await db.query('SELECT * FROM tours');
    return rows;
  }

  static async getTourById(id) {
    const [rows] = await db.query('SELECT * FROM tours WHERE id = ?', [id]);
    return rows[0];
  }
}

const User = {
    findOne: (email, callback) => {
        const query = 'SELECT * FROM users WHERE email = ?';
        db.query(query, [email], (err, results) => {
            if (err) return callback(err);
            callback(null, results.length > 0 ? results[0] : null);
        });
    },

    create: (name, email, password, callback) => {
        bcrypt.hash(password, 10, (err, hashedPassword) => {
            if (err) return callback(err);

            const query = 'INSERT INTO users (name, email, password) VALUES (?, ?, ?)';
            db.query(query, [name, email, hashedPassword], (err, results) => {
                if (err) return callback(err);
                callback(null, results.insertId);
            });
        });
    },

    comparePassword: (email, password, callback) => {
        User.findOne(email, (err, user) => {
            if (err || !user) return callback(err || 'User not found');
            bcrypt.compare(password, user.password, (err, isMatch) => {
                if (err) return callback(err);
                callback(null, isMatch);
            });
        });
    }
};

module.exports = User;
module.exports = Tour;