mac OS
:brew install direnv
eval "$(direnv hook zsh)"
>>.zshrc
direnv allow
npm install
npm run start:db
npm run start:lambda
ornpm run start:dev
- Node.js
- TypeScript
- Nest.js
- prisma
- Aurora Serverless(mysql)
- Nest.js 폴더 구조에 맞게 작성 예정
- 리팩토링 한 ERD 링크와 비밀번호 Wechicken Notion Private Page에 기록 되어 있음
- jwt_refactor.sql 파일을 mysql 명령어로 실행하면 스키마 생성 됨
- 먼저 API 구현하고 추후에 기존에 있던 데이터를 이전하는 스크립트 코드 작성해야 함
기획 단계이기 때문에, 같이 설계 해 나가면 좋을 것 같습니다. 기본적인 룰은, 데이터 자원 에 기반한 설계 입니다.
- GET, /users/:userId (userID를 가진 유저의 정보를 응답)
- GET, /users/:userId/followers (userId를 가진 유저를 follow 하는 다수의 유저 정보를 응답)
- GET, /users/:userId/followees (userId를 가진 유저가 follow 하는 다수의 유저 정보를 응답)
- GET, /users/:userId/blogs (userId를 가진 유저의 다수의 블로그 포스트를 응답)
- POST, /users/login/google (구글 로그인 처리)
- POST, /users/:userId/follow (로그인 token 에 담긴 유저가 userId를 follow 할 수 있도록 함)
- GET, /blogs
(BlogService 에서 핵심 서비스 로직 구현하기, query string 으로 filter 기능 pagination 처리하기
main 페이지, search, 기수 페이지에서 모두 이 엔드포인트를 호출,
query string 으로 로직을 처리할 수 있도록 Service 함수를 추상화 시키고 필요한 helper 함수들을 utils 단에서 구현하기)
- POST, /blogs (포스트+ 버튼을 통해서 블로그 포스트 생성하는 기능)
- POST, /blogs/:blogId/likes (로그인 token 에 담긴 유저가 blogId를 좋아하는 기능)
- POST, /blogs/:blogId/bookmarks (로그인 token 에 담긴 유저가 blogId를 북마크 하는 기능)
- PUT, /blogs/:blogId (마이 페이지에서 포스트 수정하는 기능)
- DELETE, /blogs/:blogId (마이 페이지에서 포스트 삭제하는 기능)
- GET, /batches (User 토큰에서 기수 정보 꺼내와서 해당 기수의 정보를 응답)
- GET, /batches/blogs (User 토큰에서 기수 정보 꺼내와서 해당 기수 블로그 정보 응답)
- POST, /batches (기수 생성)
- PUT, /batches (기수 정보 변경, title, 벌금 정보 등..)
- node moudles 설치
$ npm install
- 데이터 베이스 마이그레이션
$ mysql -u 계정이름 -p 데이터베이스 이름 < jwt_refactor.sql
ex)
$ mysql -u root -p jwt_refactor < jwt_refactor.sql
$ cp .env.example .env
.env 파일 안에서 다음과 같이 DATABASE URL 설정하기
DATABASE_URL_DEV = mysql://DB_USER:[email protected]:3306/DB_NAME
- DB_USER: 데이터베이스에 접근 가능한 계정
- DB_USER_PASSWORD: 유저의 비밀번호
- DB_NAME: MySQL 서버에 생성한 데이터베이스 이름
prisma/shcema.prisma
에 기반해 Prisma Client API(ORM API)를 생성하는 명령어
$ npx prisma generate
package.json
안에 TypeScript -> JavaScript 로 컴파일 하고, 컴파일 된 파일을 nodemon 으로 실행시키는 스크립트 코드 작성되어 있음
$ npm run dev
명령어를 실행시키면 서버가 켜지고, 개발 단계에서 코드가 수정되면 자동으로 hot reloading 됨
- Database 는 docker 로 로컬 환경에서 돌아가게 된다.
npm run start:docker
를 하게 되면 서버 + 데이터베이스 도커가 한번에 올라가게 된다.npm run start:db
를 하게 되면 데이터베이스만 올라가게 된다.
/tests
├── config.ts
└── test.spec.ts
config.ts
: 테스트 코드 내에서 공유 될 context 를 만드는 모듈test.spec.ts
: 테스트 코드의 싱글 스레드(runInBand 옵션)와 순서를 보장하기 위해서 각각의 test 코드를 구현하고 import 해서 실행 시키는 모듈- 테스트 코드에 대한 예가 tests 폴더 안에 코드로 구성되어 있음
- 기본적으로 여러 input 과 output 에 대해 테스트 하기 위해
test.each
함수를 이용 함 package.json
에 ts-jest 를 사용하도록 스크립트 코드 작성 되어 있음
$ npm run test