Skip to content

Commit

Permalink
feat : 오답 포스트잇 라우터 분리
Browse files Browse the repository at this point in the history
  • Loading branch information
mic050r committed Dec 12, 2023
1 parent 32bac29 commit 06d888f
Show file tree
Hide file tree
Showing 4 changed files with 157 additions and 150 deletions.
147 changes: 2 additions & 145 deletions api.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ const bodyParser = require("body-parser");
const inquiriesRouter = require("./routes/inquiries"); // 문의 사항
const conceptRouter = require("./routes/concept"); // 개념 포스트잇
const quizRouter = require("./routes/quiz"); // 퀴즈 포스트잇
const worngRouter = require("./routes/wrong"); // 퀴즈 포스트잇

// 기본 설정
app.use(cors());
Expand All @@ -27,6 +28,7 @@ app.use("/style", express.static(__dirname + "/style"));
app.use("/inquiries", inquiriesRouter); // 문의사항 라우터
app.use("/concept", conceptRouter); // 개념 포스트잇 라우터
app.use("/quiz", quizRouter); // 개념 포스트잇 라우터
app.use("/wrong", worngRouter); // 개념 포스트잇 라우터

app.use(
express.static("public", {
Expand Down Expand Up @@ -164,151 +166,6 @@ app.get("/kakao/logout", async (req, res) => {
res.redirect(kakaoAuthURL);
});

// 오답 포스트잇 POST API 생성
app.post("/wrong", (req, res) => {
const { token, importance, description } = req.body;

// 데이터베이스 풀에서 연결 얻기
pool
.getConnection()
.then((conn) => {
// 데이터베이스에 데이터 삽입
conn
.query(
"INSERT INTO Wrong (token, importance, description) VALUES (?, ?, ?)",
[token, importance, description]
)
.then((result) => {
console.log("데이터가 성공적으로 삽입되었습니다.");
res.json({ message: "데이터가 성공적으로 삽입되었습니다." });
conn.release(); // 연결 반환
})
.catch((err) => {
console.error("데이터 삽입 오류:", err);
res.status(500).json({ error: "데이터 삽입 오류" });
conn.release(); // 연결 반환
});
})
.catch((err) => {
console.error("데이터베이스 연결 오류:", err);
res.status(500).json({ error: "데이터베이스 연결 오류" });
});
});

// 퀴즈 리스트 GET API 생성
app.get("/wrong-list", (req, res) => {
const { token } = req.query;

// 데이터베이스 풀에서 연결 얻기
pool
.getConnection()
.then((conn) => {
// 데이터베이스에서 데이터 조회
conn
.query("SELECT * FROM Wrong WHERE token = ?", [token])
.then((results) => {
if (results.length === 0) {
// 해당 토큰에 대한 데이터가 없을 경우
res.status(404).json({ error: "데이터를 찾을 수 없습니다." });
} else {
// 조회된 데이터를 배열로 묶어서 JSON 응답으로 반환
const data = results.map((result) => ({
description: result.description,
}));
res.json(data);
}
conn.release(); // 연결 반환
})
.catch((err) => {
console.error("데이터 조회 오류:", err);
res.status(500).json({ error: "데이터 조회 오류" });
conn.release(); // 연결 반환
});
})
.catch((err) => {
console.error("데이터베이스 연결 오류:", err);
res.status(500).json({ error: "데이터베이스 연결 오류" });
});
});

// 퀴즈 포스트잇 중요도 태그 별 GET API
app.get("/wrong-importance", (req, res) => {
const { token, importance } = req.query;

// 데이터베이스 풀에서 연결 얻기
pool
.getConnection()
.then((conn) => {
// 데이터베이스에서 데이터 조회
conn
.query("SELECT * FROM Wrong WHERE token = ? AND importance = ?", [
token,
importance,
])
.then((results) => {
if (results.length === 0) {
// 해당 조건에 맞는 데이터가 없을 경우
res.status(404).json({ error: "데이터를 찾을 수 없습니다." });
} else {
// 조회된 데이터를 배열로 묶어서 JSON 응답으로 반환
const data = results.map((result) => ({
description: result.description,
}));
res.json(data);
}
conn.release(); // 연결 반환
})
.catch((err) => {
console.error("데이터 조회 오류:", err);
res.status(500).json({ error: "데이터 조회 오류" });
conn.release(); // 연결 반환
});
})
.catch((err) => {
console.error("데이터베이스 연결 오류:", err);
res.status(500).json({ error: "데이터베이스 연결 오류" });
});
});

// 오답 중요도 별로 내림차순, 오름차순
app.get("/wrong-sort", (req, res) => {
const { token, order } = req.query;

// 데이터베이스 풀에서 연결 얻기
pool
.getConnection()
.then((conn) => {
// 데이터베이스에서 데이터 조회
const sqlQuery = `SELECT * FROM Wrong WHERE token = ? ORDER BY importance ${
order === "asc" ? "ASC" : "DESC"
}`;
conn
.query(sqlQuery, [token])
.then((results) => {
if (results.length === 0) {
// 해당 조건에 맞는 데이터가 없을 경우
res.status(404).json({ error: "데이터를 찾을 수 없습니다." });
} else {
// 조회된 데이터를 배열로 묶어서 JSON 응답으로 반환
const data = results.map((result) => ({
description: result.description,
}));
res.json(data);
}
conn.release(); // 연결 반환
})
.catch((err) => {
console.error("데이터 조회 오류:", err);
res.status(500).json({ error: "데이터 조회 오류" });
conn.release(); // 연결 반환
});
})
.catch((err) => {
console.error("데이터베이스 연결 오류:", err);
res.status(500).json({ error: "데이터베이스 연결 오류" });
});
});

app.listen(port, () => {
console.log(`서버가 포트 ${port}에서 실행 중입니다.`);
});
6 changes: 3 additions & 3 deletions public/category(wronganswer).html
Original file line number Diff line number Diff line change
Expand Up @@ -139,19 +139,19 @@
// 서버에서 오답 목록을 가져와 초기 데이터 로딩
async function fetchWrongList() {
await getToken();
fetchData("/wrong-list");
fetchData("/wrong/list");
}

// 중요도에 따라 오답을 가져오는 함수
async function fetchWrongImportance(importance) {
await getToken();
fetchData("/wrong-importance", "", importance);
fetchData("/wrong/importance", "", importance);
}

// 중요도 정렬에 따라 오답을 가져오는 함수
async function fetchWrongSort(order) {
await getToken();
fetchData("/wrong-sort", order);
fetchData("/wrong/sort", order);
}

// 페이지 로드 시 초기 데이터 로딩
Expand Down
4 changes: 2 additions & 2 deletions routes/concept.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ router.post("/", (req, res) => {
});
});

// 퀴즈 리스트 GET API 생성
// 개념 리스트 GET API 생성
router.get("/list", (req, res) => {
const { token } = req.query;

Expand Down Expand Up @@ -69,7 +69,7 @@ router.get("/list", (req, res) => {
});
});

// 퀴즈 포스트잇 중요도 태그 별 GET API
// 개념 포스트잇 중요도 태그 별 GET API
router.get("/importance", (req, res) => {
const { token, importance } = req.query;

Expand Down
150 changes: 150 additions & 0 deletions routes/wrong.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,150 @@
const express = require("express");
const router = express.Router();
const pool = require("../db/conn"); // 데이터베이스 연결 모듈 가져오기

// 오답 포스트잇 POST API 생성
router.post("/", (req, res) => {
const { token, importance, description } = req.body;

// 데이터베이스 풀에서 연결 얻기
pool
.getConnection()
.then((conn) => {
// 데이터베이스에 데이터 삽입
conn
.query(
"INSERT INTO Wrong (token, importance, description) VALUES (?, ?, ?)",
[token, importance, description]
)
.then((result) => {
console.log("데이터가 성공적으로 삽입되었습니다.");
res.json({ message: "데이터가 성공적으로 삽입되었습니다." });
conn.release(); // 연결 반환
})
.catch((err) => {
console.error("데이터 삽입 오류:", err);
res.status(500).json({ error: "데이터 삽입 오류" });
conn.release(); // 연결 반환
});
})
.catch((err) => {
console.error("데이터베이스 연결 오류:", err);
res.status(500).json({ error: "데이터베이스 연결 오류" });
});
});

// 퀴즈 리스트 GET API 생성
router.get("/list", (req, res) => {
const { token } = req.query;

// 데이터베이스 풀에서 연결 얻기
pool
.getConnection()
.then((conn) => {
// 데이터베이스에서 데이터 조회
conn
.query("SELECT * FROM Wrong WHERE token = ?", [token])
.then((results) => {
if (results.length === 0) {
// 해당 토큰에 대한 데이터가 없을 경우
res.status(404).json({ error: "데이터를 찾을 수 없습니다." });
} else {
// 조회된 데이터를 배열로 묶어서 JSON 응답으로 반환
const data = results.map((result) => ({
description: result.description,
}));
res.json(data);
}
conn.release(); // 연결 반환
})
.catch((err) => {
console.error("데이터 조회 오류:", err);
res.status(500).json({ error: "데이터 조회 오류" });
conn.release(); // 연결 반환
});
})
.catch((err) => {
console.error("데이터베이스 연결 오류:", err);
res.status(500).json({ error: "데이터베이스 연결 오류" });
});
});

// 퀴즈 포스트잇 중요도 태그 별 GET API
router.get("/importance", (req, res) => {
const { token, importance } = req.query;

// 데이터베이스 풀에서 연결 얻기
pool
.getConnection()
.then((conn) => {
// 데이터베이스에서 데이터 조회
conn
.query("SELECT * FROM Wrong WHERE token = ? AND importance = ?", [
token,
importance,
])
.then((results) => {
if (results.length === 0) {
// 해당 조건에 맞는 데이터가 없을 경우
res.status(404).json({ error: "데이터를 찾을 수 없습니다." });
} else {
// 조회된 데이터를 배열로 묶어서 JSON 응답으로 반환
const data = results.map((result) => ({
description: result.description,
}));
res.json(data);
}
conn.release(); // 연결 반환
})
.catch((err) => {
console.error("데이터 조회 오류:", err);
res.status(500).json({ error: "데이터 조회 오류" });
conn.release(); // 연결 반환
});
})
.catch((err) => {
console.error("데이터베이스 연결 오류:", err);
res.status(500).json({ error: "데이터베이스 연결 오류" });
});
});

// 오답 중요도 별로 내림차순, 오름차순
router.get("/sort", (req, res) => {
const { token, order } = req.query;

// 데이터베이스 풀에서 연결 얻기
pool
.getConnection()
.then((conn) => {
// 데이터베이스에서 데이터 조회
const sqlQuery = `SELECT * FROM Wrong WHERE token = ? ORDER BY importance ${
order === "asc" ? "ASC" : "DESC"
}`;
conn
.query(sqlQuery, [token])
.then((results) => {
if (results.length === 0) {
// 해당 조건에 맞는 데이터가 없을 경우
res.status(404).json({ error: "데이터를 찾을 수 없습니다." });
} else {
// 조회된 데이터를 배열로 묶어서 JSON 응답으로 반환
const data = results.map((result) => ({
description: result.description,
}));
res.json(data);
}
conn.release(); // 연결 반환
})
.catch((err) => {
console.error("데이터 조회 오류:", err);
res.status(500).json({ error: "데이터 조회 오류" });
conn.release(); // 연결 반환
});
})
.catch((err) => {
console.error("데이터베이스 연결 오류:", err);
res.status(500).json({ error: "데이터베이스 연결 오류" });
});
});

module.exports = router;

0 comments on commit 06d888f

Please sign in to comment.