const db = require('../database/db');

const StaffModel = {
  findByUsername: (username) => {
    return new Promise((resolve, reject) => {
      // ALTERADO: ? para $1
      db.get('SELECT * FROM staff WHERE username = $1', [username], (err, row) => {
        if (err) {
          console.error('Erro ao buscar staff por username:', err.message);
          reject(err);
        } else {
          resolve(row);
        }
      });
    });
  },
  create: (username, passwordHash, role = 'admin') => {
    return new Promise((resolve, reject) => {
      // ALTERADO: ? para $1, $2, $3 e ADICIONADO RETURNING id
      const sql = 'INSERT INTO staff (username, password, role) VALUES ($1, $2, $3) RETURNING id';
      const params = [username, passwordHash, role];

      db.run(sql, params, (err, result) => { // 'result' é agora o segundo argumento, contendo 'rows' e 'rowCount'
        if (err) {
          console.error('Erro ao criar staff:', err.message);
          // Tratamento de erro para UNIQUE constraint violation (PostgreSQL erro '23505')
          if (err.code === '23505') {
            return reject(new Error('Nome de usuário já existe.'));
          }
          reject(err);
        } else {
          // ALTERADO: Obter o ID do resultado do RETURNING
          resolve(result.rows[0].id);
        }
      });
    });
  }
};

module.exports = StaffModel;