Skip to content

Commit 1ee37f0

Browse files
authored
🔀 :: (#206) 구조 변경 && 메소드, 변수명 리팩토링
🔀 :: (#206) 구조 변경 && 메소드, 변수명 리팩토링
2 parents 0afec33 + 28e4d8b commit 1ee37f0

22 files changed

+141
-244
lines changed

git-application/src/main/kotlin/com/xquare/v1servicegit/git/Git.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.xquare.v1servicegit.git
22

33
import com.xquare.v1servicegit.common.annotations.Aggregate
4-
import java.util.*
4+
import java.util.UUID
55

66
@Aggregate
77
data class Git(

git-application/src/main/kotlin/com/xquare/v1servicegit/git/dto/response/FindAllUserResponse.kt

+12
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
package com.xquare.v1servicegit.git.dto.response
22

3+
import com.xquare.v1servicegit.git.Git
4+
import com.xquare.v1servicegit.git.dto.response.FindAllUserResponse.FindUserElement
5+
import com.xquare.v1servicegit.user.dto.response.FindUserListResponse.FindUserInfoElement
36
import java.io.Serializable
47
import java.util.UUID
58

@@ -15,3 +18,12 @@ data class FindAllUserResponse(
1518
val ranking: Int,
1619
)
1720
}
21+
22+
fun Git.toUserElement(userInfo: FindUserInfoElement) = FindUserElement(
23+
userId = this.userId,
24+
name = userInfo.name,
25+
username = this.username,
26+
profileFileName = userInfo.profileFileName,
27+
contributions = this.contributions,
28+
ranking = this.ranking,
29+
)

git-application/src/main/kotlin/com/xquare/v1servicegit/git/facade/GitFacade.kt

-43
This file was deleted.

git-application/src/main/kotlin/com/xquare/v1servicegit/git/usecase/FindAllGitUseCase.kt

-34
This file was deleted.

git-application/src/main/kotlin/com/xquare/v1servicegit/git/usecase/FindGitByCurrentUserIdUseCase.kt

-28
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
package com.xquare.v1servicegit.git.usecase
2+
3+
import com.xquare.v1servicegit.common.annotations.UseCase
4+
import com.xquare.v1servicegit.git.Git
5+
import com.xquare.v1servicegit.git.dto.request.FindUserInfoRequest
6+
import com.xquare.v1servicegit.git.dto.response.FindAllUserResponse
7+
import com.xquare.v1servicegit.git.dto.response.toUserElement
8+
import com.xquare.v1servicegit.git.exceptions.GitExceptions
9+
import com.xquare.v1servicegit.git.port.CommandGitPort
10+
import com.xquare.v1servicegit.git.port.QueryGitPort
11+
import com.xquare.v1servicegit.github.port.QueryGithubPort
12+
import com.xquare.v1servicegit.user.port.QueryUserPort
13+
import java.util.UUID
14+
15+
@UseCase
16+
class GitUseCase(
17+
private val commandGitPort: CommandGitPort,
18+
private val queryGitPort: QueryGitPort,
19+
private val queryGithubPort: QueryGithubPort,
20+
private val queryUserPort: QueryUserPort,
21+
) {
22+
23+
suspend fun getAllGithubInfo(): FindAllUserResponse {
24+
val gitInfoList = queryGitPort.getAllGit()
25+
val userIds = gitInfoList.map { it.userId }
26+
val userInfoRequest = FindUserInfoRequest(userIds)
27+
val gitUserInfoList = queryUserPort.getAllUserInfo(userInfoRequest).users
28+
29+
val response = gitInfoList.map { gitInfo ->
30+
val userInfo = gitUserInfoList.find { git -> git.id == gitInfo.userId }
31+
?: throw GitExceptions.NotFound()
32+
gitInfo.toUserElement(userInfo)
33+
}
34+
return FindAllUserResponse(response)
35+
}
36+
37+
suspend fun getMyGithubInfo(currentUserId: UUID): FindAllUserResponse.FindUserElement {
38+
val gitUser = queryGitPort.getGitByUserId(currentUserId)
39+
?: throw GitExceptions.NotFound()
40+
val userInfo = queryUserPort.getNameAndProfileFileName(currentUserId)
41+
42+
return gitUser.toUserElement(userInfo)
43+
}
44+
45+
suspend fun saveGithubUserInfo(currentUserId: UUID, githubCode: String) {
46+
val githubAccessToken = queryGithubPort.getAccessToken(githubCode).accessToken
47+
?: throw GitExceptions.UnauthorizedToken()
48+
val githubUserName = queryGithubPort.getGithubUserInfo(githubAccessToken).login
49+
?: throw GitExceptions.NotFound()
50+
val contributions = queryGitPort.getContributionCount(githubUserName)
51+
52+
commandGitPort.saveUser(
53+
Git(
54+
userId = currentUserId,
55+
username = githubUserName,
56+
contributions = contributions,
57+
ranking = 0,
58+
),
59+
)
60+
}
61+
62+
suspend fun updateGitInfo() {
63+
val gitAllInfo = queryGitPort.getAllGitByContributionCount()
64+
val updateContributionMap = commandGitPort.updateContributionCount(gitAllInfo)
65+
66+
gitAllInfo.forEachIndexed { index, gitInfo ->
67+
val updateContribution = updateContributionMap[gitInfo.userId]
68+
?: throw GitExceptions.NotFound()
69+
commandGitPort.updateGit(
70+
git = gitInfo.updateGit(updateContribution, index + 1),
71+
)
72+
}
73+
}
74+
}

git-application/src/main/kotlin/com/xquare/v1servicegit/git/usecase/SaveUsernameUseCase.kt

-26
This file was deleted.

git-application/src/main/kotlin/com/xquare/v1servicegit/git/usecase/UpdateGitUseCase.kt

-23
This file was deleted.

git-application/src/main/kotlin/com/xquare/v1servicegit/github/dto/GetGithubUserInfoResponse.kt git-application/src/main/kotlin/com/xquare/v1servicegit/github/dto/response/GetGithubUserInfoResponse.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.xquare.v1servicegit.github.dto
1+
package com.xquare.v1servicegit.github.dto.response
22

33
data class GetGithubUserInfoResponse(
44
val login: String?,

git-application/src/main/kotlin/com/xquare/v1servicegit/github/dto/TokenResponse.kt git-application/src/main/kotlin/com/xquare/v1servicegit/github/dto/response/TokenResponse.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.xquare.v1servicegit.github.dto
1+
package com.xquare.v1servicegit.github.dto.response
22

33
import com.fasterxml.jackson.annotation.JsonProperty
44

git-application/src/main/kotlin/com/xquare/v1servicegit/github/port/QueryGithubPort.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.xquare.v1servicegit.github.port
22

3-
import com.xquare.v1servicegit.github.dto.GetGithubUserInfoResponse
4-
import com.xquare.v1servicegit.github.dto.TokenResponse
3+
import com.xquare.v1servicegit.github.dto.response.GetGithubUserInfoResponse
4+
import com.xquare.v1servicegit.github.dto.response.TokenResponse
55

66
interface QueryGithubPort {
77
suspend fun getAccessToken(code: String): TokenResponse

git-application/src/main/kotlin/com/xquare/v1servicegit/github/usecase/GetGithubAccessTokenUseCase.kt

-15
This file was deleted.

git-application/src/main/kotlin/com/xquare/v1servicegit/github/usecase/GetGithubUserInfoUseCase.kt

-15
This file was deleted.

git-application/src/main/kotlin/com/xquare/v1servicegit/user/dto/FindUserListResponse.kt

-16
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.xquare.v1servicegit.user.dto.response
2+
3+
import com.fasterxml.jackson.annotation.JsonProperty
4+
import java.util.UUID
5+
6+
data class FindUserListResponse(
7+
val users: List<FindUserInfoElement>,
8+
) {
9+
data class FindUserInfoElement(
10+
val id: UUID,
11+
val name: String,
12+
13+
@JsonProperty("profile_file_name")
14+
val profileFileName: String?,
15+
)
16+
}

git-application/src/main/kotlin/com/xquare/v1servicegit/user/port/QueryUserPort.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package com.xquare.v1servicegit.user.port
22

33
import com.xquare.v1servicegit.git.dto.request.FindUserInfoRequest
4-
import com.xquare.v1servicegit.user.dto.FindUserInfoElement
5-
import com.xquare.v1servicegit.user.dto.FindUserListResponse
4+
import com.xquare.v1servicegit.user.dto.response.FindUserListResponse
5+
import com.xquare.v1servicegit.user.dto.response.FindUserListResponse.FindUserInfoElement
66
import java.util.UUID
77

88
interface QueryUserPort {

git-infrastructure/src/main/kotlin/com/xquare/v1servicegit/common/config/SecurityConfiguration.kt

+8-3
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package com.xquare.v1servicegit.common.config
22

33
import org.springframework.context.annotation.Bean
44
import org.springframework.context.annotation.Configuration
5+
import org.springframework.http.HttpMethod
56
import org.springframework.http.HttpStatus
67
import org.springframework.security.config.annotation.web.reactive.EnableWebFluxSecurity
78
import org.springframework.security.config.web.server.ServerHttpSecurity
@@ -16,19 +17,23 @@ import reactor.core.publisher.Mono
1617
@EnableWebFluxSecurity
1718
class SecurityConfiguration {
1819
@Bean
19-
protected fun filterChain(http: ServerHttpSecurity): SecurityWebFilterChain {
20-
return http
20+
protected fun filterChain(http: ServerHttpSecurity): SecurityWebFilterChain =
21+
http
22+
.httpBasic().disable()
2123
.formLogin().disable()
2224
.csrf().disable()
2325
.cors().disable()
2426
.authorizeExchange()
27+
.pathMatchers(HttpMethod.POST, "/gits").permitAll()
28+
.pathMatchers(HttpMethod.GET, "/gits").permitAll()
29+
.pathMatchers(HttpMethod.GET, "/gits/all").permitAll()
30+
.pathMatchers(HttpMethod.PATCH, "/gits").permitAll()
2531
.anyExchange().authenticated()
2632
.and()
2733
.httpBasic()
2834
.authenticationEntryPoint(CustomAuthenticationEntryPoint())
2935
.and()
3036
.build()
31-
}
3237
}
3338

3439
@Component

0 commit comments

Comments
 (0)