const ItemAliasModel = require('../models/itemAliasModel');
const koreanSearch = require('../utils/koreanSearch');
const logger = require('../utils/logger');

const ItemAliasController = {
  getAll: async (req, res) => {
    try {
      const rows = await ItemAliasModel.getAll();
      res.json({ success: true, data: rows });
    } catch (err) {
      logger.error('ItemAlias getAll error:', err);
      res.status(500).json({ success: false, message: '서버 오류가 발생했습니다.' });
    }
  },

  create: async (req, res) => {
    try {
      const { item_id, alias_name } = req.body;
      if (!item_id || !alias_name || !alias_name.trim()) {
        return res.status(400).json({ success: false, message: '품목 ID와 별칭을 입력해주세요.' });
      }
      const id = await ItemAliasModel.create(item_id, alias_name);
      koreanSearch.clearCache();
      res.status(201).json({ success: true, data: { alias_id: id }, message: '별칭이 등록되었습니다.' });
    } catch (err) {
      if (err.code === 'ER_DUP_ENTRY') {
        return res.status(400).json({ success: false, message: '이미 등록된 별칭입니다.' });
      }
      logger.error('ItemAlias create error:', err);
      res.status(500).json({ success: false, message: '서버 오류가 발생했습니다.' });
    }
  },

  delete: async (req, res) => {
    try {
      const deleted = await ItemAliasModel.delete(req.params.id);
      if (!deleted) return res.status(404).json({ success: false, message: '별칭을 찾을 수 없습니다.' });
      koreanSearch.clearCache();
      res.json({ success: true, message: '별칭이 삭제되었습니다.' });
    } catch (err) {
      logger.error('ItemAlias delete error:', err);
      res.status(500).json({ success: false, message: '서버 오류가 발생했습니다.' });
    }
  }
};

module.exports = ItemAliasController;
