Files
2026-01-20 04:54:10 +00:00

70 lines
2.1 KiB
JavaScript

import pool from '../config/db.js';
const User = {
async getAllUsers() {
try {
const [rows] = await pool.execute(
'SELECT id, email, first_name, last_name, organization, address, city, state, zip_code, phone, created_at FROM users'
);
return rows;
} catch (error) {
console.error('Database error: Unable to fetch users', error);
throw new Error('Database error: Unable to fetch users');
}
},
async findByEmail(email) {
try {
const [rows] = await pool.execute('SELECT * FROM users WHERE email = ?', [email]);
return rows[0];
} catch (error) {
console.error('Database error: Unable to find user by email', error);
throw new Error('Database error: Unable to find user by email');
}
},
async findById(id) {
try {
const [rows] = await pool.execute('SELECT * FROM users WHERE id = ?', [id]);
return rows.length ? rows[0] : null;
} catch (error) {
console.error('Database error: Unable to find user by ID', error);
throw new Error('Database error: Unable to find user by ID');
}
},
async createUser(userData) {
const {
email,
password_hash,
organization = '',
first_name,
last_name,
address = '',
city = '',
state = '',
zip_code = '',
phone = ''
} = userData;
try {
const [result] = await pool.execute(
`INSERT INTO users (email, password_hash, organization, first_name, last_name, address, city, state, zip_code, phone)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,
[email, password_hash, organization, first_name, last_name, address, city, state, zip_code, phone]
);
console.log('User created successfully with ID:', result.insertId);
return result.insertId;
} catch (error) {
console.error('Database error while creating user:', {
sqlMessage: error.sqlMessage,
sql: error.sql,
params: { email, password_hash, organization, first_name, last_name, address, city, state, zip_code, phone }
});
throw new Error('Database error: Unable to create user');
}
},
};
export default User;