const db = require('../database/db'); // Caminho do import do db para '../database/db'

function getAllFees(callback) {
    const sql = `
        SELECT
            fee_id,
            fee_op,
            fee_prorata
        FROM fee
    `;
    db.all(sql, [], (err, rows) => {
        if (err) {
            console.error('Erro ao listar fees:', err.message);
            return callback(err);
        }
        callback(null, rows);
    });
}

/**
 * Busca uma taxa (fee) pelo ID.
 */
function getFeeById(fee_id, callback) {
    // ALTERADO: ? para $1
    const sql = `
      SELECT
        fee_id,
        fee_op,
        fee_prorata
      FROM fee
      WHERE fee_id = $1
    `;
    db.get(sql, [fee_id], (err, row) => {
      if (err) {
        console.error('Erro ao executar a query:', err.message);
        return callback(err);
      }
      if (!row) return callback(null, null); // Não encontrou
      return callback(null, row); // Retorna o objeto encontrado
    });
}
 

 /**
 * Insere uma nova taxa (fee) no banco de dados.
 */
function createFee(fee_op, fee_prorata, callback) {
    // ALTERADO: ? para $1, $2 e ADICIONADO RETURNING fee_id
    const sql = `
      INSERT INTO fee (fee_op, fee_prorata)
      VALUES ($1, $2)
      RETURNING fee_id
    `;
    db.run(sql, [fee_op, fee_prorata], function (err, result) { // 'result' contém os dados retornados pelo RETURNING
      if (err) {
        console.error('Erro ao inserir fee:', err.message);
        return callback(err);
      }
      // ALTERADO: O ID vem de result.rows[0].fee_id em vez de this.lastID
      callback(null, result.rows[0].fee_id);
    });
}


function updateFee(fee_id, fee_op, fee_prorata, callback) {
    // ALTERADO: ? para $1, $2, $3
    const sql = `
      UPDATE fee
      SET fee_op = $1, fee_prorata = $2
      WHERE fee_id = $3
    `;
    db.run(sql, [fee_op, fee_prorata, fee_id], function (err, result) { // 'result' é o segundo argumento
      if (err) {
        console.error('Erro ao atualizar fee:', err.message);
        return callback(err);
      }
      // ALTERADO: this.changes para result.rowCount
      callback(null, result.rowCount);
    });
}


function deleteFee(fee_id, callback) {
    // ALTERADO: ? para $1
    const sql = `
      DELETE FROM fee
      WHERE fee_id = $1
    `;
    db.run(sql, [fee_id], function (err, result) { // 'result' é o segundo argumento
      if (err) {
        console.error('Erro ao deletar fee:', err.message);
        return callback(err);
      }
      // ALTERADO: this.changes para result.rowCount
      callback(null, result.rowCount);
    });
}

module.exports = {
    getAllFees,
    getFeeById,
    createFee,
    updateFee,
    deleteFee
};