From bcbb62b5137b0f36968dd2454c6fbdd3eec55ba8 Mon Sep 17 00:00:00 2001 From: geonhos Date: Thu, 16 May 2024 16:35:15 +0900 Subject: [PATCH] =?UTF-8?q?admin:=20administrator=20=EB=82=B4=20=EA=B4=80?= =?UTF-8?q?=EB=A6=AC=EC=9E=90=20=EA=B6=8C=ED=95=9C=20=EC=9E=84=EB=B2=A0?= =?UTF-8?q?=EB=94=94=EB=93=9C=20=ED=83=80=EC=9E=85=EC=9C=BC=EB=A1=9C=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/administrator/Administrator.java | 8 +-- .../administrator/AdministratorRole.java | 21 +----- .../AdministratorRoleRepository.java | 6 -- .../web/advice/menu/MenuQueryRepository.java | 1 - .../AdministratorManagementService.java | 31 ++++---- .../AdministratorServiceTest.java | 70 +++++++------------ 6 files changed, 49 insertions(+), 88 deletions(-) delete mode 100644 poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/administrator/AdministratorRoleRepository.java diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/administrator/Administrator.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/administrator/Administrator.java index bbd7b78..a123c45 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/administrator/Administrator.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/administrator/Administrator.java @@ -1,7 +1,6 @@ package com.bpgroup.poc.admin.domain.entity.administrator; import com.bpgroup.poc.admin.domain.entity.BaseEntity; -import com.bpgroup.poc.admin.domain.entity.role.Role; import jakarta.persistence.*; import lombok.Builder; import lombok.Getter; @@ -27,7 +26,7 @@ public class Administrator extends BaseEntity { @Column(name = "name", length = 100, nullable = false) private String name; - @OneToOne(mappedBy = "administrator", fetch = FetchType.LAZY, orphanRemoval = true) + @Embedded private AdministratorRole administratorRole; @Builder @@ -44,9 +43,10 @@ public class Administrator extends BaseEntity { this.password = administrator.password; this.email = administrator.email; this.name = administrator.name; + this.administratorRole = administrator.administratorRole; } - public void setAdministratorRole(Role role) { - this.administratorRole = AdministratorRole.of(this, role); + public void setAdministratorRole(AdministratorRole administratorRole) { + this.administratorRole = administratorRole; } } diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/administrator/AdministratorRole.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/administrator/AdministratorRole.java index 6b71d86..6651665 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/administrator/AdministratorRole.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/administrator/AdministratorRole.java @@ -1,37 +1,22 @@ package com.bpgroup.poc.admin.domain.entity.administrator; -import com.bpgroup.poc.admin.domain.entity.BaseEntity; import com.bpgroup.poc.admin.domain.entity.role.Role; import jakarta.persistence.*; import lombok.Builder; import lombok.Getter; @Getter -@Entity -@Table(name = "administrator_role") -public class AdministratorRole extends BaseEntity { - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private Long id; - - @OneToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "administrator_id", foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT)) - private Administrator administrator; +@Embeddable +public class AdministratorRole { @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "role_id", foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT)) private Role role; @Builder - public static AdministratorRole of(Administrator administrator, Role role) { + public static AdministratorRole of(Role role) { AdministratorRole administratorRole = new AdministratorRole(); - administratorRole.administrator = administrator; administratorRole.role = role; return administratorRole; } - - public void update(Role findRole) { - this.role = findRole; - } } diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/administrator/AdministratorRoleRepository.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/administrator/AdministratorRoleRepository.java deleted file mode 100644 index c2f890b..0000000 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/administrator/AdministratorRoleRepository.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.bpgroup.poc.admin.domain.entity.administrator; - -import org.springframework.data.jpa.repository.JpaRepository; - -public interface AdministratorRoleRepository extends JpaRepository { -} diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/advice/menu/MenuQueryRepository.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/advice/menu/MenuQueryRepository.java index 55f5b6d..d2758c2 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/advice/menu/MenuQueryRepository.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/advice/menu/MenuQueryRepository.java @@ -30,7 +30,6 @@ public class MenuQueryRepository { roleMenu.menu.sortOrder ) .from(administrator) - .innerJoin(administrator.administratorRole, administratorRole) .innerJoin(administratorRole.role, role) .innerJoin(role.roleMenus, roleMenu) .innerJoin(roleMenu.menu, menu) diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/service/AdministratorManagementService.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/service/AdministratorManagementService.java index 64beb79..a4b59ee 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/service/AdministratorManagementService.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/service/AdministratorManagementService.java @@ -3,7 +3,6 @@ package com.bpgroup.poc.admin.web.main.admin.management.service; import com.bpgroup.poc.admin.domain.entity.administrator.Administrator; import com.bpgroup.poc.admin.domain.entity.administrator.AdministratorRepository; import com.bpgroup.poc.admin.domain.entity.administrator.AdministratorRole; -import com.bpgroup.poc.admin.domain.entity.administrator.AdministratorRoleRepository; import com.bpgroup.poc.admin.domain.entity.role.Role; import com.bpgroup.poc.admin.domain.entity.role.RoleRepository; import jakarta.validation.Valid; @@ -22,7 +21,6 @@ import java.util.Optional; public class AdministratorManagementService { private final AdministratorRepository administratorRepository; - private final AdministratorRoleRepository administratorRoleRepository; private final RoleRepository roleRepository; public AdministratorCreateResult create( @@ -33,17 +31,17 @@ public class AdministratorManagementService { throw new IllegalArgumentException("Not found role"); } - Administrator admin = administratorRepository.save(command.toEntity()); - - AdministratorRole administratorRole = AdministratorRole.builder() - .administrator(admin) - .role(findRole.get()) - .build(); - - administratorRoleRepository.save(administratorRole); + Role role = findRole.get(); + Administrator administrator = command.toEntity(); + administrator.setAdministratorRole( + AdministratorRole.builder() + .role(role) + .build() + ); + Administrator savedAdministrator = administratorRepository.save(administrator); return AdministratorCreateResult.builder() - .id(admin.getId()) + .id(savedAdministrator.getId()) .build(); } @@ -55,16 +53,19 @@ public class AdministratorManagementService { throw new IllegalArgumentException("Not found administrator"); } - Administrator administrator = findAdministrator.get(); - administrator.update(command.toEntity()); - Optional findRole = roleRepository.findById(command.getRoleId()); if (findRole.isEmpty()) { throw new IllegalArgumentException("Not found role"); } Role role = findRole.get(); - administrator.getAdministratorRole().update(role); + Administrator administrator = findAdministrator.get(); + administrator.setAdministratorRole( + AdministratorRole.builder() + .role(role) + .build() + ); + administrator.update(administrator); } public void delete(@NotNull Long id) { diff --git a/poc/admin/src/test/java/com/bpgroup/poc/admin/web/main/admin/administrator/AdministratorServiceTest.java b/poc/admin/src/test/java/com/bpgroup/poc/admin/web/main/admin/administrator/AdministratorServiceTest.java index 14f0bb5..d29d21b 100644 --- a/poc/admin/src/test/java/com/bpgroup/poc/admin/web/main/admin/administrator/AdministratorServiceTest.java +++ b/poc/admin/src/test/java/com/bpgroup/poc/admin/web/main/admin/administrator/AdministratorServiceTest.java @@ -3,7 +3,6 @@ package com.bpgroup.poc.admin.web.main.admin.administrator; import com.bpgroup.poc.admin.domain.entity.administrator.Administrator; import com.bpgroup.poc.admin.domain.entity.administrator.AdministratorRepository; import com.bpgroup.poc.admin.domain.entity.administrator.AdministratorRole; -import com.bpgroup.poc.admin.domain.entity.administrator.AdministratorRoleRepository; import com.bpgroup.poc.admin.domain.entity.role.Role; import com.bpgroup.poc.admin.domain.entity.role.RoleRepository; import com.bpgroup.poc.admin.env.MariaDBTestEnv; @@ -32,9 +31,6 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy; @Autowired private AdministratorRepository administratorRepository; - @Autowired - private AdministratorRoleRepository administratorRoleRepository; - @Autowired private RoleRepository roleRepository; @@ -42,18 +38,12 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy; @BeforeEach void setUp() { administratorRepository.deleteAll(); - administratorRoleRepository.deleteAll(); roleRepository.deleteAll(); } @Test void createAdministratorTest() { - Role role = roleRepository.save( - Role.builder() - .name("test") - .description("test") - .build() - ); + Role role = getSaveRole(); flushAndClear(); // when @@ -79,15 +69,10 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy; @Test void updateAdministratorTest() { // given - Administrator saveAdministrator = createAdministrator(); + Role saveRole = getSaveRole(); flushAndClear(); - Role saveRole = roleRepository.save( - Role.builder() - .name("test") - .description("test") - .build() - ); + Administrator saveAdministrator = createAdministrator(saveRole); flushAndClear(); Role updateRole = roleRepository.save( @@ -98,14 +83,6 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy; ); flushAndClear(); - administratorRoleRepository.save( - AdministratorRole.builder() - .administrator(saveAdministrator) - .role(saveRole) - .build() - ); - flushAndClear(); - // when service.update( AdministratorUpdateCommand.builder() @@ -131,7 +108,10 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy; @Test void deleteAdministratorTest() { // given - Administrator saveAdministrator = createAdministrator(); + Role saveRole = getSaveRole(); + flushAndClear(); + + Administrator saveAdministrator = createAdministrator(saveRole); flushAndClear(); // when @@ -146,23 +126,10 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy; @Test void deleteAdministratorAndAdministratorRoleTest() { // given - Administrator saveAdministrator = createAdministrator(); + Role saveRole = getSaveRole(); flushAndClear(); - Role saveRole = roleRepository.save( - Role.builder() - .name("test") - .description("test") - .build() - ); - flushAndClear(); - - administratorRoleRepository.save( - AdministratorRole.builder() - .administrator(saveAdministrator) - .role(saveRole) - .build() - ); + Administrator saveAdministrator = createAdministrator(saveRole); flushAndClear(); // when @@ -171,17 +138,32 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy; // then assertThat(administratorRepository.findById(saveAdministrator.getId())).isEmpty(); - assertThat(administratorRoleRepository.findAll()).isEmpty(); } @NotNull - private Administrator createAdministrator() { + private Role getSaveRole() { + return roleRepository.save( + Role.builder() + .name("test") + .description("test") + .build() + ); + } + + @NotNull + private Administrator createAdministrator(Role role) { Administrator administrator = Administrator.builder() .loginId("test2") .password("test2") .email("test2") .name("test2") .build(); + administrator.setAdministratorRole( + AdministratorRole.builder() + .role(role) + .build() + ); + return administratorRepository.save(administrator); }