feature/admin #7

Merged
gh.yeom merged 8 commits from feature/admin into main 2024-05-16 16:36:02 +09:00
6 changed files with 49 additions and 88 deletions
Showing only changes of commit bcbb62b513 - Show all commits

View File

@ -1,7 +1,6 @@
package com.bpgroup.poc.admin.domain.entity.administrator; package com.bpgroup.poc.admin.domain.entity.administrator;
import com.bpgroup.poc.admin.domain.entity.BaseEntity; import com.bpgroup.poc.admin.domain.entity.BaseEntity;
import com.bpgroup.poc.admin.domain.entity.role.Role;
import jakarta.persistence.*; import jakarta.persistence.*;
import lombok.Builder; import lombok.Builder;
import lombok.Getter; import lombok.Getter;
@ -27,7 +26,7 @@ public class Administrator extends BaseEntity {
@Column(name = "name", length = 100, nullable = false) @Column(name = "name", length = 100, nullable = false)
private String name; private String name;
@OneToOne(mappedBy = "administrator", fetch = FetchType.LAZY, orphanRemoval = true) @Embedded
private AdministratorRole administratorRole; private AdministratorRole administratorRole;
@Builder @Builder
@ -44,9 +43,10 @@ public class Administrator extends BaseEntity {
this.password = administrator.password; this.password = administrator.password;
this.email = administrator.email; this.email = administrator.email;
this.name = administrator.name; this.name = administrator.name;
this.administratorRole = administrator.administratorRole;
} }
public void setAdministratorRole(Role role) { public void setAdministratorRole(AdministratorRole administratorRole) {
this.administratorRole = AdministratorRole.of(this, role); this.administratorRole = administratorRole;
} }
} }

View File

@ -1,37 +1,22 @@
package com.bpgroup.poc.admin.domain.entity.administrator; 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 com.bpgroup.poc.admin.domain.entity.role.Role;
import jakarta.persistence.*; import jakarta.persistence.*;
import lombok.Builder; import lombok.Builder;
import lombok.Getter; import lombok.Getter;
@Getter @Getter
@Entity @Embeddable
@Table(name = "administrator_role") public class AdministratorRole {
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;
@ManyToOne(fetch = FetchType.LAZY) @ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "role_id", foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT)) @JoinColumn(name = "role_id", foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT))
private Role role; private Role role;
@Builder @Builder
public static AdministratorRole of(Administrator administrator, Role role) { public static AdministratorRole of(Role role) {
AdministratorRole administratorRole = new AdministratorRole(); AdministratorRole administratorRole = new AdministratorRole();
administratorRole.administrator = administrator;
administratorRole.role = role; administratorRole.role = role;
return administratorRole; return administratorRole;
} }
public void update(Role findRole) {
this.role = findRole;
}
} }

View File

@ -1,6 +0,0 @@
package com.bpgroup.poc.admin.domain.entity.administrator;
import org.springframework.data.jpa.repository.JpaRepository;
public interface AdministratorRoleRepository extends JpaRepository<AdministratorRole, Long> {
}

View File

@ -30,7 +30,6 @@ public class MenuQueryRepository {
roleMenu.menu.sortOrder roleMenu.menu.sortOrder
) )
.from(administrator) .from(administrator)
.innerJoin(administrator.administratorRole, administratorRole)
.innerJoin(administratorRole.role, role) .innerJoin(administratorRole.role, role)
.innerJoin(role.roleMenus, roleMenu) .innerJoin(role.roleMenus, roleMenu)
.innerJoin(roleMenu.menu, menu) .innerJoin(roleMenu.menu, menu)

View File

@ -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.Administrator;
import com.bpgroup.poc.admin.domain.entity.administrator.AdministratorRepository; 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.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.Role;
import com.bpgroup.poc.admin.domain.entity.role.RoleRepository; import com.bpgroup.poc.admin.domain.entity.role.RoleRepository;
import jakarta.validation.Valid; import jakarta.validation.Valid;
@ -22,7 +21,6 @@ import java.util.Optional;
public class AdministratorManagementService { public class AdministratorManagementService {
private final AdministratorRepository administratorRepository; private final AdministratorRepository administratorRepository;
private final AdministratorRoleRepository administratorRoleRepository;
private final RoleRepository roleRepository; private final RoleRepository roleRepository;
public AdministratorCreateResult create( public AdministratorCreateResult create(
@ -33,17 +31,17 @@ public class AdministratorManagementService {
throw new IllegalArgumentException("Not found role"); throw new IllegalArgumentException("Not found role");
} }
Administrator admin = administratorRepository.save(command.toEntity()); Role role = findRole.get();
Administrator administrator = command.toEntity();
AdministratorRole administratorRole = AdministratorRole.builder() administrator.setAdministratorRole(
.administrator(admin) AdministratorRole.builder()
.role(findRole.get()) .role(role)
.build(); .build()
);
administratorRoleRepository.save(administratorRole); Administrator savedAdministrator = administratorRepository.save(administrator);
return AdministratorCreateResult.builder() return AdministratorCreateResult.builder()
.id(admin.getId()) .id(savedAdministrator.getId())
.build(); .build();
} }
@ -55,16 +53,19 @@ public class AdministratorManagementService {
throw new IllegalArgumentException("Not found administrator"); throw new IllegalArgumentException("Not found administrator");
} }
Administrator administrator = findAdministrator.get();
administrator.update(command.toEntity());
Optional<Role> findRole = roleRepository.findById(command.getRoleId()); Optional<Role> findRole = roleRepository.findById(command.getRoleId());
if (findRole.isEmpty()) { if (findRole.isEmpty()) {
throw new IllegalArgumentException("Not found role"); throw new IllegalArgumentException("Not found role");
} }
Role role = findRole.get(); 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) { public void delete(@NotNull Long id) {

View File

@ -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.Administrator;
import com.bpgroup.poc.admin.domain.entity.administrator.AdministratorRepository; 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.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.Role;
import com.bpgroup.poc.admin.domain.entity.role.RoleRepository; import com.bpgroup.poc.admin.domain.entity.role.RoleRepository;
import com.bpgroup.poc.admin.env.MariaDBTestEnv; import com.bpgroup.poc.admin.env.MariaDBTestEnv;
@ -32,9 +31,6 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy;
@Autowired @Autowired
private AdministratorRepository administratorRepository; private AdministratorRepository administratorRepository;
@Autowired
private AdministratorRoleRepository administratorRoleRepository;
@Autowired @Autowired
private RoleRepository roleRepository; private RoleRepository roleRepository;
@ -42,18 +38,12 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy;
@BeforeEach @BeforeEach
void setUp() { void setUp() {
administratorRepository.deleteAll(); administratorRepository.deleteAll();
administratorRoleRepository.deleteAll();
roleRepository.deleteAll(); roleRepository.deleteAll();
} }
@Test @Test
void createAdministratorTest() { void createAdministratorTest() {
Role role = roleRepository.save( Role role = getSaveRole();
Role.builder()
.name("test")
.description("test")
.build()
);
flushAndClear(); flushAndClear();
// when // when
@ -79,15 +69,10 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy;
@Test @Test
void updateAdministratorTest() { void updateAdministratorTest() {
// given // given
Administrator saveAdministrator = createAdministrator(); Role saveRole = getSaveRole();
flushAndClear(); flushAndClear();
Role saveRole = roleRepository.save( Administrator saveAdministrator = createAdministrator(saveRole);
Role.builder()
.name("test")
.description("test")
.build()
);
flushAndClear(); flushAndClear();
Role updateRole = roleRepository.save( Role updateRole = roleRepository.save(
@ -98,14 +83,6 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy;
); );
flushAndClear(); flushAndClear();
administratorRoleRepository.save(
AdministratorRole.builder()
.administrator(saveAdministrator)
.role(saveRole)
.build()
);
flushAndClear();
// when // when
service.update( service.update(
AdministratorUpdateCommand.builder() AdministratorUpdateCommand.builder()
@ -131,7 +108,10 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy;
@Test @Test
void deleteAdministratorTest() { void deleteAdministratorTest() {
// given // given
Administrator saveAdministrator = createAdministrator(); Role saveRole = getSaveRole();
flushAndClear();
Administrator saveAdministrator = createAdministrator(saveRole);
flushAndClear(); flushAndClear();
// when // when
@ -146,23 +126,10 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy;
@Test @Test
void deleteAdministratorAndAdministratorRoleTest() { void deleteAdministratorAndAdministratorRoleTest() {
// given // given
Administrator saveAdministrator = createAdministrator(); Role saveRole = getSaveRole();
flushAndClear(); flushAndClear();
Role saveRole = roleRepository.save( Administrator saveAdministrator = createAdministrator(saveRole);
Role.builder()
.name("test")
.description("test")
.build()
);
flushAndClear();
administratorRoleRepository.save(
AdministratorRole.builder()
.administrator(saveAdministrator)
.role(saveRole)
.build()
);
flushAndClear(); flushAndClear();
// when // when
@ -171,17 +138,32 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy;
// then // then
assertThat(administratorRepository.findById(saveAdministrator.getId())).isEmpty(); assertThat(administratorRepository.findById(saveAdministrator.getId())).isEmpty();
assertThat(administratorRoleRepository.findAll()).isEmpty();
} }
@NotNull @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() Administrator administrator = Administrator.builder()
.loginId("test2") .loginId("test2")
.password("test2") .password("test2")
.email("test2") .email("test2")
.name("test2") .name("test2")
.build(); .build();
administrator.setAdministratorRole(
AdministratorRole.builder()
.role(role)
.build()
);
return administratorRepository.save(administrator); return administratorRepository.save(administrator);
} }