Skip to content

Commit c529f2a

Browse files
committed
style: 레포 정리
1 parent a08dee8 commit c529f2a

37 files changed

+121
-87
lines changed

.github/workflows/prod.yaml

+3-3
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ jobs:
4545
4646
call-build-workflow:
4747
if: github.event_name == 'push'
48-
needs: [prepare-variables]
48+
needs: [ prepare-variables ]
4949
name: 이미지 빌드 & 푸쉬
5050
uses: ./.github/workflows/build.yaml
5151
permissions:
@@ -64,7 +64,7 @@ jobs:
6464
AWS_REGION: ${{ secrets.AWS_REGION }}
6565

6666
call-deploy-workflow:
67-
needs: [prepare-variables, call-build-workflow]
67+
needs: [ prepare-variables, call-build-workflow ]
6868
name: ArgoCD로 배포하기
6969
uses: ./.github/workflows/argocd.yaml
7070
permissions:
@@ -78,4 +78,4 @@ jobs:
7878
release-tag: ${{ needs.prepare-variables.outputs.image-tag }}
7979
secrets:
8080
AWS_ECR_REGISTRY_URL: ${{ secrets.AWS_ECR_REGISTRY_URL }}
81-
PAT_TOKEN: ${{ secrets.PAT_TOKEN }}
81+
PAT_TOKEN: ${{ secrets.PAT_TOKEN }}

README.md

+2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
# BadSound Counter API (~~dogsound-counter-api~~)
22

33
나쁜말 카운터의 백엔드 서버입니다.
4+
45
## Tech Specification
6+
57
- Java 17
68
- SpringBoot 3.0
79
- SpringBoot WebFlux

config/src/main/resources/db/ddl.cql

+18-16
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1-
DROP KEYSPACE test;
2-
CREATE KEYSPACE test
1+
DROP
2+
KEYSPACE test;
3+
CREATE
4+
KEYSPACE test
35
WITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 3};
46

57
CREATE TABLE message
@@ -38,23 +40,23 @@ CREATE INDEX user_social_idx2 ON test.user_social (provider_key);
3840

3941
CREATE TABLE user
4042
(
41-
user_id text,
42-
email text,
43-
nickname text,
43+
user_id text,
44+
email text,
45+
nickname text,
4446
profile_img_url text,
45-
last_seen_at timestamp,
46-
created_at timestamp,
47+
last_seen_at timestamp,
48+
created_at timestamp,
4749
PRIMARY KEY (user_id)
4850
) WITH COMMENT = 'user table';
4951

5052
CREATE INDEX user_idx1 ON test.user (email);
5153

5254
CREATE TABLE user_device
5355
(
54-
user_id text,
55-
fcm_token text,
56+
user_id text,
57+
fcm_token text,
5658
device_info text,
57-
created_at timestamp,
59+
created_at timestamp,
5860
PRIMARY KEY (user_id, fcm_token),
5961
) WITH COMMENT = 'user device table';
6062
CREATE INDEX user_device_idx1 ON test.user_device (user_id);
@@ -75,13 +77,13 @@ CREATE INDEX violent_idx1 ON test.violent (room_id);
7577

7678
CREATE TABLE room_user
7779
(
78-
room_user_id text,
79-
room_id text,
80-
user_id text,
81-
nickname text,
82-
invited_by text,
80+
room_user_id text,
81+
room_id text,
82+
user_id text,
83+
nickname text,
84+
invited_by text,
8385
last_read_message_id text,
84-
created_at timestamp,
86+
created_at timestamp,
8587
PRIMARY KEY (room_user_id)
8688
) WITH COMMENT = 'room user table';
8789
CREATE INDEX room_user_idx1 ON test.room_user (room_id);

config/src/main/resources/db/dml.cql

+7-5
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
1-
INSERT INTO test.user (user_id, created_at, email, nickname) VALUES ('test', '2023-06-06 05:24:29.902+0000', 'test@bearus.co', '테스트용');
2-
INSERT INTO test.room (room_id, created_at, owner_id, room_nm) VALUES ('test', '2023-06-06 05:24:29.902+0000', 'test', '테스트방');
1+
INSERT INTO test.user (user_id, created_at, email, nickname)
2+
VALUES ('test', '2023-06-06 05:24:29.902+0000', 'test@bearus.co', '테스트용');
3+
INSERT INTO test.room (room_id, created_at, owner_id, room_nm)
4+
VALUES ('test', '2023-06-06 05:24:29.902+0000', 'test', '테스트방');
35
INSERT INTO test.room_user (room_user_id, room_id, user_id, nickname, invited_by, last_read_message_id, created_at)
4-
VALUES ('test_1', 'test', 'test', '엄준식', 'test', NULL, '2023-06-06 05:24:29.902+0000');
6+
VALUES ('test_1', 'test', 'test', '엄준식', 'test', NULL, '2023-06-06 05:24:29.902+0000');
57
INSERT INTO test.violent (violent_id, created_at, created_user_id, description, name, room_id, violent_price)
6-
VALUES ('test', '2023-06-06 05:24:29.902+0000', 'test', '테스트 위반', 'um', 'test', 20000);
8+
VALUES ('test', '2023-06-06 05:24:29.902+0000', 'test', '테스트 위반', 'um', 'test', 20000);
79
INSERT INTO test.message (message_id, catcher_id, content, created_at, room_id, speaker_id, violent_id, violent_price)
8-
VALUES ('message_1', 'test', 'um 이라는 욕을?','2023-06-06 05:24:29.902+0000', 'test', 'test', 'test', 20000);
10+
VALUES ('message_1', 'test', 'um 이라는 욕을?', '2023-06-06 05:24:29.902+0000', 'test', 'test', 'test', 20000);
911

Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package co.bearus.dogsoundcounter.entities
22

3-
data class ClientPacket (
3+
data class ClientPacket(
44
val packetType: PacketType,
55
val payload: Any,
66
)

entity/src/main/kotlin/co/bearus/dogsoundcounter/entities/MockNickGenerator.kt

+29-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,35 @@ package co.bearus.dogsoundcounter.entities
22

33
object MockNickGenerator {
44
val prefix = listOf("멋있는", "맛있는", "대단한", "엄청난", "위대한", "행복한", "즐거운", "새로운")
5-
val suffix = listOf("식사", "과일", "", "커피", "", "음악", "영화", "채팅", "통화", "코딩", "휴식", "여행", "운동", "게임", "독서", "공부", "숙제", "과제", "취미", "취업", "연애", "결혼", "투자", "프로그래밍", "개발", "코딩", "테스트")
5+
val suffix = listOf(
6+
"식사",
7+
"과일",
8+
"",
9+
"커피",
10+
"",
11+
"음악",
12+
"영화",
13+
"채팅",
14+
"통화",
15+
"코딩",
16+
"휴식",
17+
"여행",
18+
"운동",
19+
"게임",
20+
"독서",
21+
"공부",
22+
"숙제",
23+
"과제",
24+
"취미",
25+
"취업",
26+
"연애",
27+
"결혼",
28+
"투자",
29+
"프로그래밍",
30+
"개발",
31+
"코딩",
32+
"테스트"
33+
)
634

735
fun generate() = "${prefix.random()} ${suffix.random()}"
836
}

infrastructure/src/main/kotlin/co/bearus/dogsoundcounter/infrastructure/FirebaseMessagePublisher.kt

+5-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,10 @@ import co.bearus.dogsoundcounter.entities.ClientPacket
44
import co.bearus.dogsoundcounter.usecases.MessagePublisher
55
import co.bearus.dogsoundcounter.usecases.user.UserDeviceRepository
66
import com.fasterxml.jackson.databind.ObjectMapper
7-
import com.google.firebase.messaging.*
7+
import com.google.firebase.messaging.ApnsConfig
8+
import com.google.firebase.messaging.Aps
9+
import com.google.firebase.messaging.FirebaseMessaging
10+
import com.google.firebase.messaging.MulticastMessage
811
import org.springframework.stereotype.Component
912

1013

@@ -13,7 +16,7 @@ class FirebaseMessagePublisher(
1316
private val userDeviceRepository: UserDeviceRepository,
1417
private val objectMapper: ObjectMapper,
1518
private val firebaseMessaging: FirebaseMessaging,
16-
): MessagePublisher {
19+
) : MessagePublisher {
1720
override suspend fun publishMessage(userId: String, message: ClientPacket): Boolean {
1821
val devices = userDeviceRepository.getUserDevices(userId)
1922
sendDataMulti(devices.map { it.fcmToken }, message)

infrastructure/src/main/kotlin/co/bearus/dogsoundcounter/infrastructure/FirebaseNotificationGateway.kt

+13-11
Original file line numberDiff line numberDiff line change
@@ -2,40 +2,42 @@ package co.bearus.dogsoundcounter.infrastructure
22

33
import co.bearus.dogsoundcounter.usecases.Notification
44
import co.bearus.dogsoundcounter.usecases.NotificationGateway
5-
import com.google.firebase.messaging.ApnsConfig
6-
import com.google.firebase.messaging.Aps
7-
import com.google.firebase.messaging.FirebaseMessaging
8-
import com.google.firebase.messaging.Message
9-
import com.google.firebase.messaging.MulticastMessage
5+
import com.google.firebase.messaging.*
106
import org.springframework.stereotype.Component
117

128
@Component
139
class FirebaseNotificationGateway(
1410
private val firebaseMessaging: FirebaseMessaging,
15-
): NotificationGateway {
11+
) : NotificationGateway {
1612
override fun sendSingle(fcmToken: String, notification: Notification) {
1713
val message: Message = Message.builder()
18-
.setNotification(com.google.firebase.messaging.Notification.builder().setTitle(notification.title).setBody(notification.body).build())
14+
.setNotification(
15+
com.google.firebase.messaging.Notification.builder().setTitle(notification.title)
16+
.setBody(notification.body).build()
17+
)
1918
.setToken(fcmToken)
2019
.setApnsConfig(ApnsConfig.builder().setAps(Aps.builder().setSound("default").build()).build())
2120
.build()
2221
try {
2322
firebaseMessaging.sendAsync(message)
24-
}catch (e: Exception){
23+
} catch (e: Exception) {
2524
e.printStackTrace()
2625
}
2726
}
2827

2928
override fun sendMulti(fcmTokens: List<String>, notification: Notification) {
30-
if(fcmTokens.isEmpty()) return
29+
if (fcmTokens.isEmpty()) return
3130
val message: MulticastMessage = MulticastMessage.builder()
32-
.setNotification(com.google.firebase.messaging.Notification.builder().setTitle(notification.title).setBody(notification.body).build())
31+
.setNotification(
32+
com.google.firebase.messaging.Notification.builder().setTitle(notification.title)
33+
.setBody(notification.body).build()
34+
)
3335
.addAllTokens(fcmTokens)
3436
.setApnsConfig(ApnsConfig.builder().setAps(Aps.builder().setSound("default").build()).build())
3537
.build()
3638
try {
3739
firebaseMessaging.sendMulticastAsync(message)
38-
}catch (e: Exception){
40+
} catch (e: Exception) {
3941
e.printStackTrace()
4042
}
4143
}

infrastructure/src/main/kotlin/co/bearus/dogsoundcounter/infrastructure/JWTTokenProvider.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ class JWTTokenProvider(
3636
return try {
3737
Jwts.parserBuilder().setSigningKey(signKey).build()
3838
.parseClaimsJws(token).body["id"] as String
39-
} catch (e: Exception){
39+
} catch (e: Exception) {
4040
null
4141
}
4242
}
@@ -59,4 +59,4 @@ class JWTTokenProvider(
5959
private fun generateRefreshTokenExpiration() =
6060
Date(System.currentTimeMillis() + properties.refreshTokenValidity * 1000)
6161

62-
}
62+
}

infrastructure/src/main/kotlin/co/bearus/dogsoundcounter/infrastructure/JacksonObjectSerializer.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import org.springframework.stereotype.Component
77
@Component
88
class JacksonObjectSerializer(
99
private val objectMapper: ObjectMapper,
10-
): ObjectSerializer {
10+
) : ObjectSerializer {
1111
override fun serialize(data: Any): String {
1212
return objectMapper.writeValueAsString(data)
1313
}

infrastructure/src/main/kotlin/co/bearus/dogsoundcounter/infrastructure/KafkaMessagePublisher.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import reactor.kafka.sender.SenderOptions
1616
@Component
1717
class KafkaMessagePublisher(
1818
private val objectMapper: ObjectMapper,
19-
): MessagePublisher{
19+
) : MessagePublisher {
2020
val producerOpts = SenderOptions.create<Int, String>(getProps())
2121
.maxInFlight(1024).let {
2222
KafkaSender.create(it)

infrastructure/src/main/kotlin/co/bearus/dogsoundcounter/infrastructure/KafkaMessageReceiver.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import reactor.kafka.receiver.ReceiverOptions
1414
@Component
1515
class KafkaMessageReceiver(
1616
private val objectMapper: ObjectMapper,
17-
): MessageReceiver{
17+
) : MessageReceiver {
1818
override fun createChannel(userId: String): Flux<ClientPacket> {
1919
val receiverOpts = ReceiverOptions.create<Int, String>(getProps())
2020
.subscription(listOf("messages:$userId"))

infrastructure/src/main/kotlin/co/bearus/dogsoundcounter/infrastructure/MessagePublisherFactoryImpl.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import org.springframework.stereotype.Component
88
class MessagePublisherFactoryImpl(
99
private val kafkaMessagePublisher: KafkaMessagePublisher,
1010
private val firebaseMessagePublisher: FirebaseMessagePublisher,
11-
): MessagePublisherFactory {
11+
) : MessagePublisherFactory {
1212
override fun getSuitableFactory(userId: String): MessagePublisher {
1313
//TODO: IF ONLINE -> KAFKA // ELSE -> PUSH
1414
return firebaseMessagePublisher

infrastructure/src/main/kotlin/co/bearus/dogsoundcounter/infrastructure/repositories/CassandraRoomUserRepository.kt

+1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import org.springframework.stereotype.Repository
99
interface CassandraRoomUserRepository : CoroutineCrudRepository<CassandraRoomUserEntity, String> {
1010
suspend fun findAllByRoomId(roomId: String): List<CassandraRoomUserEntity>
1111
suspend fun findAllByUserId(userId: String): List<CassandraRoomUserEntity>
12+
1213
@AllowFiltering
1314
suspend fun findByRoomIdAndUserId(roomId: String, userId: String): CassandraRoomUserEntity
1415
}

infrastructure/src/main/kotlin/co/bearus/dogsoundcounter/infrastructure/repositories/CassandraUserDeviceRepository.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import org.springframework.data.repository.kotlin.CoroutineCrudRepository
55
import org.springframework.stereotype.Repository
66

77
@Repository
8-
interface CassandraUserDeviceRepository: CoroutineCrudRepository<CassandraUserDeviceEntity, String> {
8+
interface CassandraUserDeviceRepository : CoroutineCrudRepository<CassandraUserDeviceEntity, String> {
99
suspend fun findAllByUserId(userId: String): List<CassandraUserDeviceEntity>
1010
suspend fun findFirstByUserIdAndFcmToken(userId: String, fcmToken: String): CassandraUserDeviceEntity?
1111
suspend fun deleteAllByFcmToken(fcmToken: String)

infrastructure/src/main/kotlin/co/bearus/dogsoundcounter/infrastructure/repositories/MessageRepositoryImpl.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import org.springframework.stereotype.Repository
99
@Repository
1010
class MessageRepositoryImpl(
1111
private val cassandraMessageRepository: CassandraMessageRepository,
12-
): MessageRepository {
12+
) : MessageRepository {
1313
override suspend fun persist(message: Message): Message {
1414
return cassandraMessageRepository.save(
1515
CassandraMessageEntity.fromDomain(message)

infrastructure/src/main/kotlin/co/bearus/dogsoundcounter/infrastructure/repositories/RoomUserRepositoryImpl.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import org.springframework.stereotype.Repository
88
@Repository
99
class RoomUserRepositoryImpl(
1010
private val cassandraRoomUserRepository: CassandraRoomUserRepository,
11-
): RoomUserRepository {
11+
) : RoomUserRepository {
1212
override suspend fun findByUserId(userId: String): List<RoomUser> {
1313
return cassandraRoomUserRepository.findAllByUserId(userId).map { it.toDomain() }
1414
}

infrastructure/src/main/kotlin/co/bearus/dogsoundcounter/infrastructure/repositories/UserDeviceRepositoryImpl.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import org.springframework.stereotype.Repository
88
@Repository
99
class UserDeviceRepositoryImpl(
1010
private val cassandraUserDeviceRepository: CassandraUserDeviceRepository,
11-
): UserDeviceRepository {
11+
) : UserDeviceRepository {
1212
override suspend fun getUserDevices(userId: String): List<UserDevice> {
1313
return cassandraUserDeviceRepository.findAllByUserId(userId)
1414
.map { it.toDomain() }

infrastructure/src/main/kotlin/co/bearus/dogsoundcounter/infrastructure/repositories/ViolentRepositoryImpl.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import org.springframework.stereotype.Repository
88
@Repository
99
class ViolentRepositoryImpl(
1010
private val cassandraViolentRepository: CassandraViolentRepository,
11-
): ViolentRepository {
11+
) : ViolentRepository {
1212
override suspend fun getById(violentId: String): Violent {
1313
return cassandraViolentRepository.getByViolentId(violentId).toDomain()
1414
}
@@ -22,4 +22,4 @@ class ViolentRepositoryImpl(
2222
CassandraViolentEntity.fromDomain(violent)
2323
).toDomain()
2424
}
25-
}
25+
}

presenter/src/main/kotlin/co/bearus/dogsoundcounter/presenter/AuthUser.kt

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package co.bearus.dogsoundcounter.presenter
22

3-
import org.slf4j.LoggerFactory
43
import org.springframework.core.MethodParameter
54
import org.springframework.stereotype.Component
65
import org.springframework.web.reactive.BindingContext
@@ -12,7 +11,7 @@ import reactor.core.publisher.Mono
1211
annotation class RequestUser
1312

1413
@Component
15-
class AuthUserArgumentResolver: org.springframework.web.reactive.result.method.HandlerMethodArgumentResolver {
14+
class AuthUserArgumentResolver : org.springframework.web.reactive.result.method.HandlerMethodArgumentResolver {
1615
override fun supportsParameter(parameter: MethodParameter): Boolean {
1716
return parameter.getParameterAnnotation(RequestUser::class.java) != null
1817
}
@@ -32,4 +31,4 @@ class AuthUserArgumentResolver: org.springframework.web.reactive.result.method.H
3231

3332
data class LoginUser(
3433
val userId: String,
35-
)
34+
)

presenter/src/main/kotlin/co/bearus/dogsoundcounter/presenter/CoroutineExtension.kt

+1-5
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,7 @@
11
package co.bearus.dogsoundcounter.presenter
22

33
import co.bearus.dogsoundcounter.usecases.UseCase
4-
import kotlinx.coroutines.Dispatchers
5-
import kotlinx.coroutines.coroutineScope
6-
import kotlinx.coroutines.withContext
7-
import kotlinx.coroutines.async
8-
import kotlinx.coroutines.awaitAll
4+
import kotlinx.coroutines.*
95

106
suspend fun <F, T, R> withUseCase(useCase: UseCase<F, T>, param: F, mappingFunction: suspend (T) -> R): R {
117
withContext(Dispatchers.Default) {

presenter/src/main/kotlin/co/bearus/dogsoundcounter/presenter/UseCaseImplementer.kt

-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package co.bearus.dogsoundcounter.presenter
33
import co.bearus.dogsoundcounter.usecases.IdentityGenerator
44
import co.bearus.dogsoundcounter.usecases.MessagePublisherFactory
55
import co.bearus.dogsoundcounter.usecases.NotificationGateway
6-
import co.bearus.dogsoundcounter.usecases.ObjectSerializer
76
import co.bearus.dogsoundcounter.usecases.message.CreateNewMessageUseCase
87
import co.bearus.dogsoundcounter.usecases.message.GetMessagesByRoomUseCase
98
import co.bearus.dogsoundcounter.usecases.message.MessageRepository

presenter/src/main/kotlin/co/bearus/dogsoundcounter/presenter/config/WebConfig.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ class WebConfig(
1717
private val resolver: AuthUserArgumentResolver,
1818
private val authManager: APIAuthenticationManager,
1919
private val tokenValidator: TokenValidator,
20-
): WebFluxConfigurer {
20+
) : WebFluxConfigurer {
2121
override fun configureArgumentResolvers(configurer: ArgumentResolverConfigurer) {
2222
configurer.addCustomResolver(resolver)
2323
}

0 commit comments

Comments
 (0)