Coder Social home page Coder Social logo

bookstore's Introduction

Anurag's GitHub stats Top Langs

bookstore's People

Contributors

sunghyun627 avatar

Watchers

 avatar

bookstore's Issues

초기 개발환경 세팅

작업 설명

초기 개발 환경 세팅

작업 상세 리스트

  • nodemon 설정
  • dotenv를 통한 환경변수 관리
  • DB 연결
  • 초기 프로젝트 구조 설정
  • 초기 라우팅 설정
  • eslint, prettier 설정

작업 세부내용

nodemon 설정

  • nodemon 설치
npm install nodemon --save-dev 
  • package.json script 설정
  "scripts": {
    "dev": "nodemon app.js"
  }
  • nodemon으로 application 실행
npm run dev

dotenv를 통한 환경변수 관리

  • dotenv 모듈 설치
  • .env 파일에 private한 정보 작성
  • dotenv 모듈을 사용하여 원하는 환경변수 사용

DB 연결

  • 환경변수를 사용하여 db configuration 설정

초기 프로젝트 구조 설정

  • config : configuration 설정에 필요한 모듈
  • controllers : 웹 애플리케이션에서 요청(request)과 응답(response) 사이의 로직을 처리
  • routers : 엔드포인트와 해당 엔드포인트에서 실행돼야 할 로직을 연결
  • middlewares : 메인 로직의 컨트롤러 앞뒤로 추가적인 일을 담당

초기 라우팅 설정

  • 초기 API 명세를 기반으로 간단한 라우팅 작성
  • users, books, carts, likes, orders

ESLint, Prettier 설정

-ESLint, Prettier 설정을 통한 일관성 있는 코드 작성

참고자료

카테고리 API 및 테이블 설계, 전체 카테고리 가져오기 구현

작업 설명

카테고리 API 및 테이블 구현

작업 상세 리스트

  • 카테고리 API 작성
  • 전체 카테고리 조회
  • 카테고리 테이블 구현
  • controller, route 구현
  • controller
//controllers/categoryController.js
const getAllCategories = (req, res) => {
const sql = 'SELECT * FROM category';

connection.query(sql, (err, results) => {
  if (err) {
    return res.status(StatusCodes.BAD_REQUEST).end();
  }

  return res.status(StatusCodes.OK).json(results);
});
};
  • route
// routes/category.js
const express = require('express');
const { getAllCategories } = require('../controllers/categoryController');

const router = express.Router();

router.use(express.json());

router.get('/', getAllCategories);

module.exports = router;

초기 ERD Diagram 설계

작업 설명

초기 ERD Diagram 설계

초기 ERD DIagram

image

작업 상세 리스트

  • 기능 구현을 위해 필요한 테이블 체크
  • 테이블간의 관계 체크

도서 조회 기능 구현

작업 설명

도서 조회 기능 구현

작업 상세 리스트

  • 전체 도서 조회 기능
  • 특정(개별 도서 조회 기능
  • 카테고리별 도서 목록 조회 기능
  • 신간 도서 목록 조회 기능
  • 도서 목록 조회 페이징

장바구니 API JWT 구현

작업 설명

장바구니 API JWT 구현

작업 상세 리스트

  • 장바구니 담기 API JWT 구현
  • 장바구니 목록 조회 API JWT 구현
  • 장바구니 삭제 API JWT 구현
  • 장바구니 선택한 목록 조회 API JWT 구현

좋아요 API JWT 구현

작업 설명

좋아요 API JWT 구현

작업 상세 리스트

  • 좋아요 추가 API에 JWT 구현
  • 좋아요 삭제 API에 JWT 구현

로그인 기능 구현

작업 설명

로그인 기능 구현

작업 상세 리스트

  • 유효성 검사
  • express-validator를 사용하여 email, password 유효성 검사 실행
  • DB에 있는 이메일, 패스워드 일치 여부 확인
  • db에 user가 입력한 이메일이 있는지 확인
  • db의 salt를 활용하여 입력한 비밀번호와 db에 저장된 비밀번호의 일치 여부 확인
  • 알맞은 response 반환
  • 로그인 실패 시 알맞은 Error code 반환

주문 API 구현

작업 설명

주문 API 구현

작업 상세 리스트

  • 주문 하기 기능 구현
  • 주문 목록 조회 기능 구현
  • 주문 상세 상품 조회 기능 구현

초기 API 설계

작업 설명

ERD Diagram을 바탕으로 초기 API를 설계한다.

작업 상세 리스트

  • 회원 API
  • 도서 API
  • 주문 API
  • 좋아요 API
  • 장바구니 API

참고 자료

좋아요를 눌렀는 지에 대한 여부를 db로부터 가져오는 기능 구현

작업 설명

좋아요를 눌렀는 지에 대한 여부를 db로부터 가져오는 기능 구현

작업 상세 리스트

  • 좋아요를 눌렀는 지에 대한 여부를 db로부터 가져오는 기능 구현

작업 상세 구현

//.controllers/bookController.js
const getBookInfo = (req, res) => {
  const { user_id } = req.body;
  const book_id = req.params.id;
  const sql = `SELECT *,
                    (SELECT count(*) FROM likes WHERE books.id=liked_book_id) AS likes,
                    (SELECT EXISTS (SELECT * FROM likes WHERE user_id=? AND liked_book_id=?)) AS liked
              FROM books 
              LEFT JOIN category
              ON books.category_id = category.id
              WHERE books.id=?;`;

  const values = [user_id, book_id, book_id];
  connection.query(sql, values, (err, results) => {
    if (err) {
      console.log(err);
      return res.status(StatusCodes.BAD_REQUEST).end();
    }

    if (results[0]) {
      return res.status(StatusCodes.OK).json(results[0]);
    }
    return res.status(StatusCodes.NOT_FOUND).end();
  });
};

회원가입 기능 구현

작업 설명

회원가입 기능 구현

작업 상세 리스트

  • 유효성 검사
  • express-validator를 사용하여 email, password 유효성 검사 실행
  • 비밀번호 암호화
  • crypto 모듈을 사용하여 password를 암호화
  • 알맞은 response 반환
  • 회원 가입 성공 및 실패 시 알맞은 Error code 반환
  • 메인로직을 route로부터 분리
  • routes로부터 메인로직을 controller로 분리
  • 유효성 검사를 통과한 email과 password 정보 DB에 저장
  • 유효성 검사를 통과한 이메일, 암호화된 비밀번호, salt를 DB에 저장

참고자료

비밀번호 초기화 기능 구현

작업 설명

비밀번호 초기화 기능 구현

작업 상세 리스트

  • 이메일 및 password 유효성 검사
  • 비밀번호 초기화 요청 기능
  • 새로운 비밀번호와 salt를 암호화하여 DB에 반영
  • 알맞은 Response를 반환

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.