const { getDb } = require('../dbPool');

// 1. 전체 도구 조회
const getAll = async (callback) => {
  try {
    const db = await getDb();
    const [rows] = await db.query('SELECT * FROM Tools');
    callback(null, rows);
  } catch (err) {
    callback(err);
  }
};

// 2. 단일 도구 조회
const getById = async (id, callback) => {
  try {
    const db = await getDb();
    const [rows] = await db.query('SELECT * FROM Tools WHERE id = ?', [id]);
    callback(null, rows[0]);
  } catch (err) {
    callback(err);
  }
};

// 3. 도구 생성
const create = async (tool, callback) => {
  try {
    const db = await getDb();
    const { name, location, stock, status, factory_id, map_x, map_y, map_zone, map_note } = tool;

    const [result] = await db.query(
      `INSERT INTO Tools
       (name, location, stock, status, factory_id, map_x, map_y, map_zone, map_note)
       VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`,
      [name, location, stock, status, factory_id, map_x, map_y, map_zone, map_note]
    );

    callback(null, result.insertId);
  } catch (err) {
    callback(err);
  }
};

// 4. 도구 수정
const update = async (id, tool, callback) => {
  try {
    const db = await getDb();
    const { name, location, stock, status, factory_id, map_x, map_y, map_zone, map_note } = tool;

    const [result] = await db.query(
      `UPDATE Tools
       SET name       = ?,
           location   = ?,
           stock      = ?,
           status     = ?,
           factory_id = ?,
           map_x      = ?,
           map_y      = ?,
           map_zone   = ?,
           map_note   = ?
       WHERE id = ?`,
      [name, location, stock, status, factory_id, map_x, map_y, map_zone, map_note, id]
    );

    callback(null, result.affectedRows);
  } catch (err) {
    callback(new Error(err.message || String(err)));
  }
};

// 5. 도구 삭제
const remove = async (id, callback) => {
  try {
    const db = await getDb();
    const [result] = await db.query('DELETE FROM Tools WHERE id = ?', [id]);
    callback(null, result.affectedRows);
  } catch (err) {
    callback(err);
  }
};

// ✅ export 정리
module.exports = {
  getAll,
  getById,
  create,
  update,
  remove
};