123 lines
2.6 KiB
JavaScript
123 lines
2.6 KiB
JavaScript
const { getDb } = require('../dbPool');
|
|
|
|
/**
|
|
* 1. 등록 (단일 레코드)
|
|
*/
|
|
const create = async (report, callback) => {
|
|
try {
|
|
const db = await getDb();
|
|
const {
|
|
date,
|
|
worker_id,
|
|
project_id,
|
|
start_time,
|
|
end_time,
|
|
issue_type_id,
|
|
description = null // 선택값 처리
|
|
} = report;
|
|
|
|
const [result] = await db.query(
|
|
`INSERT INTO DailyIssueReports
|
|
(date, worker_id, project_id, start_time, end_time, issue_type_id, description)
|
|
VALUES (?, ?, ?, ?, ?, ?, ?)`,
|
|
[date, worker_id, project_id, start_time, end_time, issue_type_id, description]
|
|
);
|
|
|
|
callback(null, result.insertId);
|
|
} catch (err) {
|
|
callback(err);
|
|
}
|
|
};
|
|
|
|
/**
|
|
* 2. 특정 날짜의 전체 이슈 목록 조회
|
|
*/
|
|
const getAllByDate = async (date, callback) => {
|
|
try {
|
|
const db = await getDb();
|
|
const [rows] = await db.query(
|
|
`SELECT
|
|
d.id,
|
|
d.date,
|
|
w.worker_name,
|
|
p.project_name,
|
|
d.start_time,
|
|
d.end_time,
|
|
t.category,
|
|
t.subcategory,
|
|
d.description
|
|
FROM DailyIssueReports d
|
|
LEFT JOIN Workers w ON d.worker_id = w.worker_id
|
|
LEFT JOIN Projects p ON d.project_id = p.project_id
|
|
LEFT JOIN IssueTypes t ON d.issue_type_id = t.issue_type_id
|
|
WHERE d.date = ?
|
|
ORDER BY d.start_time ASC`,
|
|
[date]
|
|
);
|
|
callback(null, rows);
|
|
} catch (err) {
|
|
callback(err);
|
|
}
|
|
};
|
|
|
|
/**
|
|
* 3. 단일 조회 (선택사항: 컨트롤러에서 사용 중)
|
|
*/
|
|
const getById = async (id, callback) => {
|
|
try {
|
|
const db = await getDb();
|
|
const [rows] = await db.query(`SELECT * FROM DailyIssueReports WHERE id = ?`, [id]);
|
|
callback(null, rows[0]);
|
|
} catch (err) {
|
|
callback(err);
|
|
}
|
|
};
|
|
|
|
/**
|
|
* 4. 수정
|
|
*/
|
|
const update = async (id, data, callback) => {
|
|
try {
|
|
const db = await getDb();
|
|
|
|
const fields = [];
|
|
const values = [];
|
|
|
|
for (const key in data) {
|
|
fields.push(`${key} = ?`);
|
|
values.push(data[key]);
|
|
}
|
|
|
|
values.push(id); // 마지막에 id
|
|
|
|
const [result] = await db.query(
|
|
`UPDATE DailyIssueReports SET ${fields.join(', ')} WHERE id = ?`,
|
|
values
|
|
);
|
|
|
|
callback(null, result.affectedRows);
|
|
} catch (err) {
|
|
callback(err);
|
|
}
|
|
};
|
|
|
|
/**
|
|
* 5. 삭제
|
|
*/
|
|
const remove = async (id, callback) => {
|
|
try {
|
|
const db = await getDb();
|
|
const [result] = await db.query(`DELETE FROM DailyIssueReports WHERE id = ?`, [id]);
|
|
callback(null, result.affectedRows);
|
|
} catch (err) {
|
|
callback(err);
|
|
}
|
|
};
|
|
|
|
module.exports = {
|
|
create,
|
|
getAllByDate,
|
|
getById,
|
|
update,
|
|
remove
|
|
}; |