관리자 - 회원 태그 API

This commit is contained in:
2023-08-06 14:01:09 +09:00
parent cbcc63dc71
commit 841e32a50b
9 changed files with 219 additions and 0 deletions

View File

@@ -0,0 +1,9 @@
package kr.co.vividnext.sodalive.member.tag
import com.querydsl.core.annotations.QueryProjection
data class GetMemberTagResponse @QueryProjection constructor(
val id: Long,
val tag: String,
val image: String
)

View File

@@ -0,0 +1,13 @@
package kr.co.vividnext.sodalive.member.tag
import kr.co.vividnext.sodalive.common.ApiResponse
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController
@RestController
@RequestMapping("/member/tag")
class MemberTagController(private val service: MemberTagService) {
@GetMapping
fun getTags() = ApiResponse.ok(service.getTags())
}

View File

@@ -0,0 +1,34 @@
package kr.co.vividnext.sodalive.member.tag
import com.querydsl.jpa.impl.JPAQueryFactory
import kr.co.vividnext.sodalive.member.tag.QCreatorTag.creatorTag
import org.springframework.beans.factory.annotation.Value
import org.springframework.data.jpa.repository.JpaRepository
interface MemberTagRepository : JpaRepository<CreatorTag, Long>, MemberTagQueryRepository
interface MemberTagQueryRepository {
fun getTags(): List<GetMemberTagResponse>
}
class MemberTagQueryRepositoryImpl(
private val queryFactory: JPAQueryFactory,
@Value("\${cloud.aws.cloud-front.host}")
private val cloudFrontHost: String
) : MemberTagQueryRepository {
override fun getTags(): List<GetMemberTagResponse> {
return queryFactory
.select(
QGetMemberTagResponse(
creatorTag.id,
creatorTag.tag,
creatorTag.image.prepend("/").prepend(cloudFrontHost)
)
)
.from(creatorTag)
.where(creatorTag.isActive.eq(true))
.orderBy(creatorTag.orders.asc())
.fetch()
}
}

View File

@@ -0,0 +1,10 @@
package kr.co.vividnext.sodalive.member.tag
import org.springframework.stereotype.Service
@Service
class MemberTagService(private val repository: MemberTagRepository) {
fun getTags(): List<GetMemberTagResponse> {
return repository.getTags()
}
}