Hun's Blog

Hackatalk opensource server setting guide 본문

Backend/GraphQL

Hackatalk opensource server setting guide

jhk-im 2020. 11. 25. 16:30

Hackatalk두부랩(dooboolab)의 오픈 소스 채팅 프로젝트입니다. Hackatalk-Server는 GraphQL 기반으로 구현되어 있습니다. 해당 글은 Hackatalk 오픈 소스에 참여하시는 분들 중 Server, Backend의 경험이 부족 하시거나 GraphQL이 생소한 주니어 개발자 분들의 진입장벽을 조금이라도 낮추기 위해 작성되었습니다.

 

Hacaktalk - server의 기술 사양

  • node
  • typescript
  • prisma
  • prisma-nexus
  • apollo-server
  • jest
  • postgreSQL

Database 관리 tool은 DBeaver를 사용하고 있습니다. 실행 환경은 MAC OS 이며 IDE는 vscode를 사용하여 작성하였습니다.

Hackatalk 오픈 소스에 Contribution하시길 원하신 다면 다음의 가이드를 먼저 참고하세요:)

 

Hackatalk PR과정을 통해 살펴보는 Github contribution 가이드

dooboolab의 hackatalk은 Typescript를 베이스로 여러 새로운 기술들을 적용해보면서 성장을 도모하는 오픈 소스 채팅 프로젝트입니다.

medium.com

git clone

$ git clone https://github.com/dooboolab/hackatalk

*위에 github contribution guide를 진행하셨다면 아래서부터 따라오시면 됩니다!

$ cd hackatalk/server

$ yarn

$ code .

PostgreSQL 설치

homebrew로 PostgreSQL을 설치합니다.

$ brew install postgresql

$ brew services start postgresql

설치가 완료되면 다음의 명령어를 입력합니다.

$ cp ./dotenv/dev.env ./dotenv/.env

경로로 이동하여 .env파일을 열어보겠습니다.

 

dotenv
env file

dotenv 라이브러리는 미리 작성한 .env 파일을 환경 변수에 설정 해주는 역할을 합니다. DATABASE_URL은 postgresql 로컬 데이터베이스로 연결됩니다.

url은 다음과 같습니다. database://databaseID:databasePW@localhostAddress:port/databaseName?schema=schemaName”

→ 데이터베이스에 등록된 id와 password로 생성된 스키마 테이블을 연결하겠다는 뜻입니다.

 

Database ID 생성

$ createuser -P -s postgres

→ password는 dooboolab0! 로 설정합니다.

postgreSQL 확인

$ psql postgres

$ \l

→ 생성된 id 리스트를 확인합니다.

$ \q

→ postgreSQL을 빠져나옵니다.

 

Prisma Command

Hackatalk-server는 Prisma + nexus를 활용하여 Database Model과 schema를 작성하고 client에서 사용할 수 있도록 mutation과 query가 작성되어있습니다.

prisma schema
nexus model
prisma + nexus mutation

$ yarn generate

→ 위 명령어를 통해 작성된 Model, Schema, Mutation, Query가 prisma에 의해 사용준비를 마치게되며 위 과정에서 문법 오류나 prisma에서 제시한 규칙에 위반되면 에러가 발생합니다.

$ yarn migrate:save

→ 위 명령어를 통해 성공적으로 사용준비를 마친 API와 데이터베이스의 현재의 migration을 저장합니다. 최초 입력시 테이블 생성을 하게되는데 Yes선택 후 적절한 migration명을 입력합니다 . 그렇게 되면 .env 파일안의 Database_url에 데이터베이스가 생성됩니다.

$ yarn migrate:up

→ 위명령어를 통해 현재의 migration을 최종 업로드 하게되어 사용할 수있는 상태가 됩니다.

 

DBeaver 설치

https://dbeaver.io/download/

설치 후 DBeaver를 실행합니다.

 

DBeaver 실행 -> 플러그 아이콘 클릭
 postgreSQL 선택 -> Next
databaseName / userName / password 입력 -> finish
생성 된 Schema, Table 확인

signUp mutation

이미 작성되어있는 signUp Mutation 을 활용하여 회원가입을 하고 Playground에서 mutation을 확인하는 과정을 진행해보도록 하겠습니다.

아래의 명령어를 입력합니다.

$ yarn local

 

yarn local -> playground start

맨 아래의 url을 command + click하여 이동합니다.

 

playground signUp mutation

위 이미지와 같이 mutation을 작성하고 play 버튼을 클릭합니다.

 

 signUp 성공

위 이미지와 같이 id가 반환되면 회원가입이 성공한 것입니다.

DBeaver user table

DBeaver로 위에서 가입한 user data가 입력 되었는지 확인합니다.

이상으로 Hackatalk-server setting 방법에 대해 알아보았습니다. Playground에서 mutation을 작성해보면서 실제로 데이터에 추가하는 과정을 통해 Hackatalk-server 의 전체적인 flow를 파악해보시기 바랍니다.