diff --git a/index.js b/index.js index ddc2169..1412347 100644 --- a/index.js +++ b/index.js @@ -7,6 +7,7 @@ import { authRouter } from './src/routes/auth.route' import { placeRouter } from './src/routes/place.route' import { archiveRouter } from './src/routes/archive.route' import { userRouter } from './src/routes/user.route' +import { complainRouter } from './src/routes/complain.route' const app = express() const port = 3000 @@ -16,6 +17,7 @@ app.use('/auth', authRouter) app.use('/place', placeRouter) app.use('/archive', archiveRouter) app.use('/user', userRouter) +app.use('/complain', complainRouter) app.use('/output', (req, res) => { res.sendFile(__dirname + '/logs/pm2/myplace.ouput-0.log') }) diff --git a/src/controllers/complain.controller.js b/src/controllers/complain.controller.js new file mode 100644 index 0000000..08e07d4 --- /dev/null +++ b/src/controllers/complain.controller.js @@ -0,0 +1,14 @@ +import { response } from '../../config/response.js' +import { status } from '../../config/response.status.js' +import { postComplainPlaceService } from '../services/complain.service.js' + +export const complainPlaceController = async (req, res) => { + console.log('유저가 장소 신고를 요청하였습니다') + try { + const result = await postComplainPlaceService(req, res) + res.send(response(status.SUCCESS, result)) + } catch (error) { + console.log('POST COMPLAIN CTRL ERR: ', error) + res.send(response(status.BAD_REQUEST, null)) + } +} diff --git a/src/models/complain.dao.js b/src/models/complain.dao.js new file mode 100644 index 0000000..2a4a794 --- /dev/null +++ b/src/models/complain.dao.js @@ -0,0 +1,34 @@ +import { pool } from '../../config/db.config' +import { BaseError } from '../../config/error' +import { status } from '../../config/response.status' + +import { insertPlaceComplain } from './complain.sql' +import { selectPlace } from './place.sql' + +export const postComplainPlace = async (req, res) => { + const conn = await pool.getConnection() + + const { placeId } = req.params + const { content } = req.body + const userId = 1 //임시로 1로 설정 + + // 해당 placeId가 존재하는지 확인 + const place = await conn.query(selectPlace, placeId) + if (place[0].length === 0) { + console.log('장소가 존재하지 않음') + throw new BaseError(status.PARAMETER_IS_WRONG) + } + + try { + const result = await conn.query(insertPlaceComplain, [ + userId, + placeId, + content, + ]) + conn.release() + return { placeId: parseInt(placeId) } + } catch (error) { + console.log(error) + throw new BaseError(status.PARAMETER_IS_WRONG) + } +} diff --git a/src/models/complain.sql.js b/src/models/complain.sql.js new file mode 100644 index 0000000..a16d2ac --- /dev/null +++ b/src/models/complain.sql.js @@ -0,0 +1,2 @@ +export const insertPlaceComplain = ` + INSERT INTO complain (user_id, place_id, content) VALUES (?, ?, ?);` diff --git a/src/routes/complain.route.js b/src/routes/complain.route.js new file mode 100644 index 0000000..dfac153 --- /dev/null +++ b/src/routes/complain.route.js @@ -0,0 +1,6 @@ +import express from 'express' +import { complainPlaceController } from '../controllers/complain.controller' + +export const complainRouter = express.Router({ mergeParams: true }) + +complainRouter.post('/place/:placeId', complainPlaceController) diff --git a/src/services/complain.service.js b/src/services/complain.service.js new file mode 100644 index 0000000..1a75d55 --- /dev/null +++ b/src/services/complain.service.js @@ -0,0 +1,13 @@ +import { BaseError } from '../../config/error' +import { status } from '../../config/response.status' + +import { postComplainPlace } from '../models/complain.dao' + +export const postComplainPlaceService = async (req, res) => { + try { + const result = await postComplainPlace(req, res) + return result + } catch (err) { + throw new BaseError(status.PARAMETER_IS_WRONG) + } +}