항해99/개발일지

20220311 개발일지

paran21 2022. 3. 13. 23:35

현재 퀴즈는 같은 문제가 나오지 않도록 문제 유형만 통일하고 변수들의 값을 변화를 줘서 다른 답을 제출하도록 구성해놓았다.

그런데 문득 다른 팀원 분이 이렇게 하면 문제를 클릭할 때마다 달라진다는 사실을 캐치하셨다...!!

적어도 같은 방에서는 누가 클릭해도 같은 문제를 보이게 해서, 처음 우리의 의도대로 같이 문제를 풀 수 있게 구상하기로 했다.

 

현재 퀴즈는 단서 없이 해당 문제만으로 답을 찾을 수 있는 A타입과, 단서가 다른 오브젝트에 있어서 단서를 찾아서 조합해 풀어야 하는 B타입이 있다.

A타입은 별도로 Quiz entity를 만들어서 퀴즈를 조회할 때 저장된 값이 없으면 새로 만들어서 저장하고, 그 이후에는 db에 저장된 값을 불러오도록 하였다.

 

B타입의 경우 현재 Room entity 안에 clue를 저장했는데, 앞으로 문제가 추가되면 clue가 늘어날 것 같아서 별도로 clue entity를 만들었다. 그리고 처음 방을 만들 때 clue도 같이 만들어서 저장해주기로 하였다.

처음 entity를 설계할 때는 Room과 Clue를 단방향으로 연결해주었다.

1:N이기 때문에 Clue에서 Room을 갖게 되는데 Clue는 단순히 퀴즈를 조회할 때 해당 방의 Clue를 찾아서 값만 가져오는 역할을 하면 되서 굳이 이 둘을 join할 필요가 없다고 생각되었다.

그래서 그냥 Clue에 roomId를 저장하고 이걸로 찾아오는 방식으로 구현했다.

(이와 달리 Room과 User는 서로 값을 불러오고 수정하는 경우가 있어 연결하는게 더 좋은 것 같다.)