# indexRoute.js
app.delete("/persons/:Person_ID", index.DeletePerson);
# indexController.js
## 컨트롤러에 DeletePerson함수 만들기
exports.DeletePerson = async function (req, res){
// indexRoute.js에서 "/persons/:Person_ID", 전달되 pass vars 뽑아내기
const {Person_ID} = req.params;
try {
const connection = await pool.getConnection(async (conn) => conn);
try{
const IsValidPersonId = await indexDao.IsValidPersonId(connection,Person_ID);
if(!IsValidPersonId){
return res.send({
isSuccess: false,
code: 410,
message: "유효한 인덱스가 아님당",
});
}
const [rows] = await indexDao.DeletePerson(connection, Person_ID)
return res.send({
result: rows,
isSuccess: true,
code: 200,
message: "사람 삭제 성공"
});
}catch(err){
logger.error(`Delete Query error\n: ${JSON.stringify(err)}`);
return false;
} finally {
connection.release();
}
} catch (err) {
logger.error(`deleteStatement DB Connection error\n: ${JSON.stringify(err)}`);
# indexDao.js
## 삭제 대상의 row는 status 컬럼에 D로 업데이트 해주기 & default값 설정
==> alter table person alter column status set default 'E';
## alter table person add status varchar(45);로 먼저 mysql 컬럼 추가
exports.DeletePerson = async function (connection, Person_ID){
const Query = `update person set status = "D" where Person_ID = ?;`;
const Params = [Person_ID];
const rows = await connection.query(Query, Params);
return rows;
};
return false;
}
}

Mysql에 확인해보기

한번더 같은 데이터를 삭제 해보자
삭제한 데이터인데 또 삭제 성공이라고 나온다

=====================================================================
fix하기 위해서 나 혼자 생각해본거?!
==> DeletePerson Query에 status = "E" 조건 주기?!
exports.DeletePerson = async function (connection, Person_ID){
const Query = `update person set status = "D" where Person_ID = ? and status = "E";`;
const Params = [Person_ID];
const rows = await connection.query(Query, Params);
return rows;
};
It doesn't work!
왜냐하면 controller에서 logic이 유효한 Person_ID 를 먼저 check하는데 IDX에
걸리지 않기 떄문에 
그냥 데이터값들을 return해준다. 따라서I Person_ID에서 오류가 나게 해야 한다.
try{
const IsValidPersonId = await indexDao.IsValidPersonId(connection,Person_ID);
if(!IsValidPersonId){
return res.send({
isSuccess: false,
code: 410,
message: "유효한 인덱스가 아님당",
});
}
const [rows] = await indexDao.DeletePerson(connection, Person_ID)
return res.send({
result: rows,
isSuccess: true,
code: 200,
message: "사람 삭제 성공"
});
따라서
# IndexDao.js
exports.IsValidPersonId = async function (connection,Person_ID) {
const Query = `SELECT * FROM person WHERE Person_ID =? and status = "E";`;
const Params = [Person_ID];
const [rows] = await connection.query(Query, Params);
// 왜냐하면은 db에 없는 id를 넣었을 경우는 빈 것이 return되기때문
if(rows < 1){
return false;
}
return true;
};

