
File name
Commit message
Commit date
2023-02-28
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
/**
* @author : 최정우
* @since : 2022.10.12
* @dscription : 테스트용 DB 접근을 담당하는 모듈 입니다.
*/
const TestMysqlDAO = (function () {
//Mysql DB Connection 객체 - private object(변수)
const MysqlConnection = require('../../../modules/db/mysql/MysqlConnection');
//public object
return {
/**
* @author : 최정우
* @since : 2022.09.20
* @dscription : 테스트 데이터 목록 조회
*/
testSelectList: function (param) {
return MysqlConnection.queryExcute('SELECT * FROM test_table', param);
//LIMIT Index(0부터), Perpage
//Index 계산 공식
//ex1 - Perpage:5) 1 -> 0, 2 -> 5, 3 -> 10, 4 -> 15
//ex2 - Perpage:10) 1 -> 0, 2 -> 10, 3 -> 20, 4 -> 30
//Index = (pageNumber - 1) * Perpage
},
/**
* @author : 최정우
* @since : 2022.09.20
* @dscription : 테스트 데이터 상세 조회
*/
testSelectOne: function (param) {
return MysqlConnection.queryExcute('SELECT * FROM test_table WHERE test_seq = ?', param);
},
/**
* @author : 최정우
* @since : 2022.09.20
* @dscription : 테스트 데이터 등록
*/
testInsertOne: function (param) {
return MysqlConnection.queryExcute(
//RETURNING <*||COLUMN NAME1,COLUMN NAME2,...> : 등록한 Data return 받는 기능
//ex1) RETURNING * : 모든 컬럼 다 return 함
//ex2) RETURNING name : 컬럼명이 'name'인 데이터만 return 함
`INSERT INTO test_table (
test_seq
, test_title
, test_content
, test_create_datetime
, test_create_user
) VALUES (
(SELECT IFNULL(MAX(a.test_seq), 0) + 1 FROM test_table a)
, ?
, ?
, NOW()
, 1
) RETURNING test_seq`,
param
);
},
/**
* @author : 최정우
* @since : 2022.09.20
* @dscription : 테스트 데이터 수정
*/
testUpdateOne: function (param) {
return MysqlConnection.queryExcute(
`UPDATE
test_table
SET
test_title = ?
, test_content = ?
, test_update_datetime = current_timestamp
, test_update_user = 1
WHERE
test_seq = ?`,
param
);
},
/**
* @author : 최정우
* @since : 2022.09.20
* @dscription : 테스트 데이터 삭제
*/
testDeleteOne: function (param) {
return MysqlConnection.queryExcute(
`DELETE
FROM
test_table
WHERE
test_seq = ?`,
param
);
},
/**
* @author : 최정우
* @since : 2022.09.20
* @dscription : 테스트 트랜젝션 처리
*
* 트랜잭션 작업 진행 시나리오
* 1. connection pool 한 개 받아오기
* 2. BEGIN(트랜잭션 시작 처리)
* 3. [※작업내용1] 데이터 등록
* 4. [※작업내용2] 등록한 데이터 수정
* 5. *작업 완료시, 실행(dispatch)한 모든 쿼리를 COMMIT(커밋)
* *에러 발생시, 실행(dispatch)한 모든 쿼리를 ROLLBACK(롤백)
* 6. 받아온 connection pool 반납(해제) - 필수(반납하지 않으면 해당 pool을 사용하는 query는 트랜잭션에 계속 매달려있음)
*/
testTransaction: function (param) {
return null;
},//testTransaction() end
}//return end
})();
//Module Export
module.exports = TestMysqlDAO;