Skip to content

Commit

Permalink
[FEAT] #2 - 취업교육리스트목록 페이지네이션 구현
Browse files Browse the repository at this point in the history
  • Loading branch information
charBS0701 committed Jul 14, 2023
1 parent 5dc3996 commit b34b7e7
Show file tree
Hide file tree
Showing 4 changed files with 80 additions and 24 deletions.
45 changes: 35 additions & 10 deletions src/app/JobEdu/jobEduController.js
Original file line number Diff line number Diff line change
@@ -1,14 +1,39 @@
const jobEduProvider = require("./jobEduProvider");
const baseResponse = require("../../../config/baseResponseStatus");
const {response, errResponse} = require("../../../config/response");
const { response, errResponse } = require("../../../config/response");

export const getJobEduList = async (req, res) => {
try {
const jobEduListResult = await jobEduProvider.retrieveJobEduList();

return res.send(response(baseResponse.SUCCESS, jobEduListResult));
} catch (error) {
console.error(error);
return res.send(errResponse(baseResponse.DB_ERROR));
}
};
try {
// 페이지 크기
let perPage = req.query.perPage;
// 페이지 번호
let page = req.query.page;

// 페이지 크기가 없으면 10으로 설정
if (perPage == undefined || typeof perPage == "undefined" || perPage == null) {
perPage = 10;
} else {
perPage = parseInt(perPage);
}

// 페이지 번호가 없으면 0으로 설정
if (page == undefined || typeof page == "undefined" || page == null) {
page = 0;
} else {
page = parseInt(page);
}

const jobEduListResult = await jobEduProvider.retrieveJobEduList(perPage, page);

return res.send(response(baseResponse.SUCCESS, jobEduListResult));
} catch (error) {
console.error(error);
return res.send(errResponse(baseResponse.DB_ERROR));
}
};

export const getJobEduListCount = async (req, res) => {
const jobEduListCountResult = await jobEduProvider.retrieveJobEduListCount();

return res.send(response(baseResponse.SUCCESS, jobEduListCountResult));
};
21 changes: 17 additions & 4 deletions src/app/JobEdu/jobEduDao.js
Original file line number Diff line number Diff line change
@@ -1,16 +1,29 @@
const { logger } = require("../../../config/winston");
import pool from "../../../config/database";

export const selectJobEduList = async function () {
export const selectJobEduList = async function (perPage, offset) {
const query = `
select * from job_educations limit 3;
`;
SELECT * FROM job_educations ORDER BY posted_at DESC LIMIT ${perPage} OFFSET ${offset}`;

try {
const result = await pool.query(query);
return result;
return result.rows;
} catch (error) {
logger.error("쿼리 실패");
throw error;
}
};

export const selectJobEduListCount = async function () {
const query = `
select count(*) as total_count from job_educations;
`;

try {
const result = await pool.query(query);
return result;
} catch (error) {
logger.error("쿼리 실패");
throw error;
}
};
33 changes: 23 additions & 10 deletions src/app/JobEdu/jobEduProvider.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,26 @@ const jobEduDao = require("./jobEduDao");

const { logger } = require("../../../config/winston");

export const retrieveJobEduList = async function () {
try {
const result = await jobEduDao.selectJobEduList();
return result;
} catch (error) {
logger.error("DB 연결 실패");
throw error;
}
};

export const retrieveJobEduList = async function (perPage, page) {
try {
const offset = (page - 1) * perPage;
const result = await jobEduDao.selectJobEduList(perPage, offset);
return result;
} catch (error) {
logger.error("DB 연결 실패");
throw error;
}
};

// 취업지원 데이터 갯수 세는 함수
export const retrieveJobEduListCount = async function () {
try {
const result = await jobEduDao.selectJobEduListCount();

return parseInt(result.rows[0]["total_count"]);
} catch (error) {
logger.error("DB 연결 실패");
logger.error(error);
throw error;
}
};
5 changes: 5 additions & 0 deletions src/app/JobEdu/jobEduRoute.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,9 @@ module.exports = function(app){
// 1. 취업교육 목록 API
app.get('/app/jobEdu', jobEdu.getJobEduList);



// 취업지원 목록 개수 API
app.get('/app/jobEdu/count', jobEdu.getJobEduListCount)

};

0 comments on commit b34b7e7

Please sign in to comment.