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;