멀티 모듈 분석 (2025.12.25 ver.)
멀티 모듈 분석 (2025.12.26 ver.)
멀티 모듈 분석 (2026.01.05 ver.)
멀티 모듈 분석 (2026.01.13 ver.)
멀티 모듈 분석 (2026.01.14 ver.)
├── applications
│ └── api
│ ├── build
│ │ ├── classes
│ │ │ └── java
│ │ │ └── main
│ │ │ └── com
│ │ │ └── mopl
│ │ │ └── api
│ │ │ ├── ApiApplication.class
│ │ │ ├── application
│ │ │ │ ├── content
│ │ │ │ │ └── ContentFacade.class
│ │ │ │ ├── review
│ │ │ │ │ └── ReviewFacade.class
│ │ │ │ └── user
│ │ │ │ ├── FollowFacade.class
│ │ │ │ └── UserFacade.class
│ │ │ ├── config
│ │ │ │ ├── AdminInitializer.class
│ │ │ │ ├── AdminProperties.class
│ │ │ │ ├── DomainServiceConfig.class
│ │ │ │ └── SecurityRegistryImpl.class
│ │ │ └── interfaces
│ │ │ └── api
│ │ │ ├── ApiControllerAdvice.class
│ │ │ ├── ApiControllerAdvice$FieldErrorDetail.class
│ │ │ ├── ApiControllerAdvice$GlobalErrorDetail.class
│ │ │ ├── auth
│ │ │ │ ├── AuthApiSpec.class
│ │ │ │ └── AuthController.class
│ │ │ ├── content
│ │ │ │ ├── ContentApiSpec.class
│ │ │ │ ├── ContentController.class
│ │ │ │ ├── ContentCreateRequest.class
│ │ │ │ ├── ContentResponse.class
│ │ │ │ └── ContentResponseMapper.class
│ │ │ ├── review
│ │ │ │ ├── ReviewController.class
│ │ │ │ ├── ReviewCreateRequest.class
│ │ │ │ ├── ReviewResponse.class
│ │ │ │ └── ReviewResponseMapper.class
│ │ │ └── user
│ │ │ ├── FollowApiSpec.class
│ │ │ ├── FollowController.class
│ │ │ ├── FollowRequest.class
│ │ │ ├── FollowResponse.class
│ │ │ ├── FollowResponseMapper.class
│ │ │ ├── UserApiSpec.class
│ │ │ ├── UserController.class
│ │ │ ├── UserCreateRequest.class
│ │ │ ├── UserResponse.class
│ │ │ ├── UserResponseMapper.class
│ │ │ ├── UserRoleUpdateRequest.class
│ │ │ ├── UserSummary.class
│ │ │ └── UserSummaryMapper.class
│ │ ├── generated
│ │ │ └── sources
│ │ │ ├── annotationProcessor
│ │ │ │ └── java
│ │ │ │ ├── main
│ │ │ │ └── test
│ │ │ └── headers
│ │ │ └── java
│ │ │ ├── main
│ │ │ └── test
│ │ ├── resources
│ │ │ └── main
│ │ │ ├── application.yaml
│ │ │ └── static
│ │ │ ├── assets
│ │ │ │ ├── il_password-2BUOiZum.svg
│ │ │ │ ├── index-CGco0jMy.css
│ │ │ │ ├── index-DfEnD8Gr.js
│ │ │ │ └── PretendardVariable-CJuje-Rk.woff2
│ │ │ ├── index.html
│ │ │ └── vite.svg
│ │ ├── spotless
│ │ │ └── spotlessJava
│ │ └── tmp
│ │ ├── checkstyleMain
│ │ ├── checkstyleTest
│ │ ├── compileJava
│ │ │ └── previous-compilation-data.bin
│ │ └── test
│ ├── build.gradle.kts
│ ├── out
│ │ └── production
│ │ └── classes
│ │ └── generated
│ └── src
│ ├── main
│ │ ├── generated
│ │ ├── java
│ │ │ └── com
│ │ │ └── mopl
│ │ │ └── api
│ │ │ ├── ApiApplication.java
│ │ │ ├── application
│ │ │ │ ├── content
│ │ │ │ │ └── ContentFacade.java
│ │ │ │ ├── review
│ │ │ │ │ └── ReviewFacade.java
│ │ │ │ └── user
│ │ │ │ ├── FollowFacade.java
│ │ │ │ └── UserFacade.java
│ │ │ ├── config
│ │ │ │ ├── AdminInitializer.java
│ │ │ │ ├── AdminProperties.java
│ │ │ │ ├── DomainServiceConfig.java
│ │ │ │ └── SecurityRegistryImpl.java
│ │ │ └── interfaces
│ │ │ └── api
│ │ │ ├── ApiControllerAdvice.java
│ │ │ ├── auth
│ │ │ │ ├── AuthApiSpec.java
│ │ │ │ └── AuthController.java
│ │ │ ├── content
│ │ │ │ ├── ContentApiSpec.java
│ │ │ │ ├── ContentController.java
│ │ │ │ ├── ContentCreateRequest.java
│ │ │ │ ├── ContentResponse.java
│ │ │ │ └── ContentResponseMapper.java
│ │ │ ├── review
│ │ │ │ ├── ReviewController.java
│ │ │ │ ├── ReviewCreateRequest.java
│ │ │ │ ├── ReviewResponse.java
│ │ │ │ └── ReviewResponseMapper.java
│ │ │ └── user
│ │ │ ├── FollowApiSpec.java
│ │ │ ├── FollowController.java
│ │ │ ├── FollowRequest.java
│ │ │ ├── FollowResponse.java
│ │ │ ├── FollowResponseMapper.java
│ │ │ ├── UserApiSpec.java
│ │ │ ├── UserController.java
│ │ │ ├── UserCreateRequest.java
│ │ │ ├── UserResponse.java
│ │ │ ├── UserResponseMapper.java
│ │ │ ├── UserRoleUpdateRequest.java
│ │ │ ├── UserSummary.java
│ │ │ └── UserSummaryMapper.java
│ │ └── resources
│ │ ├── application.yaml
│ │ └── static
│ │ ├── assets
│ │ │ ├── il_password-2BUOiZum.svg
│ │ │ ├── index-CGco0jMy.css
│ │ │ ├── index-DfEnD8Gr.js
│ │ │ └── PretendardVariable-CJuje-Rk.woff2
│ │ ├── index.html
│ │ └── vite.svg
│ └── test
│ ├── java
│ │ └── com
│ │ └── mopl
│ │ └── api
│ │ ├── application
│ │ │ ├── content
│ │ │ │ └── ContentFacadeTest.java
│ │ │ ├── review
│ │ │ │ └── ReviewFacadeTest.java
│ │ │ └── user
│ │ │ └── UserFacadeTest.java
│ │ ├── config
│ │ │ └── AdminInitializerTest.java
│ │ └── interfaces
│ │ └── api
│ │ ├── ApiControllerAdviceTest.java
│ │ ├── auth
│ │ │ └── AuthControllerTest.java
│ │ ├── content
│ │ │ ├── ContentControllerTest.java
│ │ │ └── ContentResponseMapperTest.java
│ │ ├── review
│ │ │ ├── ReviewControllerTest.java
│ │ │ └── ReviewResponseMapperTest.java
│ │ └── user
│ │ ├── UserControllerTest.java
│ │ └── UserResponseMapperTest.java
│ └── resources
│ └── application.yaml
├── build.gradle.kts
├── config
│ ├── checkstyle
│ │ └── google_checks.xml
│ └── eclipse
│ └── eclipse-java-formatter.xml
├── core
│ └── domain
│ ├── build
│ │ ├── classes
│ │ │ └── java
│ │ │ └── main
│ │ │ └── com
│ │ │ └── mopl
│ │ │ └── domain
│ │ │ ├── exception
│ │ │ │ ├── ApiErrorCode.class
│ │ │ │ ├── auth
│ │ │ │ │ ├── AccountLockedException.class
│ │ │ │ │ ├── AuthErrorCode.class
│ │ │ │ │ ├── AuthException.class
│ │ │ │ │ ├── InsufficientRoleException.class
│ │ │ │ │ ├── InvalidCredentialsException.class
│ │ │ │ │ ├── InvalidTokenException.class
│ │ │ │ │ └── UnauthorizedException.class
│ │ │ │ ├── content
│ │ │ │ │ ├── ContentErrorCode.class
│ │ │ │ │ ├── ContentException.class
│ │ │ │ │ ├── ContentNotFoundException.class
│ │ │ │ │ └── InvalidContentDataException.class
│ │ │ │ ├── ErrorCode.class
│ │ │ │ ├── ErrorResponse.class
│ │ │ │ ├── InternalServerException.class
│ │ │ │ ├── MoplException.class
│ │ │ │ ├── review
│ │ │ │ │ ├── InvalidReviewDataException.class
│ │ │ │ │ ├── ReviewErrorCode.class
│ │ │ │ │ └── ReviewException.class
│ │ │ │ ├── tag
│ │ │ │ │ ├── InvalidTagDataException.class
│ │ │ │ │ ├── TagErrorCode.class
│ │ │ │ │ └── TagException.class
│ │ │ │ └── user
│ │ │ │ ├── DuplicateEmailException.class
│ │ │ │ ├── FollowException.class
│ │ │ │ ├── InvalidUserDataException.class
│ │ │ │ ├── SelfFollowException.class
│ │ │ │ ├── UserErrorCode.class
│ │ │ │ ├── UserException.class
│ │ │ │ └── UserNotFoundException.class
│ │ │ ├── model
│ │ │ │ ├── base
│ │ │ │ │ ├── BaseModel.class
│ │ │ │ │ ├── BaseModel$BaseModelBuilder.class
│ │ │ │ │ ├── BaseUpdatableModel.class
│ │ │ │ │ └── BaseUpdatableModel$BaseUpdatableModelBuilder.class
│ │ │ │ ├── content
│ │ │ │ │ ├── ContentModel.class
│ │ │ │ │ ├── ContentModel$ContentModelBuilder.class
│ │ │ │ │ └── ContentModel$ContentModelBuilderImpl.class
│ │ │ │ ├── notification
│ │ │ │ │ └── NotificationLevel.class
│ │ │ │ ├── review
│ │ │ │ │ ├── ReviewModel.class
│ │ │ │ │ ├── ReviewModel$ReviewModelBuilder.class
│ │ │ │ │ └── ReviewModel$ReviewModelBuilderImpl.class
│ │ │ │ ├── tag
│ │ │ │ │ ├── TagModel.class
│ │ │ │ │ ├── TagModel$TagModelBuilder.class
│ │ │ │ │ └── TagModel$TagModelBuilderImpl.class
│ │ │ │ └── user
│ │ │ │ ├── FollowModel.class
│ │ │ │ ├── FollowModel$FollowModelBuilder.class
│ │ │ │ ├── FollowModel$FollowModelBuilderImpl.class
│ │ │ │ ├── UserModel.class
│ │ │ │ ├── UserModel$AuthProvider.class
│ │ │ │ ├── UserModel$Role.class
│ │ │ │ ├── UserModel$UserModelBuilder.class
│ │ │ │ └── UserModel$UserModelBuilderImpl.class
│ │ │ ├── repository
│ │ │ │ ├── content
│ │ │ │ │ ├── ContentRepository.class
│ │ │ │ │ └── ContentTagRepository.class
│ │ │ │ ├── review
│ │ │ │ │ └── ReviewRepository.class
│ │ │ │ ├── tag
│ │ │ │ │ └── TagRepository.class
│ │ │ │ └── user
│ │ │ │ ├── FollowRepository.class
│ │ │ │ └── UserRepository.class
│ │ │ └── service
│ │ │ ├── content
│ │ │ │ └── ContentService.class
│ │ │ ├── review
│ │ │ │ └── ReviewService.class
│ │ │ ├── tag
│ │ │ │ └── TagService.class
│ │ │ └── user
│ │ │ ├── FollowService.class
│ │ │ └── UserService.class
│ │ ├── generated
│ │ │ └── sources
│ │ │ ├── annotationProcessor
│ │ │ │ └── java
│ │ │ │ ├── main
│ │ │ │ └── test
│ │ │ └── headers
│ │ │ └── java
│ │ │ ├── main
│ │ │ └── test
│ │ ├── libs
│ │ │ └── domain-0.0.1.jar
│ │ ├── spotless
│ │ │ └── spotlessJava
│ │ └── tmp
│ │ ├── checkstyleMain
│ │ ├── checkstyleTest
│ │ ├── compileJava
│ │ │ └── previous-compilation-data.bin
│ │ ├── jar
│ │ │ └── MANIFEST.MF
│ │ └── test
│ ├── build.gradle.kts
│ ├── out
│ │ └── production
│ │ └── classes
│ │ └── generated
│ └── src
│ ├── main
│ │ ├── generated
│ │ └── java
│ │ └── com
│ │ └── mopl
│ │ └── domain
│ │ ├── exception
│ │ │ ├── ApiErrorCode.java
│ │ │ ├── auth
│ │ │ │ ├── AccountLockedException.java
│ │ │ │ ├── AuthErrorCode.java
│ │ │ │ ├── AuthException.java
│ │ │ │ ├── InsufficientRoleException.java
│ │ │ │ ├── InvalidCredentialsException.java
│ │ │ │ ├── InvalidTokenException.java
│ │ │ │ └── UnauthorizedException.java
│ │ │ ├── content
│ │ │ │ ├── ContentErrorCode.java
│ │ │ │ ├── ContentException.java
│ │ │ │ ├── ContentNotFoundException.java
│ │ │ │ └── InvalidContentDataException.java
│ │ │ ├── ErrorCode.java
│ │ │ ├── ErrorResponse.java
│ │ │ ├── InternalServerException.java
│ │ │ ├── MoplException.java
│ │ │ ├── review
│ │ │ │ ├── InvalidReviewDataException.java
│ │ │ │ ├── ReviewErrorCode.java
│ │ │ │ └── ReviewException.java
│ │ │ ├── tag
│ │ │ │ ├── InvalidTagDataException.java
│ │ │ │ ├── TagErrorCode.java
│ │ │ │ └── TagException.java
│ │ │ └── user
│ │ │ ├── DuplicateEmailException.java
│ │ │ ├── FollowException.java
│ │ │ ├── InvalidUserDataException.java
│ │ │ ├── SelfFollowException.java
│ │ │ ├── UserErrorCode.java
│ │ │ ├── UserException.java
│ │ │ └── UserNotFoundException.java
│ │ ├── model
│ │ │ ├── base
│ │ │ │ ├── BaseModel.java
│ │ │ │ └── BaseUpdatableModel.java
│ │ │ ├── content
│ │ │ │ └── ContentModel.java
│ │ │ ├── notification
│ │ │ │ └── NotificationLevel.java
│ │ │ ├── review
│ │ │ │ └── ReviewModel.java
│ │ │ ├── tag
│ │ │ │ └── TagModel.java
│ │ │ └── user
│ │ │ ├── FollowModel.java
│ │ │ └── UserModel.java
│ │ ├── repository
│ │ │ ├── content
│ │ │ │ ├── ContentRepository.java
│ │ │ │ └── ContentTagRepository.java
│ │ │ ├── review
│ │ │ │ └── ReviewRepository.java
│ │ │ ├── tag
│ │ │ │ └── TagRepository.java
│ │ │ └── user
│ │ │ ├── FollowRepository.java
│ │ │ └── UserRepository.java
│ │ └── service
│ │ ├── content
│ │ │ └── ContentService.java
│ │ ├── review
│ │ │ └── ReviewService.java
│ │ ├── tag
│ │ │ └── TagService.java
│ │ └── user
│ │ ├── FollowService.java
│ │ └── UserService.java
│ └── test
│ └── java
│ └── com
│ └── mopl
│ └── domain
│ ├── model
│ │ ├── base
│ │ │ ├── BaseModelTest.java
│ │ │ └── BaseUpdatableModelTest.java
│ │ ├── content
│ │ │ └── ContentModelTest.java
│ │ ├── review
│ │ │ └── ReviewModelTest.java
│ │ ├── tag
│ │ │ └── TagModelTest.java
│ │ └── user
│ │ └── UserModelTest.java
│ └── service
│ ├── content
│ │ └── ContentServiceTest.java
│ ├── review
│ │ └── ReviewServiceTest.java
│ ├── tag
│ │ └── TagServiceTest.java
│ └── user
│ ├── FollowServiceTest.java
│ └── UserServiceTest.java
├── gradle
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── infrastructure
│ ├── jpa
│ │ ├── build
│ │ │ ├── classes
│ │ │ │ └── java
│ │ │ │ └── main
│ │ │ │ └── com
│ │ │ │ └── mopl
│ │ │ │ └── jpa
│ │ │ │ ├── config
│ │ │ │ │ ├── JpaConfig.class
│ │ │ │ │ └── QuerydslConfig.class
│ │ │ │ ├── entity
│ │ │ │ │ ├── base
│ │ │ │ │ │ ├── BaseEntity.class
│ │ │ │ │ │ ├── BaseEntity$BaseEntityBuilder.class
│ │ │ │ │ │ ├── BaseUpdatableEntity.class
│ │ │ │ │ │ ├── BaseUpdatableEntity$BaseUpdatableEntityBuilder.class
│ │ │ │ │ │ ├── QBaseEntity.class
│ │ │ │ │ │ ├── QBaseUpdatableEntity.class
│ │ │ │ │ │ ├── UuidV7.class
│ │ │ │ │ │ └── UuidV7Generator.class
│ │ │ │ │ ├── content
│ │ │ │ │ │ ├── ContentEntity.class
│ │ │ │ │ │ ├── ContentEntity$ContentEntityBuilder.class
│ │ │ │ │ │ ├── ContentEntity$ContentEntityBuilderImpl.class
│ │ │ │ │ │ ├── ContentEntityMapper.class
│ │ │ │ │ │ ├── ContentTagEntity.class
│ │ │ │ │ │ ├── ContentTagEntity$ContentTagEntityBuilder.class
│ │ │ │ │ │ ├── ContentTagEntity$ContentTagEntityBuilderImpl.class
│ │ │ │ │ │ ├── QContentEntity.class
│ │ │ │ │ │ └── QContentTagEntity.class
│ │ │ │ │ ├── conversation
│ │ │ │ │ │ ├── ConversationEntity.class
│ │ │ │ │ │ ├── ConversationEntity$ConversationEntityBuilder.class
│ │ │ │ │ │ ├── ConversationEntity$ConversationEntityBuilderImpl.class
│ │ │ │ │ │ ├── DirectMessageEntity.class
│ │ │ │ │ │ ├── DirectMessageEntity$DirectMessageEntityBuilder.class
│ │ │ │ │ │ ├── DirectMessageEntity$DirectMessageEntityBuilderImpl.class
│ │ │ │ │ │ ├── QConversationEntity.class
│ │ │ │ │ │ ├── QDirectMessageEntity.class
│ │ │ │ │ │ ├── QReadStatusEntity.class
│ │ │ │ │ │ ├── ReadStatusEntity.class
│ │ │ │ │ │ ├── ReadStatusEntity$ReadStatusEntityBuilder.class
│ │ │ │ │ │ └── ReadStatusEntity$ReadStatusEntityBuilderImpl.class
│ │ │ │ │ ├── notification
│ │ │ │ │ │ ├── NotificationEntity.class
│ │ │ │ │ │ ├── NotificationEntity$NotificationEntityBuilder.class
│ │ │ │ │ │ ├── NotificationEntity$NotificationEntityBuilderImpl.class
│ │ │ │ │ │ └── QNotificationEntity.class
│ │ │ │ │ ├── playlist
│ │ │ │ │ │ ├── PlaylistContentEntity.class
│ │ │ │ │ │ ├── PlaylistContentEntity$PlaylistContentEntityBuilder.class
│ │ │ │ │ │ ├── PlaylistContentEntity$PlaylistContentEntityBuilderImpl.class
│ │ │ │ │ │ ├── PlaylistEntity.class
│ │ │ │ │ │ ├── PlaylistEntity$PlaylistEntityBuilder.class
│ │ │ │ │ │ ├── PlaylistEntity$PlaylistEntityBuilderImpl.class
│ │ │ │ │ │ ├── PlaylistSubscriberEntity.class
│ │ │ │ │ │ ├── PlaylistSubscriberEntity$PlaylistSubscriberEntityBuilder.class
│ │ │ │ │ │ ├── PlaylistSubscriberEntity$PlaylistSubscriberEntityBuilderImpl.class
│ │ │ │ │ │ ├── QPlaylistContentEntity.class
│ │ │ │ │ │ ├── QPlaylistEntity.class
│ │ │ │ │ │ └── QPlaylistSubscriberEntity.class
│ │ │ │ │ ├── review
│ │ │ │ │ │ ├── QReviewEntity.class
│ │ │ │ │ │ ├── ReviewEntity.class
│ │ │ │ │ │ ├── ReviewEntity$ReviewEntityBuilder.class
│ │ │ │ │ │ ├── ReviewEntity$ReviewEntityBuilderImpl.class
│ │ │ │ │ │ └── ReviewEntityMapper.class
│ │ │ │ │ ├── tag
│ │ │ │ │ │ ├── QTagEntity.class
│ │ │ │ │ │ ├── TagEntity.class
│ │ │ │ │ │ ├── TagEntity$TagEntityBuilder.class
│ │ │ │ │ │ ├── TagEntity$TagEntityBuilderImpl.class
│ │ │ │ │ │ └── TagEntityMapper.class
│ │ │ │ │ └── user
│ │ │ │ │ ├── FollowEntity.class
│ │ │ │ │ ├── FollowEntity$FollowEntityBuilder.class
│ │ │ │ │ ├── FollowEntity$FollowEntityBuilderImpl.class
│ │ │ │ │ ├── FollowEntityMapper.class
│ │ │ │ │ ├── QFollowEntity.class
│ │ │ │ │ ├── QUserEntity.class
│ │ │ │ │ ├── UserEntity.class
│ │ │ │ │ ├── UserEntity$UserEntityBuilder.class
│ │ │ │ │ ├── UserEntity$UserEntityBuilderImpl.class
│ │ │ │ │ └── UserEntityMapper.class
│ │ │ │ └── repository
│ │ │ │ ├── content
│ │ │ │ │ ├── ContentRepositoryImpl.class
│ │ │ │ │ ├── ContentTagRepositoryImpl.class
│ │ │ │ │ ├── JpaContentRepository.class
│ │ │ │ │ └── JpaContentTagRepository.class
│ │ │ │ ├── conversation
│ │ │ │ │ ├── ConversationRepositoryImpl.class
│ │ │ │ │ └── JpaConversationRepository.class
│ │ │ │ ├── review
│ │ │ │ │ ├── JpaReviewRepository.class
│ │ │ │ │ └── ReviewRepositoryImpl.class
│ │ │ │ ├── tag
│ │ │ │ │ ├── JpaTagRepository.class
│ │ │ │ │ └── TagRepositoryImpl.class
│ │ │ │ └── user
│ │ │ │ ├── FollowRepositoryImpl.class
│ │ │ │ ├── JpaFollowRepository.class
│ │ │ │ ├── JpaUserRepository.class
│ │ │ │ └── UserRepositoryImpl.class
│ │ │ ├── generated
│ │ │ │ └── sources
│ │ │ │ ├── annotationProcessor
│ │ │ │ │ └── java
│ │ │ │ │ ├── main
│ │ │ │ │ │ └── com
│ │ │ │ │ │ └── mopl
│ │ │ │ │ │ └── jpa
│ │ │ │ │ │ └── entity
│ │ │ │ │ │ ├── base
│ │ │ │ │ │ │ ├── QBaseEntity.java
│ │ │ │ │ │ │ └── QBaseUpdatableEntity.java
│ │ │ │ │ │ ├── content
│ │ │ │ │ │ │ ├── QContentEntity.java
│ │ │ │ │ │ │ └── QContentTagEntity.java
│ │ │ │ │ │ ├── conversation
│ │ │ │ │ │ │ ├── QConversationEntity.java
│ │ │ │ │ │ │ ├── QDirectMessageEntity.java
│ │ │ │ │ │ │ └── QReadStatusEntity.java
│ │ │ │ │ │ ├── notification
│ │ │ │ │ │ │ └── QNotificationEntity.java
│ │ │ │ │ │ ├── playlist
│ │ │ │ │ │ │ ├── QPlaylistContentEntity.java
│ │ │ │ │ │ │ ├── QPlaylistEntity.java
│ │ │ │ │ │ │ └── QPlaylistSubscriberEntity.java
│ │ │ │ │ │ ├── review
│ │ │ │ │ │ │ └── QReviewEntity.java
│ │ │ │ │ │ ├── tag
│ │ │ │ │ │ │ └── QTagEntity.java
│ │ │ │ │ │ └── user
│ │ │ │ │ │ ├── QFollowEntity.java
│ │ │ │ │ │ └── QUserEntity.java
│ │ │ │ │ └── test
│ │ │ │ └── headers
│ │ │ │ └── java
│ │ │ │ ├── main
│ │ │ │ └── test
│ │ │ ├── libs
│ │ │ │ └── jpa-0.0.1.jar
│ │ │ ├── resources
│ │ │ │ └── main
│ │ │ │ └── jpa.yaml
│ │ │ ├── spotless
│ │ │ │ └── spotlessJava
│ │ │ └── tmp
│ │ │ ├── checkstyleMain
│ │ │ ├── checkstyleTest
│ │ │ ├── compileJava
│ │ │ │ └── previous-compilation-data.bin
│ │ │ ├── jar
│ │ │ │ └── MANIFEST.MF
│ │ │ └── test
│ │ ├── build.gradle.kts
│ │ ├── out
│ │ │ └── production
│ │ │ └── classes
│ │ │ └── generated
│ │ └── src
│ │ ├── main
│ │ │ ├── java
│ │ │ │ └── com
│ │ │ │ └── mopl
│ │ │ │ └── jpa
│ │ │ │ ├── config
│ │ │ │ │ ├── JpaConfig.java
│ │ │ │ │ └── QuerydslConfig.java
│ │ │ │ ├── entity
│ │ │ │ │ ├── base
│ │ │ │ │ │ ├── BaseEntity.java
│ │ │ │ │ │ ├── BaseUpdatableEntity.java
│ │ │ │ │ │ ├── UuidV7.java
│ │ │ │ │ │ └── UuidV7Generator.java
│ │ │ │ │ ├── content
│ │ │ │ │ │ ├── ContentEntity.java
│ │ │ │ │ │ ├── ContentEntityMapper.java
│ │ │ │ │ │ └── ContentTagEntity.java
│ │ │ │ │ ├── conversation
│ │ │ │ │ │ ├── ConversationEntity.java
│ │ │ │ │ │ ├── DirectMessageEntity.java
│ │ │ │ │ │ └── ReadStatusEntity.java
│ │ │ │ │ ├── notification
│ │ │ │ │ │ └── NotificationEntity.java
│ │ │ │ │ ├── playlist
│ │ │ │ │ │ ├── PlaylistContentEntity.java
│ │ │ │ │ │ ├── PlaylistEntity.java
│ │ │ │ │ │ └── PlaylistSubscriberEntity.java
│ │ │ │ │ ├── review
│ │ │ │ │ │ ├── ReviewEntity.java
│ │ │ │ │ │ └── ReviewEntityMapper.java
│ │ │ │ │ ├── tag
│ │ │ │ │ │ ├── TagEntity.java
│ │ │ │ │ │ └── TagEntityMapper.java
│ │ │ │ │ └── user
│ │ │ │ │ ├── FollowEntity.java
│ │ │ │ │ ├── FollowEntityMapper.java
│ │ │ │ │ ├── UserEntity.java
│ │ │ │ │ └── UserEntityMapper.java
│ │ │ │ └── repository
│ │ │ │ ├── content
│ │ │ │ │ ├── ContentRepositoryImpl.java
│ │ │ │ │ ├── ContentTagRepositoryImpl.java
│ │ │ │ │ ├── JpaContentRepository.java
│ │ │ │ │ └── JpaContentTagRepository.java
│ │ │ │ ├── conversation
│ │ │ │ │ ├── ConversationRepositoryImpl.java
│ │ │ │ │ └── JpaConversationRepository.java
│ │ │ │ ├── review
│ │ │ │ │ ├── JpaReviewRepository.java
│ │ │ │ │ └── ReviewRepositoryImpl.java
│ │ │ │ ├── tag
│ │ │ │ │ ├── JpaTagRepository.java
│ │ │ │ │ └── TagRepositoryImpl.java
│ │ │ │ └── user
│ │ │ │ ├── FollowRepositoryImpl.java
│ │ │ │ ├── JpaFollowRepository.java
│ │ │ │ ├── JpaUserRepository.java
│ │ │ │ └── UserRepositoryImpl.java
│ │ │ └── resources
│ │ │ └── jpa.yaml
│ │ └── test
│ │ └── java
│ │ └── com
│ │ └── mopl
│ │ └── jpa
│ │ ├── entity
│ │ │ ├── base
│ │ │ │ ├── BaseEntityTest.java
│ │ │ │ ├── BaseUpdatableEntityTest.java
│ │ │ │ └── UuidV7GeneratorTest.java
│ │ │ ├── content
│ │ │ │ └── ContentEntityMapperTest.java
│ │ │ ├── review
│ │ │ │ └── ReviewEntityMapperTest.java
│ │ │ ├── tag
│ │ │ │ └── TagEntityMapperTest.java
│ │ │ └── user
│ │ │ ├── UserEntityMapperTest.java
│ │ │ └── UserEntityTest.java
│ │ ├── JpaTestApplication.java
│ │ └── repository
│ │ ├── content
│ │ │ ├── ContentRepositoryImplTest.java
│ │ │ └── ContentTagRepositoryImplTest.java
│ │ ├── tag
│ │ │ └── TagRepositoryImplTest.java
│ │ └── user
│ │ └── UserRepositoryImplTest.java
│ ├── kafka
│ │ ├── build.gradle.kts
│ │ └── src
│ │ └── main
│ │ └── java
│ │ └── com
│ │ └── mopl
│ │ └── kafka
│ │ └── config
│ │ └── KafkaConfig.java
│ ├── openapi
│ │ ├── build.gradle.kts
│ │ └── src
│ │ └── main
│ │ └── java
│ │ └── com
│ │ └── mopl
│ │ └── external
│ │ └── config
│ │ └── WebClientConfig.java
│ ├── redis
│ │ ├── build.gradle.kts
│ │ └── src
│ │ └── main
│ │ └── java
│ │ └── com
│ │ └── mopl
│ │ └── redis
│ │ └── config
│ │ └── RedisConfig.java
│ └── security
│ ├── build
│ │ ├── classes
│ │ │ └── java
│ │ │ └── main
│ │ │ └── com
│ │ │ └── mopl
│ │ │ └── security
│ │ │ ├── authentication
│ │ │ │ └── handler
│ │ │ │ ├── SignInFailureHandler.class
│ │ │ │ ├── SignInSuccessHandler.class
│ │ │ │ ├── SignInSuccessHandler$JwtResponse.class
│ │ │ │ ├── SignInSuccessHandler$JwtResponse$UserDetailsDto.class
│ │ │ │ └── SignOutHandler.class
│ │ │ ├── config
│ │ │ │ ├── JwtProperties.class
│ │ │ │ ├── JwtProperties$Config.class
│ │ │ │ ├── JwtProperties$JwtRegistryType.class
│ │ │ │ ├── SecurityAutoConfig.class
│ │ │ │ ├── SecurityBeanConfig.class
│ │ │ │ └── SecurityRegistry.class
│ │ │ ├── csrf
│ │ │ │ └── SpaCsrfTokenRequestHandler.class
│ │ │ ├── exception
│ │ │ │ ├── AccessDeniedExceptionHandler.class
│ │ │ │ ├── ApiResponseHandler.class
│ │ │ │ └── UnauthorizedEntryPoint.class
│ │ │ ├── jwt
│ │ │ │ ├── filter
│ │ │ │ │ └── JwtAuthenticationFilter.class
│ │ │ │ ├── provider
│ │ │ │ │ ├── JwtCookieProvider.class
│ │ │ │ │ ├── JwtInformation.class
│ │ │ │ │ ├── JwtPayload.class
│ │ │ │ │ ├── JwtProvider.class
│ │ │ │ │ ├── JwtProvider$IssuedToken.class
│ │ │ │ │ └── TokenType.class
│ │ │ │ └── registry
│ │ │ │ ├── InMemoryJwtRegistry.class
│ │ │ │ └── JwtRegistry.class
│ │ │ └── userdetails
│ │ │ ├── MoplUserDetails.class
│ │ │ ├── MoplUserDetails$MoplUserDetailsBuilder.class
│ │ │ └── MoplUserDetailsService.class
│ │ ├── generated
│ │ │ └── sources
│ │ │ ├── annotationProcessor
│ │ │ │ └── java
│ │ │ │ └── main
│ │ │ └── headers
│ │ │ └── java
│ │ │ └── main
│ │ ├── libs
│ │ │ └── security-0.0.1.jar
│ │ ├── resources
│ │ │ └── main
│ │ │ ├── META-INF
│ │ │ │ └── spring
│ │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│ │ │ └── security.yaml
│ │ ├── spotless
│ │ │ └── spotlessJava
│ │ └── tmp
│ │ ├── checkstyleMain
│ │ ├── compileJava
│ │ │ └── previous-compilation-data.bin
│ │ └── jar
│ │ └── MANIFEST.MF
│ ├── build.gradle.kts
│ ├── out
│ │ └── production
│ │ └── classes
│ │ └── generated
│ └── src
│ ├── main
│ │ ├── generated
│ │ ├── java
│ │ │ └── com
│ │ │ └── mopl
│ │ │ └── security
│ │ │ ├── authentication
│ │ │ │ └── handler
│ │ │ │ ├── SignInFailureHandler.java
│ │ │ │ ├── SignInSuccessHandler.java
│ │ │ │ └── SignOutHandler.java
│ │ │ ├── config
│ │ │ │ ├── JwtProperties.java
│ │ │ │ ├── SecurityAutoConfig.java
│ │ │ │ ├── SecurityBeanConfig.java
│ │ │ │ └── SecurityRegistry.java
│ │ │ ├── csrf
│ │ │ │ └── SpaCsrfTokenRequestHandler.java
│ │ │ ├── exception
│ │ │ │ ├── AccessDeniedExceptionHandler.java
│ │ │ │ ├── ApiResponseHandler.java
│ │ │ │ └── UnauthorizedEntryPoint.java
│ │ │ ├── jwt
│ │ │ │ ├── filter
│ │ │ │ │ └── JwtAuthenticationFilter.java
│ │ │ │ ├── provider
│ │ │ │ │ ├── JwtCookieProvider.java
│ │ │ │ │ ├── JwtInformation.java
│ │ │ │ │ ├── JwtPayload.java
│ │ │ │ │ ├── JwtProvider.java
│ │ │ │ │ └── TokenType.java
│ │ │ │ └── registry
│ │ │ │ ├── InMemoryJwtRegistry.java
│ │ │ │ └── JwtRegistry.java
│ │ │ └── userdetails
│ │ │ ├── MoplUserDetails.java
│ │ │ └── MoplUserDetailsService.java
│ │ └── resources
│ │ ├── META-INF
│ │ │ └── spring
│ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│ │ └── security.yaml
│ └── test
│ └── java
│ └── com
│ └── mopl
│ └── security
├── README.md
├── settings.gradle.kts
└── shared
├── jackson
│ ├── build
│ │ ├── classes
│ │ │ └── java
│ │ │ └── main
│ │ │ └── com
│ │ │ └── mopl
│ │ │ └── jackson
│ │ │ └── config
│ │ │ └── JacksonConfig.class
│ │ ├── generated
│ │ │ └── sources
│ │ │ ├── annotationProcessor
│ │ │ │ └── java
│ │ │ │ └── main
│ │ │ └── headers
│ │ │ └── java
│ │ │ └── main
│ │ ├── libs
│ │ │ └── jackson-0.0.1.jar
│ │ ├── resources
│ │ │ └── main
│ │ │ └── META-INF
│ │ │ └── spring
│ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│ │ ├── spotless
│ │ │ └── spotlessJava
│ │ └── tmp
│ │ ├── checkstyleMain
│ │ ├── compileJava
│ │ │ └── previous-compilation-data.bin
│ │ └── jar
│ │ └── MANIFEST.MF
│ ├── build.gradle.kts
│ ├── out
│ │ └── production
│ │ └── classes
│ │ └── generated
│ └── src
│ └── main
│ ├── generated
│ ├── java
│ │ └── com
│ │ └── mopl
│ │ └── jackson
│ │ └── config
│ │ └── JacksonConfig.java
│ └── resources
│ └── META-INF
│ └── spring
│ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
└── monitoring
├── build.gradle.kts
└── src
└── main
└── java
└── com
└── mopl
└── monitoring
└── interceptor
└── MDCLoggingInterceptor.java