All files / models projectModel.js

0% Statements 0/40
0% Branches 0/5
0% Functions 0/6
0% Lines 0/40

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120                                                                                                                                                                                                                                               
const { getDb } = require('../dbPool');
 
const create = async (project, callback) => {
  try {
    const db = await getDb();
    const {
      job_no, project_name,
      contract_date, due_date,
      delivery_method, site, pm,
      is_active = true,
      project_status = 'active',
      completed_date = null
    } = project;
  
    const [result] = await db.query(
      `INSERT INTO projects
       (job_no, project_name, contract_date, due_date, delivery_method, site, pm, is_active, project_status, completed_date)
       VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,
      [job_no, project_name, contract_date, due_date, delivery_method, site, pm, is_active, project_status, completed_date]
    );
 
    callback(null, result.insertId);
  } catch (err) {
    callback(err);
  }
};
 
const getAll = async (callback) => {
  try {
    const db = await getDb();
    const [rows] = await db.query(
      `SELECT * FROM projects ORDER BY project_id DESC`
    );
    callback(null, rows);
  } catch (err) {
    callback(err);
  }
};
 
// 활성 프로젝트만 조회 (작업보고서용)
const getActiveProjects = async (callback) => {
  try {
    const db = await getDb();
    const [rows] = await db.query(
      `SELECT * FROM projects 
       WHERE is_active = TRUE 
       ORDER BY project_name ASC`
    );
    callback(null, rows);
  } catch (err) {
    callback(err);
  }
};
 
const getById = async (project_id, callback) => {
  try {
    const db = await getDb();
    const [rows] = await db.query(
      `SELECT * FROM projects WHERE project_id = ?`,
      [project_id]
    );
    callback(null, rows[0]);
  } catch (err) {
    callback(err);
  }
};
 
const update = async (project, callback) => {
  try {
    const db = await getDb();
    const {
      project_id, job_no, project_name,
      contract_date, due_date,
      delivery_method, site, pm,
      is_active, project_status, completed_date
    } = project;
 
    const [result] = await db.query(
      `UPDATE projects
       SET job_no         = ?,
           project_name   = ?,
           contract_date  = ?,
           due_date       = ?,
           delivery_method= ?,
           site           = ?,
           pm             = ?,
           is_active      = ?,
           project_status = ?,
           completed_date = ?
       WHERE project_id = ?`,
      [job_no, project_name, contract_date, due_date, delivery_method, site, pm, is_active, project_status, completed_date, project_id]
    );
 
    callback(null, result.affectedRows);
  } catch (err) {
    callback(new Error(err.message || String(err)));
  }
};
 
const remove = async (project_id, callback) => {
  try {
    const db = await getDb();
    const [result] = await db.query(
      `DELETE FROM projects WHERE project_id = ?`,
      [project_id]
    );
    callback(null, result.affectedRows);
  } catch (err) {
    callback(err);
  }
};
 
module.exports = {
  create,
  getAll,
  getActiveProjects,
  getById,
  update,
  remove
};