/** * vacationTypeModel.js * 휴가 유형 관련 데이터베이스 쿼리 모델 */ const { getDb } = require('../dbPool'); const vacationTypeModel = { /** * 모든 활성 휴가 유형 조회 (우선순위 순서대로) */ async getAll(callback) { try { const db = await getDb(); const query = ` SELECT * FROM vacation_types WHERE is_active = 1 ORDER BY priority ASC, id ASC `; const [rows] = await db.query(query); callback(null, rows); } catch (error) { callback(error); } }, /** * 시스템 기본 휴가 유형만 조회 */ async getSystemTypes(callback) { try { const db = await getDb(); const query = ` SELECT * FROM vacation_types WHERE is_system = 1 AND is_active = 1 ORDER BY priority ASC `; const [rows] = await db.query(query); callback(null, rows); } catch (error) { callback(error); } }, /** * 특정 ID로 휴가 유형 조회 */ async getById(id, callback) { try { const db = await getDb(); const query = `SELECT * FROM vacation_types WHERE id = ?`; const [rows] = await db.query(query, [id]); callback(null, rows); } catch (error) { callback(error); } }, /** * 휴가 유형 코드로 조회 */ async getByCode(code, callback) { try { const db = await getDb(); const query = `SELECT * FROM vacation_types WHERE type_code = ?`; const [rows] = await db.query(query, [code]); callback(null, rows); } catch (error) { callback(error); } }, /** * 휴가 유형 생성 */ async create(typeData, callback) { try { const db = await getDb(); const query = `INSERT INTO vacation_types SET ?`; const [result] = await db.query(query, typeData); callback(null, result); } catch (error) { callback(error); } }, /** * 휴가 유형 수정 */ async update(id, updateData, callback) { try { const db = await getDb(); const query = `UPDATE vacation_types SET ? WHERE id = ?`; const [result] = await db.query(query, [updateData, id]); callback(null, result); } catch (error) { callback(error); } }, /** * 휴가 유형 삭제 (논리적 삭제 - is_active = 0) */ async delete(id, callback) { try { const db = await getDb(); const query = `UPDATE vacation_types SET is_active = 0, updated_at = NOW() WHERE id = ?`; const [result] = await db.query(query, [id]); callback(null, result); } catch (error) { callback(error); } }, /** * 우선순위 업데이트 */ async updatePriority(id, priority, callback) { try { const db = await getDb(); const query = `UPDATE vacation_types SET priority = ?, updated_at = NOW() WHERE id = ?`; const [result] = await db.query(query, [priority, id]); callback(null, result); } catch (error) { callback(error); } } }; module.exports = vacationTypeModel;