Skip to content

Commit

Permalink
GH-48 Move exception throws (Closes #48)
Browse files Browse the repository at this point in the history
  • Loading branch information
zrdzn committed Sep 19, 2024
1 parent 3c067cc commit 7de2e2d
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 37 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,9 @@ class AuthenticationService(
fun logout(accessToken: String) =
tokenService.removeRefreshToken(tokenService.getAccessTokenDetails(accessToken).refreshTokenId)

fun getAuthenticationDetailsByUserId(userId: UserId): AuthenticationDetailsResponse? =
fun getAuthenticationDetailsByUserId(userId: UserId): AuthenticationDetailsResponse =
userService.getUserById(userId)
?.let {
.let {
AuthenticationDetailsResponse(
email = it.email,
username = it.username
Expand All @@ -58,6 +58,6 @@ class AuthenticationService(
private fun getValidatedUser(authenticationLoginRequest: AuthenticationLoginRequest): UserWithPasswordResponse? =
userService
.getUserWithPasswordByEmail(authenticationLoginRequest.email)
?.takeIf { passwordEncoder.matches(authenticationLoginRequest.password, it.password) }
.takeIf { passwordEncoder.matches(authenticationLoginRequest.password, it.password) }

}
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ class ExchangeService(
val targetRate = rates.first { it.currency == target }.rate

return when {
// Convert from PLN to target currency
// convert from PLN to target currency
source == "PLN" -> {
val convertedAmount = amount.divide(targetRate, RoundingMode.HALF_UP)
Price(
Expand All @@ -31,7 +31,7 @@ class ExchangeService(
)
}

// Convert from source currency to PLN
// convert from source currency to PLN
target == "PLN" -> {
val convertedAmount = amount.multiply(sourceRate)
Price(
Expand All @@ -40,7 +40,7 @@ class ExchangeService(
)
}

// Convert from source currency to PLN, then to target currency
// convert from source currency to PLN, then to target currency
else -> {
val plnAmount = amount.multiply(sourceRate)
val convertedAmount = plnAmount.divide(targetRate, RoundingMode.HALF_UP)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ package dev.zrdzn.finance.backend.user

import dev.zrdzn.finance.backend.user.api.UserCreateRequest
import dev.zrdzn.finance.backend.user.api.UserCreateResponse
import dev.zrdzn.finance.backend.user.api.UserNotFoundByEmailException
import dev.zrdzn.finance.backend.user.api.UserNotFoundException
import dev.zrdzn.finance.backend.user.api.UserResponse
import dev.zrdzn.finance.backend.user.api.UserWithPasswordResponse
import dev.zrdzn.finance.backend.user.api.UsernameResponse
Expand All @@ -24,7 +26,7 @@ class UserService(
)
.let { UserCreateResponse(it.id!!) }

fun getUserById(id: UserId): UserResponse? =
fun getUserById(id: UserId): UserResponse =
userRepository.findById(id)
?.let {
UserResponse(
Expand All @@ -33,11 +35,12 @@ class UserService(
username = it.username
)
}
?: throw UserNotFoundException(id)

fun getUsernameByUserId(id: UserId): UsernameResponse? =
getUserById(id)?.let { UsernameResponse(it.username) }
fun getUsernameByUserId(id: UserId): UsernameResponse =
UsernameResponse(getUserById(id).username)

fun getUserWithPasswordByEmail(email: String): UserWithPasswordResponse? =
fun getUserWithPasswordByEmail(email: String): UserWithPasswordResponse =
userRepository
.findByEmail(email)
?.let {
Expand All @@ -48,5 +51,7 @@ class UserService(
password = it.password
)
}
?: throw UserNotFoundByEmailException(email)


}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import dev.zrdzn.finance.backend.shared.Currency
import dev.zrdzn.finance.backend.shared.createRandomToken
import dev.zrdzn.finance.backend.user.UserId
import dev.zrdzn.finance.backend.user.UserService
import dev.zrdzn.finance.backend.user.api.UserNotFoundException
import dev.zrdzn.finance.backend.vault.api.UserNotMemberOfVaultException
import dev.zrdzn.finance.backend.vault.api.VaultCreateResponse
import dev.zrdzn.finance.backend.vault.api.VaultInsufficientPermissionException
Expand All @@ -15,7 +14,6 @@ import dev.zrdzn.finance.backend.vault.api.VaultInvitationNotOwnedException
import dev.zrdzn.finance.backend.vault.api.VaultInvitationResponse
import dev.zrdzn.finance.backend.vault.api.VaultListResponse
import dev.zrdzn.finance.backend.vault.api.VaultMemberListResponse
import dev.zrdzn.finance.backend.vault.api.VaultMemberNotFoundException
import dev.zrdzn.finance.backend.vault.api.VaultMemberResponse
import dev.zrdzn.finance.backend.vault.api.VaultNotFoundByPublicIdException
import dev.zrdzn.finance.backend.vault.api.VaultNotFoundException
Expand Down Expand Up @@ -46,7 +44,7 @@ open class VaultService(
VaultMemberResponse(
id = it.id!!,
vaultId = vaultId,
user = userService.getUserById(it.userId)!!,
user = userService.getUserById(it.userId),
role = it.vaultRole
)
} ?: throw UserNotMemberOfVaultException(vaultId, userId)
Expand Down Expand Up @@ -89,7 +87,7 @@ open class VaultService(

@Transactional
open fun createVaultMemberForcefully(vaultId: VaultId, userId: UserId, vaultRole: VaultRole) {
val vault = getVaultForcefully(vaultId) ?: throw VaultNotFoundException(vaultId)
val vault = getVaultForcefully(vaultId)

vaultMemberRepository
.save(
Expand All @@ -107,7 +105,7 @@ open class VaultService(
open fun createVaultInvitation(vaultId: VaultId, requesterId: UserId, userEmail: String) {
authorizeMember(vaultId, requesterId, VaultPermission.MEMBER_INVITE_CREATE)

val vault = getVault(vaultId, requesterId) ?: throw VaultNotFoundException(vaultId)
val vault = getVault(vaultId, requesterId)

vaultInvitationRepository
.save(
Expand Down Expand Up @@ -138,9 +136,9 @@ open class VaultService(
open fun acceptVaultInvitation(requesterId: UserId, invitationId: VaultInvitationId) {
val invitation = vaultInvitationRepository.findById(invitationId) ?: throw VaultInvitationNotFoundException(invitationId)

val vault = getVaultForcefully(invitation.vaultId) ?: throw VaultNotFoundException(invitation.vaultId)
val vault = getVaultForcefully(invitation.vaultId)

val requester = userService.getUserById(requesterId) ?: throw UserNotFoundException(requesterId)
val requester = userService.getUserById(requesterId)

if (requester.email != invitation.userEmail) {
throw VaultInvitationNotOwnedException(requesterId)
Expand All @@ -157,7 +155,7 @@ open class VaultService(
}

@Transactional(readOnly = true)
open fun getVaultForcefully(vaultId: VaultId): VaultResponse? {
open fun getVaultForcefully(vaultId: VaultId): VaultResponse {
return vaultRepository.findById(vaultId)
?.let {
VaultResponse(
Expand All @@ -170,10 +168,11 @@ open class VaultService(
paymentMethod = it.paymentMethod
)
}
?: throw VaultNotFoundException(vaultId)
}

@Transactional(readOnly = true)
open fun getVault(vaultId: VaultId, requesterId: UserId): VaultResponse? {
open fun getVault(vaultId: VaultId, requesterId: UserId): VaultResponse {
authorizeMember(vaultId, requesterId, VaultPermission.DETAILS_READ)

return getVaultForcefully(vaultId)
Expand Down Expand Up @@ -235,27 +234,14 @@ open class VaultService(
VaultMemberResponse(
id = it.id!!,
vaultId = it.vaultId,
user = userService.getUserById(it.userId)!!,
user = userService.getUserById(it.userId),
role = it.vaultRole
)
}
.toSet()
)
}

@Transactional(readOnly = true)
open fun getVaultMemberForcefully(vaultMemberId: VaultMemberId): VaultMemberResponse =
vaultMemberRepository.findById(vaultMemberId)
?.let {
VaultMemberResponse(
id = it.id!!,
vaultId = it.vaultId,
user = userService.getUserById(it.userId)!!,
role = it.vaultRole
)
}
?: throw VaultMemberNotFoundException(vaultMemberId)

@Transactional(readOnly = true)
open fun getVaultInvitations(vaultId: VaultId, requesterId: UserId): VaultInvitationListResponse {
authorizeMember(vaultId, requesterId, VaultPermission.MEMBER_INVITE_READ)
Expand All @@ -265,7 +251,7 @@ open class VaultService(
.map {
VaultInvitationResponse(
id = it.id!!,
vault = getVaultForcefully(it.vaultId)!!,
vault = getVaultForcefully(it.vaultId),
userEmail = it.userEmail,
expiresAt = it.expiresAt
)
Expand All @@ -276,7 +262,7 @@ open class VaultService(

@Transactional(readOnly = true)
open fun getVaultInvitations(requesterId: UserId, userEmail: String): VaultInvitationListResponse {
val requester = userService.getUserById(requesterId) ?: throw UserNotFoundException(requesterId)
val requester = userService.getUserById(requesterId)

if (requester.email != userEmail) {
throw VaultInvitationNotOwnedException(requesterId)
Expand All @@ -287,7 +273,7 @@ open class VaultService(
.map {
VaultInvitationResponse(
id = it.id!!,
vault = getVaultForcefully(it.vaultId)!!,
vault = getVaultForcefully(it.vaultId),
userEmail = it.userEmail,
expiresAt = it.expiresAt
)
Expand Down Expand Up @@ -329,7 +315,7 @@ open class VaultService(

@Transactional
open fun removeVaultInvitation(vaultId: VaultId, requesterId: UserId, userEmail: String) {
val user = userService.getUserById(requesterId) ?: throw UserNotFoundException(requesterId)
val user = userService.getUserById(requesterId)
if (user.email == userEmail) {
removeVaultInvitationForcefully(vaultId, userEmail)
return
Expand Down

0 comments on commit 7de2e2d

Please sign in to comment.