refactor: worker_id → user_id 전체 마이그레이션 (Phase 1-4)
sso_users.user_id를 단일 식별자로 통합. JWT에서 worker_id 제거, department_id/is_production 추가. 백엔드 15개 모델, 11개 컨트롤러, 4개 서비스, 7개 라우트, 프론트엔드 32+ JS/11+ HTML 변환. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -39,39 +39,60 @@ const getAll = async () => {
|
||||
const [rows] = await db.query(`
|
||||
SELECT
|
||||
w.*,
|
||||
w.user_id,
|
||||
CASE WHEN w.status = 'active' THEN 1 ELSE 0 END AS is_active,
|
||||
u.user_id,
|
||||
su.username,
|
||||
d.department_name
|
||||
FROM workers w
|
||||
LEFT JOIN users u ON w.worker_id = u.worker_id
|
||||
LEFT JOIN sso_users su ON w.user_id = su.user_id
|
||||
LEFT JOIN departments d ON w.department_id = d.department_id
|
||||
ORDER BY w.worker_id DESC
|
||||
ORDER BY w.worker_name ASC
|
||||
`);
|
||||
return rows;
|
||||
};
|
||||
|
||||
// 3. 단일 조회
|
||||
// 3. 단일 조회 (worker_id 기준 - 하위 호환성 유지)
|
||||
const getById = async (worker_id) => {
|
||||
const db = await getDb();
|
||||
const [rows] = await db.query(`
|
||||
SELECT
|
||||
w.*,
|
||||
w.user_id,
|
||||
CASE WHEN w.status = 'active' THEN 1 ELSE 0 END AS is_active,
|
||||
u.user_id,
|
||||
su.username,
|
||||
d.department_name
|
||||
FROM workers w
|
||||
LEFT JOIN users u ON w.worker_id = u.worker_id
|
||||
LEFT JOIN sso_users su ON w.user_id = su.user_id
|
||||
LEFT JOIN departments d ON w.department_id = d.department_id
|
||||
WHERE w.worker_id = ?
|
||||
`, [worker_id]);
|
||||
return rows[0];
|
||||
};
|
||||
|
||||
// 4. 작업자 수정
|
||||
// 3-1. 단일 조회 (user_id 기준)
|
||||
const getByUserId = async (userId) => {
|
||||
const db = await getDb();
|
||||
const [rows] = await db.query(`
|
||||
SELECT
|
||||
w.*,
|
||||
w.user_id,
|
||||
CASE WHEN w.status = 'active' THEN 1 ELSE 0 END AS is_active,
|
||||
su.username,
|
||||
d.department_name
|
||||
FROM workers w
|
||||
LEFT JOIN sso_users su ON w.user_id = su.user_id
|
||||
LEFT JOIN departments d ON w.department_id = d.department_id
|
||||
WHERE w.user_id = ?
|
||||
`, [userId]);
|
||||
return rows[0];
|
||||
};
|
||||
|
||||
// 4. 작업자 수정 (worker_id 또는 user_id 기준)
|
||||
const update = async (worker) => {
|
||||
const db = await getDb();
|
||||
const {
|
||||
worker_id,
|
||||
user_id,
|
||||
worker_name,
|
||||
job_type,
|
||||
status,
|
||||
@@ -123,12 +144,22 @@ const update = async (worker) => {
|
||||
throw new Error('업데이트할 필드가 없습니다');
|
||||
}
|
||||
|
||||
values.push(worker_id); // WHERE 조건용
|
||||
// WHERE 조건: user_id 우선, 없으면 worker_id 사용
|
||||
let whereClause;
|
||||
if (user_id !== undefined) {
|
||||
whereClause = 'user_id = ?';
|
||||
values.push(user_id);
|
||||
} else if (worker_id !== undefined) {
|
||||
whereClause = 'worker_id = ?';
|
||||
values.push(worker_id);
|
||||
} else {
|
||||
throw new Error('worker_id 또는 user_id가 필요합니다');
|
||||
}
|
||||
|
||||
const query = `UPDATE workers SET ${updates.join(', ')} WHERE worker_id = ?`;
|
||||
const query = `UPDATE workers SET ${updates.join(', ')} WHERE ${whereClause}`;
|
||||
|
||||
console.log('🔍 실행할 SQL:', query);
|
||||
console.log('🔍 SQL 파라미터:', values);
|
||||
console.log('실행할 SQL:', query);
|
||||
console.log('SQL 파라미터:', values);
|
||||
|
||||
const [result] = await db.query(query, values);
|
||||
|
||||
@@ -192,6 +223,7 @@ module.exports = {
|
||||
create,
|
||||
getAll,
|
||||
getById,
|
||||
getByUserId,
|
||||
update,
|
||||
remove
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user