diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/theme/AudioContentThemeQueryRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/theme/AudioContentThemeQueryRepository.kt index 1ad1d65..f4c2bbd 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/theme/AudioContentThemeQueryRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/theme/AudioContentThemeQueryRepository.kt @@ -1,5 +1,6 @@ package kr.co.vividnext.sodalive.content.theme +import com.querydsl.core.types.dsl.CaseBuilder import com.querydsl.jpa.impl.JPAQueryFactory import kr.co.vividnext.sodalive.content.ContentType import kr.co.vividnext.sodalive.content.QAudioContent.audioContent @@ -64,15 +65,27 @@ class AudioContentThemeQueryRepository( where = where.and(audioContent.isPointAvailable.isTrue) } - return queryFactory + val query = queryFactory .select(audioContentTheme.theme) .from(audioContent) .innerJoin(audioContent.member, member) .innerJoin(audioContent.theme, audioContentTheme) .where(where) .groupBy(audioContentTheme.id) - .orderBy(audioContentTheme.orders.asc()) - .fetch() + + if (isFree) { + query.orderBy( + CaseBuilder() + .`when`(audioContentTheme.theme.eq("자기소개")).then(0) + .otherwise(1) + .asc(), + audioContentTheme.orders.asc() + ) + } else { + query.orderBy(audioContentTheme.orders.asc()) + } + + return query.fetch() } fun findThemeByIdAndActive(id: Long): AudioContentTheme? {