ku.controller.js 4.33 KB
Newer Older
1
import { KU } from "../db/index.js";
2
import sequelize from 'sequelize';
3

4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
const { Op } = sequelize

const findbyId = async (req, res, next) => {
    try {
        const id = req.scheduleId
        if (id) {
            const findSchedule = await KU.findOne({ where: { id: id } })
            if (!findSchedule) throw new Error("해당 일정을 찾지 못했습니다.")
            else {
                const { title, start, end, memo } = findSchedule
                const startDate = dateToString(start, "full")
                const endDate = dateToString(end, "full")
                req.schedule = { title, startDate: startDate, endDate: endDate, memo }
            }
            next()
        } else next()
    } catch (error) {
        return res.status(500).send(error.message || "일정 가져오는 중 에러 발생")
    }
}

const findbyDate = async (req, res, next) => {
26
    try {
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
        if (req.date) {
            const date = new Date(req.date)
            const findList = await KU.findAll({
                where: {
                    [Op.and]: [
                        {
                            start: {
                                [Op.lte]: date
                            }
                        }, {
                            end: {
                                [Op.gte]: date
                            }
                        }
                    ]
                },
                order: [['updatedAt', 'DESC']]
            })
            findList.forEach(schedule => {
                schedule.dataValues.start = dateToString(schedule.start, "twoYear")
                schedule.dataValues.end = dateToString(schedule.end, "twoYear")
            })
            req.scheduleList = findList
            next()
        } else next()
    } catch (error) {
        return res.status(500).send(error.message || "일정 가져오는 중 에러 발생")
    }
}
56

57
58
59
60
61
62
63
const create = async (req, res) => {
    try {
        const { title, startDate, endDate, memo } = req.body
        const start = new Date(startDate)
        const end = new Date(endDate)
        const newSchedule = await KU.create({ title: title, start: start, end: end, memo: memo })
        return res.json(newSchedule)
64
65
66
67
68
69
70
    } catch (error) {
        return res.status(500).send(error.message || "일정 등록 중 에러 발생")
    }
}

const edit = async (req, res) => {
    try {
71
72
73
74
75
        const { scheduleId } = req.query
        const { title, startDate, endDate, memo } = req.body
        const updated = await KU.update({ title: title, start: startDate, end: endDate, memo: memo }, { where: { id: scheduleId } })
        if (!updated) throw new Error("해당 일정의 일부 정보를 수정하는데 실패하였습니다.")
        else return res.send(200)
76
77
78
79
80
81
82
    } catch (error) {
        return res.status(500).send(error.message || "일정 수정 중 에러 발생")
    }
}

const remove = async (req, res) => {
    try {
83
84
85
86
        const { scheduleId } = req.query
        const deleted = await KU.destroy({ where: { id: scheduleId } })
        if (!deleted) throw new Error("해당 일정을 삭제하는데 실패하였습니다.")
        else return res.send(200)
87
88
89
90
91
    } catch (error) {
        return res.status(500).send(error.message || "일정 삭제 중 에러 발생")
    }
}

92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
const querySeparation = async (req, res, next) => {
    try {
        const { scheduleId, date } = req.query
        req.scheduleId = scheduleId
        req.date = date
        next()
    } catch (error) {
        return res.status(500).send(error.message || "일정 가져오는 중 에러 발생")
    }
}

const send = async (req, res) => {
    try {
        const result = req.schedule || req.scheduleList
        return res.json(result)
    } catch (error) {
        return res.status(500).send(error.message || "일정 가져오는 중 에러 발생")
    }
}

function dateToString(dateObj, method) {
    const year = dateObj.getFullYear()
    const year_disit = String(year).substring(2, 4)
    const month = dateObj.getMonth() + 1
    const date = dateObj.getDate()

    if (method === "full") return [year, (month > 9 ? "" : "0") + month, (date > 9 ? "" : "0") + date].join("-")
    else if (method === "twoYear") return [year_disit, (month > 9 ? "" : "0") + month, (date > 9 ? "" : "0") + date].join("-")
}

122
export default {
123
124
    findbyId,
    findbyDate,
125
126
    create,
    edit,
127
128
129
    remove,
    querySeparation,
    send
130
}