theater.controller.js 2.9 KB
Newer Older
Kim, Subin's avatar
Kim, Subin committed
1
import { Theater, TheaterType } from "../db/index.js";
Kim, Subin's avatar
theater    
Kim, Subin committed
2

Kim, Subin's avatar
Kim, Subin committed
3
4
5
6
7
8
9
10
11
12
13
14
15
const getTheaterInfo = async (req, res) => {
    const { theaterName } = req.body
    try {
        const theaterInfo = await Theater.findOne({
            where: { theaterName: String(theaterName) },
            attributes: ['theaterName', 'rows', 'columns']
        })
        // console.log("theaterInfo====",theaterInfo)
        return res.json(theaterInfo)
    } catch (error){
        console.log(error)
    }
}
Kim, Subin's avatar
theater    
Kim, Subin committed
16
17
const getAll = async (req, res) => {
    try {
18
        const findList = await Theater.findAll({ attributes: { exclude: ['createdAt', 'updatedAt'] }, include: [TheaterType], order: [['theaterName']] })
Kim, Subin's avatar
theater    
Kim, Subin committed
19
20
21
22
23
24
        return res.json(findList)
    } catch (error) {
        return res.status(500).send(error.message || "상영관 정보 가져오는 중 에러 발생")
    }
}

Kim, Subin's avatar
Kim, Subin committed
25
26
27
const getOne = async (req, res) => {
    try {
        const { theaterId } = req.params
28
        const find = await Theater.findOne({ where: { id: theaterId }, attributes: { exclude: ['createdAt', 'updatedAt'] } })
Kim, Subin's avatar
Kim, Subin committed
29
30
31
32
33
34
35
        if (!find) throw new Error("해당 정보를 찾지 못했습니다.");
        return res.json(find)
    } catch (error) {
        return res.status(500).send(error.message || "상영관 정보 가져오는 중 에러 발생")
    }
}

Kim, Subin's avatar
theater    
Kim, Subin committed
36
37
const getTypes = async (req, res) => {
    try {
Kim, Subin's avatar
Kim, Subin committed
38
        const findTypes = await TheaterType.findAll({ attributes: { exclude: ['createdAt', 'updatedAt'] } })
Kim, Subin's avatar
theater    
Kim, Subin committed
39
40
41
42
43
44
45
46
        return res.json(findTypes)
    } catch (error) {
        return res.status(500).send(error.message || "상영관 정보 가져오는 중 에러 발생")
    }
}

const submit = async (req, res) => {
    try {
Kim, Subin's avatar
Kim, Subin committed
47
        const { id, theatertypeId, theaterName, rows, columns } = req.body
Kim, Subin's avatar
theater    
Kim, Subin committed
48
        let response = null
Kim, Subin's avatar
Kim, Subin committed
49
        if (id) response = await Theater.update({ theatertypeId, theaterName, rows, columns }, { where: { id: id } })
50
51
52
53
54
55
56
57
        else {
            const result = await Theater.findOrCreate({
                where: { theaterName: theaterName },
                defaults: { theatertypeId, theaterName, rows, columns }
            })
            if (!result[1]) throw new Error("이미 존재하는 이름의 상영관입니다. 다시 등록해주세요.");
            else response = result[0]
        }
Kim, Subin's avatar
theater    
Kim, Subin committed
58
59
60
61
62
63
64
65
        return res.json(response)
    } catch (error) {
        return res.status(500).send(error.message || "상영관 정보 저장 중 에러 발생")
    }
}

const remove = async (req, res) => {
    try {
Kim, Subin's avatar
Kim, Subin committed
66
67
68
69
        const { theaterId } = req.params
        const delNum = await Theater.destroy({ where: { id: theaterId } })
        if (delNum) res.json(delNum)
        else throw new Error("해당 정보를 서버에서 삭제하는데 실패했습니다.");
Kim, Subin's avatar
theater    
Kim, Subin committed
70
71
72
73
74
75
76
    } catch (error) {
        return res.status(500).send(error.message || "상영관 정보 삭제 중 에러 발생")
    }
}

export default {
    getAll,
Kim, Subin's avatar
Kim, Subin committed
77
    getOne,
Kim, Subin's avatar
theater    
Kim, Subin committed
78
79
    getTypes,
    submit,
Kim, Subin's avatar
Kim, Subin committed
80
81
82
    remove,
    getTheaterInfo
}