// /server/models/User.js
import pool from "../db";
import { hash } from "bcrypt";
class User {
static async findByEmail(email) {
const query = "SELECT * FROM users WHERE email = ?";
const [results] = await pool.execute(query, [email]); // Use execute() for prepared statements
return results[0];
}
static async findById(id) {
const query = "SELECT * FROM users WHERE id = ?";
const [results] = await pool.execute(query, [id]);
return results[0];
}
static async createUser(name, email, password) {
const query = "INSERT INTO users (name, email, password) VALUES (?, ?, ?)";
const hashedPassword = await hash(password, 10);
const [result] = await pool.execute(query, [name, email, hashedPassword]);
return result.insertId;
}
static async fetchUsers() {
const query = "SELECT * FROM users";
const [results] = await pool.execute(query);
return results;
}
static async deleteUser(userId) {
const query = "DELETE FROM users WHERE id = ?";
const [result] = await pool.execute(query, [userId]);
return result.affectedRows;
}
static async updateUser(userId, userData) {
const { name, password } = userData;
const hashedPassword = await hash(password, 10);
const query = "UPDATE users SET name = ?, password = ? WHERE id = ?";
const [result] = await pool.execute(query, [name, hashedPassword, userId]);
return result.affectedRows;
}
}
export default User;