Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge: 토익 문제 업로드 적용 #36

Merged
merged 17 commits into from
Feb 11, 2024
Merged

Merge: 토익 문제 업로드 적용 #36

merged 17 commits into from
Feb 11, 2024

Conversation

Zamoca42
Copy link
Member

@Zamoca42 Zamoca42 commented Feb 11, 2024

PR 체크리스트

아래 항목을 확인해 주세요:

  • 커밋 메시지가 우리의 가이드라인을 따르고 있는지 확인하세요
  • 변경 사항에 대한 테스트가 추가되었는지 확인하세요 (버그 수정 / 기능 추가)
  • 문서가 추가되거나 업데이트되었는지 확인하세요 (버그 수정 / 기능 추가)

PR 유형

이 PR은 어떤 종류의 변경을 가져오나요?

  • 버그 수정
  • 새로운 기능 추가
  • 코드 스타일 업데이트 (서식, 로컬 변수)
  • 리팩터링 (기능 변경 없음, API 변경 없음)
  • 빌드 관련 변경
  • CI 관련 변경
  • 문서 내용 변경
  • 애플리케이션 / 인프라 변경
  • 기타... 설명:

관련 이슈

이슈 번호: #18

새로운 동작은 무엇인가요?

  • xlsx 패키지 설치
  • 파일 업로드 모듈
  • manager 권한으로 업로드 가능하게 RolesGuard 작성
  • 커스텀 파일 파이프 생성
    • multer.file -> workbook 변환
    • file type validation
  • 테스트 예시 파일 - 토익실전문제 1~13회.xlsx
  • prisma 설치
  • 토익 문제 상세 조회

이 PR은 호환성 변경을 도입하나요?

  • 아니요

기타 정보

기타사항

xlsx 파일 업로드

xlsx 파일 정상 업로드 (성공)

스크린샷 2024-02-11 오후 11 32 47

권한이 없을 때 (403: forbidden)

스크린샷 2024-02-11 오후 11 42 37

파일 타입이 xlsx와 다를 때 (예시: pdf)

스크린샷 2024-02-11 오후 11 38 18

스크린샷 2024-02-11 오후 11 36 43

토익 문제 전체 조회

스크린샷 2024-02-11 오후 11 29 40
7)

토익 문제 상세 조회 (예시 id:

스크린샷 2024-02-11 오후 11 29 21

{
  "id": 7,
  "title": "실전1",
  "filename": "2024-02-11-토익실전문제 1~13회.xlsx",
  "created_at": "2024-02-11T13:20:40.625Z",
  "is_public": false,
  "updated_at": null,
  "questions": [
    {
      "content": "The community center provides residents with a ------- of courses in arts and crafts.",
      "choice": "(A) showing (B) prospect (C) variety (D) consequence",
      "answer": "C",
      "created_at": "2024-02-11T13:20:40.625Z",
      "updated_at": null,
      "translation": "지역 문화 센터에서는 주민들에게 다양한 미술 공예 강좌를 제공한다.",
      "id": "b6182d3d-e293-47e8-b9b2-3d2786d5303c",
      "question_number": 1,
      "toeic_id": 7
    },
    {
      "content": "Users of the Zwisher line of kitchen appliances will ------- from the many conveniences they provide.",
      "choice": "(A) improvise (B) benefit (C) follow (D) transform",
      "answer": "B",
      "created_at": "2024-02-11T13:20:40.625Z",
      "updated_at": null,
      "translation": "Zwisher사 주방용품 라인 사용자들은 그것이 제공하는 많은 편리함으로부터 혜택을 볼 것이다.",
      "id": "559357b5-78c3-4764-9765-c9c5f5b635f1",
      "question_number": 2,
      "toeic_id": 7
    },
    {
      "content": "Children are not allowed to attend the festival on their own and must be ------- by an adult.",
      "choice": "(A) appeared (B) required (C) succeeded (D) accompanied",
      "answer": "D",
      "created_at": "2024-02-11T13:20:40.625Z",
      "updated_at": null,
      "translation": "아이들은 혼자서 축제에 참여하는 것이 허락되지 않으며 반드시 어른을 동반해야 한다.",
      "id": "f010d9d4-a5ac-4a16-a274-13dabfa8150e",
      "question_number": 3,
      "toeic_id": 7
    },
    {
      "content": "Participating customers will be asked to ------- what they think of the company’s products on a survey form.",
      "choice": "(A) manage (B) demand (C) adopt (D) indicate",
      "answer": "D",
      "created_at": "2024-02-11T13:20:40.625Z",
      "updated_at": null,
      "translation": "참여하는 고객들은 그 회사 제품에 대해 어떻게 생각하는지를 설문지에 나타내도록 요청받을 것이다.",
      "id": "142ec342-fe36-4464-ab0b-2687ee451185",
      "question_number": 4,
      "toeic_id": 7
    },
    {
      "content": "The museum’s current ------- features displays of ancient artifacts discovered at a historical site in Turkey last year.",
      "choice": "(A) audience (B) exhibition (C) subscription (D) announcement",
      "answer": "B",
      "created_at": "2024-02-11T13:20:40.625Z",
      "updated_at": null,
      "translation": "박물관의 현재 전시회는 지난해 터키에 있는 한 유적지에서 발견된 고대 유물들의 전시를 특징으로 한다.",
      "id": "b844eea5-e691-4420-a7ff-f3a7c49983e8",
      "question_number": 5,
      "toeic_id": 7
    },
    {
      "content": "Online companies have an ------- over traditional retail stores because they spend less on maintenance.",
      "choice": "(A) admission (B) influence (C) advantage (D) experience",
      "answer": "C",
      "created_at": "2024-02-11T13:20:40.625Z",
      "updated_at": null,
      "translation": "온라인 회사들은 보수 관리에 더 적게 지출하므로 전통적인 소매상점보다 유리하다.",
      "id": "2cec9c95-ba2d-49fa-966f-49eefcce0b44",
      "question_number": 6,
      "toeic_id": 7
    },
    {
      "content": "Employees who wish to ------- how the new policy might affect them should consult their supervisors.",
      "choice": "(A) enable (B) clarify (C) contain (D) inform",
      "answer": "B",
      "created_at": "2024-02-11T13:20:40.625Z",
      "updated_at": null,
      "translation": "새로운 정책이 그들에게 어떤 영향을 미칠지를 명확하게 하고자 하는 직원들은 상사에게 물어봐야 한다.",
      "id": "dc9b880b-9edb-4d51-983d-890e695f668d",
      "question_number": 7,
      "toeic_id": 7
    },
    {
      "content": "As part of a special -------, Stomps Gym is discounting its membership fee for new users.",
      "choice": "(A) offer (B) notice (C) charge (D) warranty",
      "answer": "A",
      "created_at": "2024-02-11T13:20:40.625Z",
      "updated_at": null,
      "translation": "특별 제공의 일환으로, Stomps 체육관은 신규 이용자들에게 가입비를 할인해 주고 있다.",
      "id": "eda5f60c-e079-46ff-89de-52b8a42d7037",
      "question_number": 8,
      "toeic_id": 7
    }
  ]
}

- Roles guard 추가
- Access Token을 통해 사용자의 권한을 검사하는 기능 추가
- 사용자의 권한이 없을 경우 403 에러를 반환

Related to #18
- Swagger API의 이름을 변경하였습니다.
- 기존에는 @SwaggerAPI였지만 Swagger의 데코레이터와 유사하게 변경하였습니다.

Related to #18
- pdf 업로더 모듈 추가
- 파일 Api Swagger 데코레이터 추가
- 업로드 컨트롤러 추가

Related to #18
- pdf -> xlsx에서 패키지 변경
- 파일 업로드 테스트 불가로 인한 scalar 문서 제거
- swagger 문서 복귀
Related to #18
- multer에서 diskStorage를 사용하도록 설정
- 파일 업로드 경로를 변경
- pdf 업로드 모듈 -> 업로드 모듈로 이름 변경

Related to #18
- 엑셀 파일의 내용을 파싱하여 JSON으로 변환

Related to #18
- 토익 문제 모듈 추가
- 토익, 문제 업로드 서비스 로직 추가
- 어드민 유저만 업로드 가능하도록 권한 설정
Related to #18
- 모듈 추가에 따른 테스트 모듈 추가

Related to #18
- 토큰 확인 메세지를 수정했습니다.

Related to #18
- prisma 스키마를 추가하였습니다.
- prisma 패키지 설치
- prisma client 생성
- prisma client를 사용하여 데이터베이스에 접근하는 코드 작성

Related to #18
- 유저 권한 기능을 수정했습니다.
- 일부 API 요청 권한에 manager 권한이 필요하도록 설정
- roles.enum.ts 파일에 manager 권한을 추가했습니다.
- roles.guard.ts 파일에 검사하는 로직을 서비스로 이동 했습니다.

Related to #18
- file -> workbook으로 변환 부분을 pipe로 분리
- 토익 문제를 업로드 후 DB에 저장하는 부분을 service로 분리
- 인터페이스 수정
- prisma 예외 필터 추가
- prisma 클라이언트 연결 모듈 추가
- migration 파일 추가
- schema 변경

Related to #18
- 토익 문제 조회, 상세 조회를 컨트롤러에 추가
- 토익 문제 생성, 수정, 삭제를 서비스에 추가

Related to #18
- 업로드 모듈에서 테스트 모듈 의존성 추가
- 토익 문제 모듈에서 테스트 모듈 의존성 추가

Related to #18
- file type validaton 수정

Related to #18
@Zamoca42 Zamoca42 changed the title Feat/#18 Merge: 토익 문제 업로드 적용 Feb 11, 2024
Copy link
Member

@future9061 future9061 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

수고하셨습니다.

@Zamoca42 Zamoca42 merged commit ebb8278 into main Feb 11, 2024
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants