jis-kim / wanted-pre-onboarding-backend

프리온보딩 백엔드 인턴십 선발과제
0 stars 0 forks source link

wanted-pre-onboarding-backend

프리온보딩 백엔드 인턴십 선발과제

사용 기술

실행 방법

사전 설정

env.sample 파일을 복사하여 루트 디렉토리에 .env 파일을 생성하고, 필요한 환경변수를 설정합니다.

환경 변수 설명

# DB 에 접속하기 위한 환경변수 설정

# 연결할 DB의 포트 번호
POSTGRES_PORT=
# 연결할 DB의 호스트 주소
POSTGRES_HOST=
# 연결할 DB의 이름
POSTGRES_DB=
# 연결할 DB의 사용자명
POSTGRES_USER=
# 연결할 DB의 사용자 비밀번호
POSTGRES_PASSWORD=

설치

DB container 생성

dump 파일으로 DB table 생성

seeding data 생성

실행

테스트

ERD

API list

jobs

GET /jobs?keyword=

Description

keyword 가 있으면 해당 키워드를 포함하는 채용공고를 검색합니다. 없으면 전체 채용공고를 검색합니다.

Request

query

Response

status code
body
{
  total?: number; // 전체 채용공고 개수
  jobs:
  {
    jobId: string;
    position: string;
    skills: string;
    country: string;
    region: string;
    dueDate: Date;
    companyId: string;
    companyName: string;
  }[];
}

POST /jobs

Description

request body 기반으로 채용 공고를 생성하고 생성된 채용공고에 접근할 수 있는 path를 Location 헤더에 담아 반환합니다.

Request

header
body
{
  position: string;
  skills: string;
  rewards: string;
  description: string;
  country: string;
  region: string;
  dueDate: Date; // ISO 8601
}

Response

status code
header
body
{
  message: string;
  jobId: string;
}

GET /jobs/:job_id

Description

job_id에 해당하는 채용공고의 자세한 정보를 반환합니다.

Request

param

Response

status code
body
{
  jobId: string;
  position: string;
  skills: string;
  reward: string;
  description: string;
  country: string;
  region: string;
  dueDate: Date;
  companyId: string;
  createdAt: Date;
  updatedAt: Date;
  company: {
    companyId: string;
    companyName: string;
    jobs : { // 회사가 등록한 다른 채용공고 리스트
      jobId: string;
      position: string;
    }[];
  }
}

PATCH /jobs/:job_id

Description

job_id에 해당하는 채용공고의 정보를 수정합니다.

Request

param
body
{
  position: string;
  skills: string;
  rewards: string;
  description: string;
  country: string;
  region: string;
  dueDate: Date; // ISO 8601
}

Response

status code
body
{
  message: string;
  jobId: string;
}

DELETE /jobs/:job_id

Description

job_id에 해당하는 채용공고를 삭제합니다.

Request

param

Response

status code
body
{
  message: string;
}

applications

POST /applications

Description

request body 기반으로 지원서를 생성하고 생성된 지원서에 접근할 수 있는 path를 Location 헤더에 담아 반환합니다.

Request

header
body
{
  jobId: string;
  title: string;
  content: string;
}

Response

status code
header
body
{
  message: string;
  applicationId: string;
}

GET /applications

Description

user_id에 해당하는 user가 지원한 지원서 리스트를 반환합니다.

Request

header

Response

success status code
body
{
  total?: number; // 전체 지원서 개수
  applications:
  {
    applicationId: string;
    userId: string;
    title: string;
    content: string;
    status: string;
    createdAt: Date;
    updatedAt: Date;
    job: {
      jobId: string;
      position: string;
      company: {
        companyId: string;
        companyName: string;
      }
    }
  }[];
}

기타

GET /companies

GET /users