diff --git a/src/main/java/com/example/gp_backend_data/space/controller/SharedSpaceController.java b/src/main/java/com/example/gp_backend_data/space/controller/SharedSpaceController.java new file mode 100644 index 0000000..d8adda0 --- /dev/null +++ b/src/main/java/com/example/gp_backend_data/space/controller/SharedSpaceController.java @@ -0,0 +1,28 @@ +package com.example.gp_backend_data.space.controller; + +import com.example.gp_backend_data.space.domain.dto.response.SharedSpaceResponse; +import com.example.gp_backend_data.space.service.SharedSpaceService; +import jakarta.persistence.EntityNotFoundException; +import lombok.RequiredArgsConstructor; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.UUID; + +@RestController +@RequestMapping("/share") +@RequiredArgsConstructor +public class SharedSpaceController { + + private final SharedSpaceService sharedSpaceService; + + @GetMapping("/{sharingId}/space") + public ResponseEntity getSharedSpaceInfo(@PathVariable UUID sharingId) { + try { + SharedSpaceResponse response = sharedSpaceService.getSharedSpaceInfo(sharingId); + return ResponseEntity.ok(response); + } catch (EntityNotFoundException e) { + throw new EntityNotFoundException("404 Not Found: " + e.getMessage()); + } + } +} diff --git a/src/main/java/com/example/gp_backend_data/space/domain/dto/response/SharedSpaceResponse.java b/src/main/java/com/example/gp_backend_data/space/domain/dto/response/SharedSpaceResponse.java new file mode 100644 index 0000000..2c02cfa --- /dev/null +++ b/src/main/java/com/example/gp_backend_data/space/domain/dto/response/SharedSpaceResponse.java @@ -0,0 +1,12 @@ +package com.example.gp_backend_data.space.domain.dto.response; + +import lombok.*; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class SharedSpaceResponse { + private String title; +} diff --git a/src/main/java/com/example/gp_backend_data/space/repository/SpaceRepository.java b/src/main/java/com/example/gp_backend_data/space/repository/SpaceRepository.java index f493346..0861118 100644 --- a/src/main/java/com/example/gp_backend_data/space/repository/SpaceRepository.java +++ b/src/main/java/com/example/gp_backend_data/space/repository/SpaceRepository.java @@ -14,4 +14,5 @@ public interface SpaceRepository extends JpaRepository { Optional findBySpaceIdAndUserId(byte[] spaceId, byte[] userId); List findByUserId(byte[] userId); Optional findBySharingIdAndIsShared(byte[] sharingId, boolean isShared); + Optional findBySharingId(byte[] sharingId); } diff --git a/src/main/java/com/example/gp_backend_data/space/service/SharedSpaceService.java b/src/main/java/com/example/gp_backend_data/space/service/SharedSpaceService.java new file mode 100644 index 0000000..e80c705 --- /dev/null +++ b/src/main/java/com/example/gp_backend_data/space/service/SharedSpaceService.java @@ -0,0 +1,32 @@ +package com.example.gp_backend_data.space.service; + +import com.example.gp_backend_data.space.domain.dto.response.SharedSpaceResponse; +import com.example.gp_backend_data.space.domain.entity.Space; +import com.example.gp_backend_data.space.repository.SpaceRepository; +import com.example.gp_backend_data.utils.UUIDHelper; +import jakarta.persistence.EntityNotFoundException; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.UUID; + +@Service +@RequiredArgsConstructor +@Transactional +public class SharedSpaceService { + + private final SpaceRepository spaceRepository; + private final UUIDHelper uuidHelper; + + @Transactional(readOnly = true) + public SharedSpaceResponse getSharedSpaceInfo(UUID sharingId) { + Space space = spaceRepository.findBySharingId( + uuidHelper.convertUUIDToByteArray(sharingId)) + .orElseThrow(() -> new EntityNotFoundException("Shared space not found.")); + + return SharedSpaceResponse.builder() + .title(space.getTitle()) + .build(); + } +}