프리온보딩 백엔드 인턴십 선발과제
env.sample
파일을 복사하여 루트 디렉토리에 .env
파일을 생성하고, 필요한 환경변수를 설정합니다.
# DB 에 접속하기 위한 환경변수 설정
# 연결할 DB의 포트 번호
POSTGRES_PORT=
# 연결할 DB의 호스트 주소
POSTGRES_HOST=
# 연결할 DB의 이름
POSTGRES_DB=
# 연결할 DB의 사용자명
POSTGRES_USER=
# 연결할 DB의 사용자 비밀번호
POSTGRES_PASSWORD=
cd ./recruit-app && pnpm install
실행pnpm run db
실행.env
파일에 설정한 환경변수를 이용하여 postgres container 를 생성합니다..env
를 로컬 환경에 맞게 수정하여 실행 합니다.psql -U username -d database_name -h database_host -p database_port -f ./DB/dump_file.sql
실행pnpm run seed
또는 npx ts-node ./DB/data-source.ts
실행pnpm run build && pnpm run start:prod
실행pnpm run test
실행/jobs?keyword=
keyword 가 있으면 해당 키워드를 포함하는 채용공고를 검색합니다. 없으면 전체 채용공고를 검색합니다.
{
total?: number; // 전체 채용공고 개수
jobs:
{
jobId: string;
position: string;
skills: string;
country: string;
region: string;
dueDate: Date;
companyId: string;
companyName: string;
}[];
}
/jobs
request body 기반으로 채용 공고를 생성하고 생성된 채용공고에 접근할 수 있는 path를 Location 헤더에 담아 반환합니다.
{
position: string;
skills: string;
rewards: string;
description: string;
country: string;
region: string;
dueDate: Date; // ISO 8601
}
/jobs/:jodId
{
message: string;
jobId: string;
}
/jobs/:job_id
job_id에 해당하는 채용공고의 자세한 정보를 반환합니다.
{
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;
}[];
}
}
/jobs/:job_id
job_id에 해당하는 채용공고의 정보를 수정합니다.
/jobs/:job_id
의 Partial type{
position: string;
skills: string;
rewards: string;
description: string;
country: string;
region: string;
dueDate: Date; // ISO 8601
}
{
message: string;
jobId: string;
}
/jobs/:job_id
job_id에 해당하는 채용공고를 삭제합니다.
{
message: string;
}
/applications
request body 기반으로 지원서를 생성하고 생성된 지원서에 접근할 수 있는 path를 Location 헤더에 담아 반환합니다.
{
jobId: string;
title: string;
content: string;
}
/applications/:application_id
{
message: string;
applicationId: string;
}
/applications
user_id에 해당하는 user가 지원한 지원서 리스트를 반환합니다.
{
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;
}
}
}[];
}