Skip to content

Commit

Permalink
Revert "feat: notification 조회 paging"
Browse files Browse the repository at this point in the history
This reverts commit 5a5b73d.
  • Loading branch information
rlaisqls committed Jul 8, 2023
1 parent 5a5b73d commit f7a0411
Show file tree
Hide file tree
Showing 25 changed files with 50 additions and 222 deletions.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,19 +1,14 @@
package team.aliens.dms.domain.notification.dto

import team.aliens.dms.domain.notification.model.DeviceToken
import team.aliens.dms.domain.notification.model.OperatingSystem
import team.aliens.dms.domain.user.model.User

class SetDeviceTokenRequest(
val deviceId: String,
val operatingSystem: OperatingSystem,
val token: String
) {
fun toDeviceToken(user: User) = DeviceToken(
userId = user.id,
schoolId = user.schoolId,
token = token,
operatingSystem = operatingSystem,
deviceId = deviceId
token = token
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,5 @@ data class DeviceToken(
val id: UUID = UUID(0, 0),
val userId: UUID,
val schoolId: UUID,
val token: String,
val operatingSystem: OperatingSystem,
val deviceId: String
val token: String
)

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,7 @@ import java.util.UUID

interface CommandNotificationService {

fun createOrUpdateDeviceToken(deviceToken: DeviceToken)

fun deleteDeviceTokenById(deviceTokenId: UUID)
fun saveDeviceToken(deviceToken: DeviceToken)

fun deleteNotificationOfUserByUserIdAndId(userId: UUID, notificationOfUserId: UUID)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,44 +6,22 @@ import team.aliens.dms.domain.notification.model.DeviceToken
import team.aliens.dms.domain.notification.spi.CommandDeviceTokenPort
import team.aliens.dms.domain.notification.spi.CommandNotificationOfUserPort
import team.aliens.dms.domain.notification.spi.NotificationPort
import team.aliens.dms.domain.notification.spi.QueryDeviceTokenPort
import team.aliens.dms.domain.notification.spi.QueryNotificationOfUserPort
import team.aliens.dms.domain.notification.spi.QueryTopicSubscriptionPort
import java.util.UUID

@Service
class CommandNotificationServiceImpl(
private val commandDeviceTokenPort: CommandDeviceTokenPort,
private val queryDeviceTokenPort: QueryDeviceTokenPort,
private val deviceTokenPort: CommandDeviceTokenPort,
private val notificationPort: NotificationPort,
private val queryTopicSubscriptionPort: QueryTopicSubscriptionPort,
private val queryNotificationOfUserPort: QueryNotificationOfUserPort,
private val commandNotificationOfUserPort: CommandNotificationOfUserPort,
private val notificationServiceImpl: NotificationServiceImpl
private val commandNotificationOfUserPort: CommandNotificationOfUserPort
) : CommandNotificationService {

override fun createOrUpdateDeviceToken(deviceToken: DeviceToken) {
val savedDeviceToken = queryDeviceTokenPort.queryDeviceTokenByOSAndDeviceId(deviceToken.operatingSystem, deviceToken.deviceId)

if (savedDeviceToken == null) {
commandDeviceTokenPort.saveDeviceToken(deviceToken)
notificationPort.subscribeAllTopics(
token = deviceToken.token
)
} else {
commandDeviceTokenPort.saveDeviceToken(
deviceToken.copy(id = savedDeviceToken.id)
)
notificationServiceImpl.updateSubscribes(
token = deviceToken.token,
topicsToSubscribe = queryTopicSubscriptionPort.queryTopicSubscriptionsByDeviceTokenId(deviceToken.id)
.map { it.topic to it.isSubscribed }
)
}
}

override fun deleteDeviceTokenById(deviceTokenId: UUID) {
commandDeviceTokenPort.deleteDeviceTokenById(deviceTokenId)
override fun saveDeviceToken(deviceToken: DeviceToken) {
deviceTokenPort.saveDeviceToken(deviceToken)
notificationPort.subscribeAllTopics(
token = deviceToken.token
)
}

override fun deleteNotificationOfUserByUserIdAndId(userId: UUID, notificationOfUserId: UUID) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,19 +1,15 @@
package team.aliens.dms.domain.notification.service

import team.aliens.dms.common.dto.PageData
import team.aliens.dms.domain.notification.model.DeviceToken
import team.aliens.dms.domain.notification.model.NotificationOfUser
import team.aliens.dms.domain.notification.model.OperatingSystem
import team.aliens.dms.domain.notification.model.TopicSubscription
import java.util.UUID

interface GetNotificationService {

fun getNotificationOfUsersByUserId(userId: UUID, pageData: PageData): List<NotificationOfUser>
fun getNotificationOfUsersByUserId(userId: UUID): List<NotificationOfUser>

fun getTopicSubscriptionsByToken(token: String): List<TopicSubscription>

fun getDeviceTokenByOSAndDeviceIdAndUserId(operatingSystem: OperatingSystem, deviceId: String, userId: UUID): DeviceToken

fun getDeviceTokenByToken(token: String): DeviceToken
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
package team.aliens.dms.domain.notification.service

import team.aliens.dms.common.annotation.Service
import team.aliens.dms.common.dto.PageData
import team.aliens.dms.domain.notification.exception.DeviceTokenNotFoundException
import team.aliens.dms.domain.notification.model.OperatingSystem
import team.aliens.dms.domain.notification.model.TopicSubscription
import team.aliens.dms.domain.notification.spi.QueryDeviceTokenPort
import team.aliens.dms.domain.notification.spi.QueryNotificationOfUserPort
Expand All @@ -12,31 +10,19 @@ import java.util.UUID

@Service
class GetNotificationServiceImpl(
private val queryDeviceTokenPort: QueryDeviceTokenPort,
private val queryNotificationOfUserPort: QueryNotificationOfUserPort,
private val queryTopicSubscriptionPort: QueryTopicSubscriptionPort
private val deviceTokenPort: QueryDeviceTokenPort,
private val notificationOfUserPort: QueryNotificationOfUserPort,
private val topicSubscriptionPort: QueryTopicSubscriptionPort
) : GetNotificationService {

override fun getNotificationOfUsersByUserId(userId: UUID, pageData: PageData) =
queryNotificationOfUserPort.queryNotificationOfUserByUserId(userId, pageData)
override fun getNotificationOfUsersByUserId(userId: UUID) =
notificationOfUserPort.queryNotificationOfUserByUserId(userId)

override fun getTopicSubscriptionsByToken(token: String): List<TopicSubscription> {
val savedToken = getDeviceTokenByToken(token)
return queryTopicSubscriptionPort.queryTopicSubscriptionsByDeviceTokenId(savedToken.id)
}

override fun getDeviceTokenByOSAndDeviceIdAndUserId(
operatingSystem: OperatingSystem,
deviceId: String,
userId: UUID
) = queryDeviceTokenPort.queryDeviceTokenByOSAndDeviceId(
operatingSystem = operatingSystem,
deviceId = deviceId
).run {
if (this == null || this.userId != userId) throw DeviceTokenNotFoundException
return@run this
return topicSubscriptionPort.queryTopicSubscriptionsByDeviceTokenId(savedToken.id)
}

override fun getDeviceTokenByToken(token: String) =
queryDeviceTokenPort.queryDeviceTokenByToken(token) ?: throw DeviceTokenNotFoundException
deviceTokenPort.queryDeviceTokenByToken(token) ?: throw DeviceTokenNotFoundException
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,4 @@ interface CommandDeviceTokenPort {
fun saveDeviceToken(deviceToken: DeviceToken): DeviceToken

fun deleteDeviceTokenByUserId(userId: UUID)

fun deleteDeviceTokenById(deviceTokenId: UUID)
}
Original file line number Diff line number Diff line change
@@ -1,14 +1,11 @@
package team.aliens.dms.domain.notification.spi

import team.aliens.dms.domain.notification.model.DeviceToken
import team.aliens.dms.domain.notification.model.OperatingSystem
import java.util.UUID

interface QueryDeviceTokenPort {

fun queryDeviceTokenByUserId(userId: UUID): DeviceToken?

fun queryDeviceTokenByToken(token: String): DeviceToken?

fun queryDeviceTokenByOSAndDeviceId(operatingSystem: OperatingSystem, deviceId: String): DeviceToken?
}
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
package team.aliens.dms.domain.notification.spi

import team.aliens.dms.common.dto.PageData
import team.aliens.dms.domain.notification.model.NotificationOfUser
import java.util.UUID

interface QueryNotificationOfUserPort {

fun queryNotificationOfUserByUserId(userId: UUID, pageData: PageData): List<NotificationOfUser>
fun queryNotificationOfUserByUserId(userId: UUID): List<NotificationOfUser>

fun queryNotificationOfUserById(notificationOfUserId: UUID): NotificationOfUser?
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package team.aliens.dms.domain.notification.usecase

import team.aliens.dms.common.annotation.ReadOnlyUseCase
import team.aliens.dms.common.dto.PageData
import team.aliens.dms.domain.notification.dto.NotificationsResponse
import team.aliens.dms.domain.notification.service.NotificationService
import team.aliens.dms.domain.user.service.UserService
Expand All @@ -12,13 +11,10 @@ class QueryMyNotificationsUseCase(
private val notificationService: NotificationService
) {

fun execute(pageData: PageData): NotificationsResponse {
fun execute(): NotificationsResponse {
val user = userService.getCurrentUser()
return NotificationsResponse.of(
notificationService.getNotificationOfUsersByUserId(
userId = user.id,
pageData = pageData
)
notificationService.getNotificationOfUsersByUserId(user.id)
)
}
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ class SetDeviceTokenUseCase(

fun execute(request: SetDeviceTokenRequest) {
val user = userService.getCurrentUser()
notificationService.createOrUpdateDeviceToken(

notificationService.saveDeviceToken(
request.toDeviceToken(user)
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,37 +7,25 @@ import org.springframework.beans.factory.annotation.Value
import org.springframework.context.annotation.Configuration
import java.io.File
import java.io.IOException
import java.net.URL
import java.nio.file.Files
import java.nio.file.Paths
import javax.annotation.PostConstruct

@Configuration
class FCMConfig(
@Value("\${fcm.file-url}")
private val url: String
@Value("\${fcm.path}")
private val path: String
) {

@PostConstruct
fun initialize() {
try {
URL(url).openStream().use { inputStream ->
Files.copy(inputStream, Paths.get(PATH))
val file = File(PATH)
if (FirebaseApp.getApps().isEmpty()) {
val options = FirebaseOptions.builder()
.setCredentials(GoogleCredentials.fromStream(file.inputStream()))
.build()
FirebaseApp.initializeApp(options)
}
file.delete()
if (FirebaseApp.getApps().isEmpty()) {
val options = FirebaseOptions.builder()
.setCredentials(GoogleCredentials.fromStream(File(path).inputStream()))
.build()
FirebaseApp.initializeApp(options)
}
} catch (e: IOException) {
e.printStackTrace()
}
}

companion object {
private const val PATH = "./credentials.json"
}
}
2 changes: 1 addition & 1 deletion dms-infrastructure/src/main/resources/application.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ spring:
max-request-size: 20MB

fcm:
file-url: ${FCM_FILE_URL}
path: ${FCM_PATH}

secret:
secret-key: ${SECRET_KEY:asdfghgfds}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package team.aliens.dms.persistence.notification

import org.springframework.stereotype.Component
import team.aliens.dms.domain.notification.model.DeviceToken
import team.aliens.dms.domain.notification.model.OperatingSystem
import team.aliens.dms.domain.notification.spi.DeviceTokenPort
import team.aliens.dms.persistence.notification.mapper.DeviceTokenMapper
import team.aliens.dms.persistence.notification.repository.DeviceTokenJpaRepository
Expand All @@ -28,15 +27,7 @@ class DeviceTokenPersistenceAdapter(
deviceTokenRepository.findByToken(token)
)

override fun queryDeviceTokenByOSAndDeviceId(operatingSystem: OperatingSystem, deviceId: String) = notificationMapper.toDomain(
deviceTokenRepository.findByOperatingSystemAndDeviceId(operatingSystem, deviceId)
)

override fun deleteDeviceTokenByUserId(userId: UUID) {
deviceTokenRepository.deleteByUserId(userId)
}

override fun deleteDeviceTokenById(deviceTokenId: UUID) {
deviceTokenRepository.deleteById(deviceTokenId)
}
}
Original file line number Diff line number Diff line change
@@ -1,21 +1,17 @@
package team.aliens.dms.persistence.notification

import com.querydsl.jpa.impl.JPAQueryFactory
import org.springframework.data.repository.findByIdOrNull
import org.springframework.stereotype.Component
import team.aliens.dms.common.dto.PageData
import team.aliens.dms.domain.notification.model.NotificationOfUser
import team.aliens.dms.domain.notification.spi.NotificationOfUserPort
import team.aliens.dms.persistence.notification.entity.QNotificationOfUserJpaEntity.notificationOfUserJpaEntity
import team.aliens.dms.persistence.notification.mapper.NotificationOfUserMapper
import team.aliens.dms.persistence.notification.repository.NotificationOfUserJpaRepository
import java.util.UUID

@Component
class NotificationOfPersistenceAdapterOfUser(
private val notificationOfUserMapper: NotificationOfUserMapper,
private val notificationOfUserRepository: NotificationOfUserJpaRepository,
private val queryFactory: JPAQueryFactory
private val notificationOfUserRepository: NotificationOfUserJpaRepository
) : NotificationOfUserPort {

override fun saveNotificationOfUser(notificationOfUser: NotificationOfUser) =
Expand All @@ -33,13 +29,9 @@ class NotificationOfPersistenceAdapterOfUser(
)
}

override fun queryNotificationOfUserByUserId(userId: UUID, pageData: PageData) =
queryFactory
.selectFrom(notificationOfUserJpaEntity)
.where(notificationOfUserJpaEntity.user.id.eq(userId))
.offset(pageData.offset)
.limit(pageData.size)
.fetch().map { notificationOfUserMapper.toDomain(it)!! }
override fun queryNotificationOfUserByUserId(userId: UUID) =
notificationOfUserRepository.findByUserId(userId)
.map { notificationOfUserMapper.toDomain(it)!! }

override fun queryNotificationOfUserById(notificationOfUserId: UUID) = notificationOfUserMapper.toDomain(
notificationOfUserRepository.findByIdOrNull(notificationOfUserId)
Expand Down
Loading

0 comments on commit f7a0411

Please sign in to comment.