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 97bc6b1 commit 32bac29
Show file tree
Hide file tree
Showing 3 changed files with 160 additions and 152 deletions.
153 changes: 4 additions & 149 deletions api.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,9 @@ const qs = require("qs");
const passport = require("passport");

const bodyParser = require("body-parser");
const inquiriesRouter = require("./routes/inquiries"); // Import inquiries router
const conceptRouter = require("./routes/concept"); // Import concept router
const inquiriesRouter = require("./routes/inquiries"); // 문의 사항
const conceptRouter = require("./routes/concept"); // 개념 포스트잇
const quizRouter = require("./routes/quiz"); // 퀴즈 포스트잇

// 기본 설정
app.use(cors());
Expand All @@ -25,6 +26,7 @@ app.use("/style", express.static(__dirname + "/style"));

app.use("/inquiries", inquiriesRouter); // 문의사항 라우터
app.use("/concept", conceptRouter); // 개념 포스트잇 라우터
app.use("/quiz", quizRouter); // 개념 포스트잇 라우터

app.use(
express.static("public", {
Expand Down Expand Up @@ -193,74 +195,6 @@ app.post("/wrong", (req, res) => {
});
});

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

// 데이터베이스 풀에서 연결 얻기
pool
.getConnection()
.then((conn) => {
// 데이터베이스에 데이터 삽입
conn
.query(
"INSERT INTO Quiz (token, importance, question, description) VALUES (?, ?, ?, ?)",
[token, importance, question, 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("/quiz-list", (req, res) => {
const { token } = req.query;

// 데이터베이스 풀에서 연결 얻기
pool
.getConnection()
.then((conn) => {
// 데이터베이스에서 데이터 조회
conn
.query("SELECT * FROM Quiz WHERE token = ?", [token])
.then((results) => {
if (results.length === 0) {
// 해당 토큰에 대한 데이터가 없을 경우
res.status(404).json({ error: "데이터를 찾을 수 없습니다." });
} else {
// 조회된 데이터를 배열로 묶어서 JSON 응답으로 반환
const data = results.map((result) => ({
question: result.question,
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-list", (req, res) => {
const { token } = req.query;
Expand Down Expand Up @@ -336,46 +270,6 @@ app.get("/wrong-importance", (req, res) => {
});
});

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

// 데이터베이스 풀에서 연결 얻기
pool
.getConnection()
.then((conn) => {
// 데이터베이스에서 데이터 조회
conn
.query("SELECT * FROM Quiz WHERE token = ? AND importance = ?", [
token,
importance,
])
.then((results) => {
if (results.length === 0) {
// 해당 조건에 맞는 데이터가 없을 경우
res.status(404).json({ error: "데이터를 찾을 수 없습니다." });
} else {
// 조회된 데이터를 배열로 묶어서 JSON 응답으로 반환
const data = results.map((result) => ({
question: result.question,
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;
Expand Down Expand Up @@ -415,45 +309,6 @@ app.get("/wrong-sort", (req, res) => {
});
});

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

// 데이터베이스 풀에서 연결 얻기
pool
.getConnection()
.then((conn) => {
// 데이터베이스에서 데이터 조회
const sqlQuery = `SELECT * FROM Quiz 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) => ({
question: result.question,
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(quiz).html
Original file line number Diff line number Diff line change
Expand Up @@ -162,19 +162,19 @@
// 서버에서 퀴즈 목록을 가져와 초기 데이터 로딩
async function fetchQuizList() {
await getToken();
fetchData("/quiz-list");
fetchData("/quiz/list");
}

// 중요도에 따라 퀴즈를 가져오는 함수
async function fetchQuizImportance(importance) {
await getToken();
fetchData("/quiz-importance", "", importance);
fetchData("/quiz/importance", "", importance);
}

// 중요도 정렬에 따라 퀴즈를 가져오는 함수
async function fetchQuizSort(order) {
await getToken();
fetchData("/quiz-sort", order);
fetchData("/quiz/sort", order);
}

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

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

// 데이터베이스 풀에서 연결 얻기
pool
.getConnection()
.then((conn) => {
// 데이터베이스에 데이터 삽입
conn
.query(
"INSERT INTO Quiz (token, importance, question, description) VALUES (?, ?, ?, ?)",
[token, importance, question, 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 Quiz WHERE token = ?", [token])
.then((results) => {
if (results.length === 0) {
// 해당 토큰에 대한 데이터가 없을 경우
res.status(404).json({ error: "데이터를 찾을 수 없습니다." });
} else {
// 조회된 데이터를 배열로 묶어서 JSON 응답으로 반환
const data = results.map((result) => ({
question: result.question,
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 Quiz WHERE token = ? AND importance = ?", [
token,
importance,
])
.then((results) => {
if (results.length === 0) {
// 해당 조건에 맞는 데이터가 없을 경우
res.status(404).json({ error: "데이터를 찾을 수 없습니다." });
} else {
// 조회된 데이터를 배열로 묶어서 JSON 응답으로 반환
const data = results.map((result) => ({
question: result.question,
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 Quiz 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) => ({
question: result.question,
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 32bac29

Please sign in to comment.