CREATE DATABASE cmarket;
└cmarket이라는 데이터베이스 생성
mysql -u root -p < server/schema.sql -Dcmarket
└server 폴더의 schema.sql 파일을 통해 테이블 생성
mysql -u root -p < server/seed.sql -Dcmarket
└server 폴더의 seed.sql 파일을 통해 테이블에 데이터 저장
const models = require('../models');
module.exports = {
items: {
get: (req, res) => {
models.items.get((error, result) => {
if (error) {
res.status(500).send('Internal Server Error');
} else {
res.status(200).json(result);
}
});
},
},
orders: {
get: (req, res) => {
const userId = req.params.userId;
// TODO: 요청에 따른 적절한 응답을 돌려주는 컨트롤러를 작성하세요.
models.orders.get(userId, (err, result) => {
if (err) {
res.status(500).send('error')
}
else {
res.status(200).json(result)
}
});
},
post: (req, res) => {
const userId = req.params.userId;
const { orders, totalPrice } = req.body;
// TODO: 요청에 따른 적절한 응답을 돌려주는 컨트롤러를 작성하세요.
if(!orders || !totalPrice || !userId) {
return res.status(400).send('error');
}
else{
models.orders.post(userId, orders, totalPrice, (err, result) => {
if (err) {
return res.status(500).send('error')
}
else {
return res.status(201).json(result)
}
});
}
}
}
};
const db = require('../db');
module.exports = {
items: {
get: (callback) => {
// TODO: Cmarket의 모든 상품을 가져오는 함수를 작성하세요
const queryString = `SELECT * FROM items`;
db.query(queryString, (error, result) => {
callback(error, result);
});
},
},
orders: {
get: (userId, callback) => {
// TODO: 해당 유저가 작성한 모든 주문을 가져오는 함수를 작성하세요
const queryString = `select orders.id, name, image, price, total_price, order_quantity, created_at
from orders
left join users
on users.id = orders.user_id
left join order_items
on orders.id = order_items.order_id
left join items
on items.id = order_items.item_id
where users.id = ?;`
const params=[userId];
db.query(queryString, [params], (err, result) => {
callback(err, result)
})
},
post: (userId, orders, totalPrice, callback) => {
// TODO: 해당 유저의 주문 요청을 데이터베이스에 생성하는 함수를 작성하세요
const queryString = `INSERT INTO orders (user_id, total_price) VALUES ?;`
const params = [[userId, totalPrice]];
db.query(queryString, [params], (err, result) => {
if (result) {
const queryString2 = `insert into order_items (order_id, item_id, order_quantity) values ?;`;
const params2 = orders.map(el =>
[result.insertId, el.itemId, el.quantity]
)
return db.query(queryString2, [params2], (err, result) => {
callback(err, result)
});
}
callback(err, result)
});
},
},
};
const express = require('express');
const router = express.Router();
const itemsRouter = require('./items');
const usersRouter = require('./users')
// TODO: Endpoint에 따라 적절한 Router로 연결해야 합니다.
router.use('/items', itemsRouter);
router.use('/users', usersRouter);
module.exports = router;
const router = require('express').Router();
const controller = require('./../controllers');
// GET /items Router와 Controller를 연결합니다.
router.get('/:userId/orders', controller.orders.get);
router.post('/:userId/orders', controller.orders.post)
module.exports = router;