본문 바로가기

내일 배움 캠프/kiosk

kiosk 1일차 7/25 프로젝트 세팅

728x90

1. npm install express mysql2 sequelize dotenv

2. npm install -D sequelize-cli nodemon prettier

3. npx sequelize init 

4. 최상위 폴더에 prettierrc.js 만들기

//prettierrc.js
module.exports = {
  singleQuote: true,
  semi: true,
  useTabs: false,
  tabWidth: 2,
  trailingComma: 'all',
  printWidth: 80,
  arrowParens: 'avoid',
};

7. .env 생성하기

MYSQL_USERNAME= 
MYSQL_PASSWORD= 
MYSQL_DATABASE= 
MYSQL_HOST=

HOST = 127.0.0.1
PORT = 3000

8. .gitignore 생성

node_modules/
.env

9. app.js 생성

import express from 'express';

export class ExpressApp {
  app = express();

  constructor() {
    this.setAppSettings();
  }

  setAppSettings = () => {
    this.app.use(express.json());
  };
}

10. init.js 생성

import dotenv from 'dotenv';
import Http from 'http';
import { ExpressApp } from './app.js';
import sequelize from './db/sequelize.js';

dotenv.config();

export class Server {
  expressApp = new ExpressApp();
  httpServer;

  constructor() {
    this.httpServer = new Http.Server(this.expressApp.app);
  }

  databaseConnection = () => {
    return this.sequelizeAuthenticate().then(this.sequelizeSync);
  };

  sequelizeAuthenticate = () => {
    // test connection
    return sequelize.authenticate();
  };

  sequelizeSync = () => {
    return sequelize.sync({ force: false });
  };

  runServer = async () => {
    try {
      await this.databaseConnection();
      return this.serverListen();
    } catch (e) {
      return this.serverErrorHandler(e);
    }
  };

  serverListen = () => {
    const { PORT: port, HOST: host } = process.env;
    return this.httpServer.listen(port, () => {
      console.log(`Server is running on: http://${host}:${port}`);
    });
  };

  serverErrorHandler = error => {
    console.log('Server run error: ', error.message);
  };
}

const server = new Server();

server.runServer();

11. models 지우고 db파일 생성

12. db/sequelize.js

import { Sequelize } from 'sequelize';
import dotenv from 'dotenv';

dotenv.config();
const env = process.env;

const sequelize = new Sequelize({
  username: env.MYSQL_USERNAME,
  password: env.MYSQL_PASSWORD,
  database: env.MYSQL_DATABASE,
  host: env.MYSQL_HOST,
  dialect: 'mysql',
});

export default sequelize;

13. routes, controllers, services, repositories 디렉토리 생성

 

14. API 정하기 : README.md

items

상품 추가 API  
POST api/items

상품 옵션 추가 API
POST api/items/options

상품 조회 API 
GET api/items

상품 삭제 API 
DELETE api/items/1

상품 수정 API 
PATCH api/items/1



orders

상품 발주 API
POST api/orders

발주 상태 수정 API
PATCH api/orders/1


receipts

상품 주문 API
POST api/receipts

상품 주문 수정 API
PATCH api/receipts/1

 

'내일 배움 캠프 > kiosk' 카테고리의 다른 글

kiosk 6일차 8/1 주문 관리 (2)  (0) 2023.07.28
kiosk 5일차 7/31 주문 관리  (0) 2023.07.28
kiosk 4일차 7/28 상품 발주  (0) 2023.07.27
kiosk 3일차 7/27 상품 관리 (2)  (0) 2023.07.26
kiosk 2일차 7/26 상품관리  (0) 2023.07.26