withbible / -deprecated-withbible-server

한국성서대학교 성경졸업고사 퀴즈앱 API서버
1 stars 0 forks source link

조건에 부합하지 않은 데이터 vs 실제 데이터가 없는 상황 구분 #7

Closed kimdev0206 closed 1 year ago

kimdev0206 commented 1 year ago
  1. 선택기록을 POST 요청합니다.

    question_seq|user_seq|question_option_seq|chapter_seq|
    ------------+--------+-------------------+-----------+
              44|       6|                299|         52|
              45|       6|                446|         52|
              48|       6|                315|         52|
  2. 선택기록을 해제한다는 의미로 null값을 넣어 PUT 요청합니다.

    {"bulk":{"44":null,"45":null,"48":null}}
    question_seq|user_seq|question_option_seq|chapter_seq|
    ------------+--------+-------------------+-----------+
              44|       6|                   |         52|
              45|       6|                   |         52|
              48|       6|                   |         52|
  3. 선택기록을 조회하는 쿼리는 다음과 같습니다. 해당 쿼리는 조건에 부합하는 데이터가 없으니 빈 행을 반환합니다.

    SELECT
      q.question_seq AS questionSeq,
      uo.question_option_seq AS questionOptionSeq,
      qo.answer_yn AS answerYN
    FROM quiz_chapter AS qc
    LEFT JOIN quiz_question AS q
      ON qc.chapter_seq = q.chapter_seq 
    LEFT JOIN quiz_question_option AS qo
      ON q.question_seq = qo.question_seq
    INNER JOIN quiz_user_option AS uo
      ON qo.question_option_seq = uo.question_option_seq    
    WHERE   qc.category_seq = 5
      AND qc.chapter_num = 2
      AND uo.user_seq = 6;
  4. 프론트단에는 선택기록 조회 여부에 따라 POST 또는 PUT을 결정해서 요청합니다. 앞선 상황을 실제 데이터가 없는 상황으로 볼 수 밖에 없어 POST 요청을 보냅니다.

  5. 이는 중복 PK 에러를 냅니다.

    Duplicate entry '44-6' for key 'PRIMARY