79 lines
1.9 KiB
JavaScript
79 lines
1.9 KiB
JavaScript
|
|
import express from "express";
|
||
|
|
import pool from "../lib/db.js";
|
||
|
|
|
||
|
|
const router = express.Router();
|
||
|
|
|
||
|
|
// 공개 일정 목록 조회
|
||
|
|
router.get("/", async (req, res) => {
|
||
|
|
try {
|
||
|
|
const [schedules] = await pool.query(`
|
||
|
|
SELECT
|
||
|
|
s.id,
|
||
|
|
s.title,
|
||
|
|
s.description,
|
||
|
|
s.date,
|
||
|
|
s.time,
|
||
|
|
s.category_id,
|
||
|
|
s.source_url,
|
||
|
|
s.location_name,
|
||
|
|
c.name as category_name,
|
||
|
|
c.color as category_color
|
||
|
|
FROM schedules s
|
||
|
|
LEFT JOIN schedule_categories c ON s.category_id = c.id
|
||
|
|
ORDER BY s.date DESC, s.time DESC
|
||
|
|
`);
|
||
|
|
|
||
|
|
res.json(schedules);
|
||
|
|
} catch (error) {
|
||
|
|
console.error("일정 목록 조회 오류:", error);
|
||
|
|
res.status(500).json({ error: "일정 목록 조회 중 오류가 발생했습니다." });
|
||
|
|
}
|
||
|
|
});
|
||
|
|
|
||
|
|
// 카테고리 목록 조회
|
||
|
|
router.get("/categories", async (req, res) => {
|
||
|
|
try {
|
||
|
|
const [categories] = await pool.query(`
|
||
|
|
SELECT id, name, color, sort_order
|
||
|
|
FROM schedule_categories
|
||
|
|
ORDER BY sort_order ASC
|
||
|
|
`);
|
||
|
|
|
||
|
|
res.json(categories);
|
||
|
|
} catch (error) {
|
||
|
|
console.error("카테고리 조회 오류:", error);
|
||
|
|
res.status(500).json({ error: "카테고리 조회 중 오류가 발생했습니다." });
|
||
|
|
}
|
||
|
|
});
|
||
|
|
|
||
|
|
// 개별 일정 조회
|
||
|
|
router.get("/:id", async (req, res) => {
|
||
|
|
try {
|
||
|
|
const { id } = req.params;
|
||
|
|
|
||
|
|
const [schedules] = await pool.query(
|
||
|
|
`
|
||
|
|
SELECT
|
||
|
|
s.*,
|
||
|
|
c.name as category_name,
|
||
|
|
c.color as category_color
|
||
|
|
FROM schedules s
|
||
|
|
LEFT JOIN schedule_categories c ON s.category_id = c.id
|
||
|
|
WHERE s.id = ?
|
||
|
|
`,
|
||
|
|
[id]
|
||
|
|
);
|
||
|
|
|
||
|
|
if (schedules.length === 0) {
|
||
|
|
return res.status(404).json({ error: "일정을 찾을 수 없습니다." });
|
||
|
|
}
|
||
|
|
|
||
|
|
res.json(schedules[0]);
|
||
|
|
} catch (error) {
|
||
|
|
console.error("일정 조회 오류:", error);
|
||
|
|
res.status(500).json({ error: "일정 조회 중 오류가 발생했습니다." });
|
||
|
|
}
|
||
|
|
});
|
||
|
|
|
||
|
|
export default router;
|