Wake-up-together-TogetUp / togetup-server

AI를 활용한 커뮤니티 기반 미션 알람 서비스, TogetUp!
1 stars 1 forks source link

[FIX] 브리핑 보드 알람 타임라인 정렬 에러 해결 #168

Closed 05AM closed 2 months ago

05AM commented 2 months ago

☀️ 작업 사항

저번 알람 타임라인 중복 에러를 해결할 때 중복으로 보이는 것을 막기 위해 보여지는 알람 시간을 미션을 수행한 시간으로 수정했습니다. 하지만 여전히 정렬이 alarm time 기준으로 되어 있어 타임라인의 순서가 섞이는 에러가 있었습니다.

따라서 현재 시간 이전의 타임라인에 대해서는 미션 수행 시간으로 정렬하여 해당 에러를 해결했습니다.

또한 프레임워크 숙련도 이슈로 mission object 테이블이 cross join되고 있는 것을 발견했습니다. 부모 엔티티에서 필드를 가져오는 것과 조인한 결과에서 가져오는 두 가지 방식을 혼용하고 있었기 때문에 cross join이 발생했습니다.

명시적으로 조인한 결과에서 가져오는 방식으로 통일하여 같은 테이블이지만 다른 2개의 테이블을 cross join하는 것을 방지했습니다.

☀️ 참고 사항

[이전 쿼리]

    select
        alarm0_.id as col_0_0_,
        missionobj2_.icon as col_1_0_,
        alarm0_.alarm_time as col_2_0_,
        alarm0_.name as col_3_0_,
        missionobj1_.kr as col_4_0_,
        alarm0_.room_id as col_5_0_ 
    from
        alarm alarm0_ 
    inner join
        mission_object missionobj1_ 
            on (
                alarm0_.mission_object_id=missionobj1_.id
            ) cross 
    join
        mission_object missionobj2_ 
    where
        (
            alarm0_.is_deleted = 0
        ) 
        and alarm0_.mission_object_id=missionobj2_.id 
        and alarm0_.user_id=? 
        and (
            alarm0_.thursday=? 
            or alarm0_.monday=? 
            and alarm0_.tuesday=? 
            and alarm0_.wednesday=? 
            and alarm0_.thursday=? 
            and alarm0_.friday=? 
            and alarm0_.saturday=? 
            and alarm0_.sunday=?
        ) 
        and alarm0_.is_activated=? 
        and alarm0_.is_deleted=? 
        and alarm0_.alarm_time>=? 
    order by
        alarm0_.alarm_time asc,
        alarm0_.id asc

[이후 쿼리]

    select
        alarm0_.id as col_0_0_,
        missionobj1_.icon as col_1_0_,
        alarm0_.alarm_time as col_2_0_,
        alarm0_.name as col_3_0_,
        missionobj1_.kr as col_4_0_,
        alarm0_.room_id as col_5_0_ 
    from
        alarm alarm0_ 
    inner join
        mission_object missionobj1_ 
            on alarm0_.mission_object_id=missionobj1_.id 
    where
        (
            alarm0_.is_deleted = 0
        ) 
        and alarm0_.user_id=? 
        and alarm0_.is_deleted=? 
        and alarm0_.is_activated=? 
        and alarm0_.alarm_time>=? 
        and (
            alarm0_.thursday=? 
            or alarm0_.monday=? 
            and alarm0_.tuesday=? 
            and alarm0_.wednesday=? 
            and alarm0_.thursday=? 
            and alarm0_.friday=? 
            and alarm0_.saturday=? 
            and alarm0_.sunday=?
        ) 
    order by
        alarm0_.alarm_time asc,
        alarm0_.id asc
05AM commented 2 months ago

@hye-on

알람 목록 불러오기 서비스 메서드에 대한 리팩터링을 진행하였습니다! 한번 더 확인 요청드립니다!