#38 hexagonal: find membership
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
package org.example.membership.adapter.in.web;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.example.membership.application.port.in.FindMembershipCommand;
|
||||
import org.example.membership.application.port.in.FindMembershipUseCase;
|
||||
import org.example.membership.domain.Membership;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
public class FindMembershipController {
|
||||
|
||||
private final FindMembershipUseCase findMembershipUseCase;
|
||||
|
||||
@GetMapping("/membership/{membershipId}")
|
||||
ResponseEntity<Membership> findMembershipByMemberId(@PathVariable String membershipId) {
|
||||
|
||||
FindMembershipCommand command = FindMembershipCommand.builder()
|
||||
.membershipId(membershipId)
|
||||
.build();
|
||||
|
||||
Membership membership = findMembershipUseCase.findMembership(command);
|
||||
|
||||
return ResponseEntity.ok(membership);
|
||||
}
|
||||
}
|
||||
@@ -2,12 +2,13 @@ package org.example.membership.adapter.out.persistence;
|
||||
|
||||
import common.PersistenceAdapter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.example.membership.application.port.out.FindMembershipPort;
|
||||
import org.example.membership.application.port.out.RegisterMembershipPort;
|
||||
import org.example.membership.domain.Membership;
|
||||
|
||||
@PersistenceAdapter
|
||||
@RequiredArgsConstructor
|
||||
public class MembershipPersistenceAdapter implements RegisterMembershipPort {
|
||||
public class MembershipPersistenceAdapter implements RegisterMembershipPort, FindMembershipPort {
|
||||
|
||||
private final SpringDataMembershipRepository membershipRepository;
|
||||
|
||||
@@ -23,4 +24,9 @@ public class MembershipPersistenceAdapter implements RegisterMembershipPort {
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public MembershipJpaEntity findMembership(Membership.MembershipId membershipId) {
|
||||
return membershipRepository.getById(membershipId.getMembershipId());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
package org.example.membership.application.port.in;
|
||||
|
||||
|
||||
import common.SelfValidating;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public
|
||||
class FindMembershipCommand extends SelfValidating<FindMembershipCommand> {
|
||||
private final String membershipId;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
package org.example.membership.application.port.in;
|
||||
|
||||
import org.example.membership.domain.Membership;
|
||||
|
||||
public interface FindMembershipUseCase {
|
||||
|
||||
Membership findMembership(FindMembershipCommand command);
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
|
||||
package org.example.membership.application.port.out;
|
||||
|
||||
import org.example.membership.adapter.out.persistence.MembershipJpaEntity;
|
||||
import org.example.membership.domain.Membership;
|
||||
|
||||
public interface FindMembershipPort {
|
||||
|
||||
MembershipJpaEntity findMembership(
|
||||
Membership.MembershipId membershipId
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
package org.example.membership.application.service;
|
||||
|
||||
import common.UseCase;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.example.membership.adapter.out.persistence.MembershipJpaEntity;
|
||||
import org.example.membership.adapter.out.persistence.MembershipMapper;
|
||||
import org.example.membership.application.port.in.FindMembershipCommand;
|
||||
import org.example.membership.application.port.in.FindMembershipUseCase;
|
||||
import org.example.membership.application.port.out.FindMembershipPort;
|
||||
import org.example.membership.domain.Membership;
|
||||
|
||||
import javax.transaction.Transactional;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
@UseCase
|
||||
@Transactional
|
||||
public class FindMembershipService implements FindMembershipUseCase {
|
||||
|
||||
private final FindMembershipPort findMembershipPort;
|
||||
private final MembershipMapper mapper;
|
||||
|
||||
@Override
|
||||
public Membership findMembership(FindMembershipCommand command) {
|
||||
MembershipJpaEntity entity = findMembershipPort.findMembership(new Membership.MembershipId(command.getMembershipId()));
|
||||
return mapper.mapToDomainEntity(entity);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user