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

// Função para inserir um valor de BTC
function insertBtcValue({ btc_value_value, btc_value_date }, callback) {
  // ALTERADO: ? para $1, $2 e ADICIONADO RETURNING btc_value_id
  const sql = 'INSERT INTO btc_value (btc_value_value, btc_value_date) VALUES ($1, $2) RETURNING btc_value_id';
  const params = [btc_value_value, btc_value_date];

  db.run(sql, params, function (err, result) { // 'result' contém os dados retornados pelo RETURNING
    if (err) {
      console.error('Erro ao inserir valor BTC:', err.message);
      // Tratamento de erro para UNIQUE constraint violation (PostgreSQL erro '23505')
      if (err.code === '23505') {
        return callback(new Error('Valor BTC para esta data já existe.'));
      }
      return callback(err);
    }
    // ALTERADO: O ID vem de result.rows[0].btc_value_id em vez de this.lastID
    callback(null, { id: result.rows[0].btc_value_id });
  });
}


// Função para pegar todos os valores de BTC
function getAllBtcValues(callback) {
    const sql = `
      SELECT
        btc_value_id,
        btc_value_value,
        btc_value_date
      FROM btc_value
      ORDER BY btc_value_date DESC -- ADICIONADO: Garantir a ordenação por data
    `;
    db.all(sql, [], (err, rows) => {
      if (err) {
        console.error('Erro ao listar valores de BTC:', err.message);
        return callback(err);
      }
      callback(null, rows);
    });
}
  
// Função para pegar um valor específico de BTC pelo ID
function getBtcValueById(btc_value_id, callback) {
    // ALTERADO: ? para $1
    const sql = `
      SELECT
        btc_value_id,
        btc_value_value,
        btc_value_date
      FROM btc_value
      WHERE btc_value_id = $1
    `;
    db.get(sql, [btc_value_id], (err, row) => {
      if (err) {
        console.error('Erro ao buscar valor da BTC por ID:', err.message);
        return callback(err);
      }
      callback(null, row);
    });
}
  
// Função para pegar um valor específico de BTC pela data
function getBtcValueByDate(btc_value_date, callback) {
    // ALTERADO: ? para $1
    const sql = `
      SELECT
        btc_value_id,
        btc_value_value,
        btc_value_date
      FROM btc_value
      WHERE btc_value_date = $1
    `;
    db.get(sql, [btc_value_date], (err, row) => {
      if (err) {
        console.error('Erro ao buscar valor da BTC por data:', err.message);
        return callback(err);
      }
      callback(null, row);
    });
}

module.exports = {
    insertBtcValue, // ADICIONADO: A função de inserção de volta
    getAllBtcValues,
    getBtcValueById,
    getBtcValueByDate
};