

const bookDetail = (req, res) => {
let { id } = req.params;
let sql = `SELECT * FROM books LEFT JOIN category
ON books.category_id = category.id WHERE books.id = ?`;
conn.query(sql, id,
(err, results)=> {
if (err) {
console.log(err);
return res.status(StatusCodes.BAD_REQUEST).end();
}
if (results[0])
return res.status(StatusCodes.OK).json(results[0]);
else
return res.status(StatusCodes.NOT_FOUND).end();
}
)
};
DATE_ADD(기준 날짜, INTERVAL)
SELECT DATE_ADD(NOW(), INTERVAL 1 MONTH)
// 2024-11-07
DATE_SUB(기준 날짜, INTERVAL)
SELECT DATE_SUB(NOW(), INTERVAL 1 MONTH)
// 2024 09 07
SELECT * FROM books WHERE pub_date BETWEEN DATE_SUB(NOW(),INTERVAL 1 MONTH) AND NOW();
const allBooks = (req, res) => {
let { category_id, news } = req.query;
let sql = `SELECT * FROM books`;
let values = [];
if (category_id && news) {
sql += " WHERE category_id = ? AND pub_date BETWEEN DATE_SUB(NOW(),INTERVAL 1 MONTH) AND NOW()";
values = [category_id, news];
}
else if (category_id) {
sql += " WHERE category_id = ?";
values = category_id;
}
else if (news) {
sql += " WHERE pub_date BETWEEN DATE_SUB(NOW(),INTERVAL 1 MONTH) AND NOW()"
values = news;
}
conn.query(sql, values,
(err, results)=> {
if (err) {
console.log(err);
return res.status(StatusCodes.BAD_REQUEST).end();
}
if (results.length)
return res.status(StatusCodes.OK).json(results);
else
return res.status(StatusCodes.NOT_FOUND).end();
}
)
};
페이징 : 몇개씩 보여줄까?
LIMIT, OFFSET 키워드를 사용하자
LIMIT : 몇개씩 보여줄것인가
OFFSET: 시작 지점
SELECT * FROM books LIMIT 3 OFFSET 0; //-> 0, 1, 2 3개 보여주게된다.
const allBooks = (req, res) => {
let { category_id, news, limit, currentPage } = req.query;
// limit : page당 도서 수 ex 3
// currentPage : 현재 몇 페이지 ex 1, 2, 3...
// offset : ex 0, 3, 6, 9, 12 ...
// limit * (currentPage-1)
let offset = limit * (currentPage - 1);
let sql = `SELECT * FROM books LIMIT ? OFFSET ?`;
let values = [parseInt(limit), offset];
if (category_id && news) {
sql += " WHERE category_id = ? AND pub_date BETWEEN DATE_SUB(NOW(),INTERVAL 1 MONTH) AND NOW()";
values.push(category_id, news);
}
else if (category_id) {
sql += " WHERE category_id = ?";
values.push(category_id);
}
else if (news) {
sql += " WHERE pub_date BETWEEN DATE_SUB(NOW(),INTERVAL 1 MONTH) AND NOW()"
values.push(news);
}
conn.query(sql, values,
(err, results)=> {
if (err) {
console.log(err);
return res.status(StatusCodes.BAD_REQUEST).end();
}
if (results.length)
return res.status(StatusCodes.OK).json(results);
else
return res.status(StatusCodes.NOT_FOUND).end();
}
)
};
const conn = require('../mariadb');
const { StatusCodes } = require('http-status-codes');
const dotenv = require('dotenv');
dotenv.config();
const allBooks = (req, res) => {
let { category_id, news, limit, currentPage } = req.query;
// limit : page당 도서 수 ex 3
// currentPage : 현재 몇 페이지 ex 1, 2, 3...
// offset : ex 0, 3, 6, 9, 12 ...
// limit * (currentPage-1)
let offset = limit * (currentPage - 1);
let sql = `SELECT * FROM books`;
let values = [];
if (category_id && news) {
sql += " WHERE category_id = ? AND pub_date BETWEEN DATE_SUB(NOW(),INTERVAL 1 MONTH) AND NOW()";
values= [category_id];
}
else if (category_id) {
sql += " WHERE category_id = ?";
values = [category_id];
}
else if (news) {
sql += " WHERE pub_date BETWEEN DATE_SUB(NOW(),INTERVAL 1 MONTH) AND NOW()"
}
sql += " LIMIT ? OFFSET ?";
values.push(parseInt(limit), offset);
conn.query(sql, values,
(err, results)=> {
if (err) {
console.log(err);
return res.status(StatusCodes.BAD_REQUEST).end();
}
if (results.length)
return res.status(StatusCodes.OK).json(results);
else
return res.status(StatusCodes.NOT_FOUND).end();
}
)
};
const bookDetail = (req, res) => {
let { id } = req.params;
let sql = `SELECT * FROM books LEFT JOIN category
ON books.category_id = category.id WHERE books.id = ?`;
conn.query(sql, id,
(err, results)=> {
if (err) {
console.log(err);
return res.status(StatusCodes.BAD_REQUEST).end();
}
if (results[0])
return res.status(StatusCodes.OK).json(results[0]);
else
return res.status(StatusCodes.NOT_FOUND).end();
}
)
};
module.exports = {
allBooks,
bookDetail,
};