api animal

This commit is contained in:
2025-11-17 09:57:02 +09:00
parent 7d64ee897d
commit eae3ba428f
3 changed files with 25 additions and 2 deletions

View File

@@ -2,7 +2,9 @@ package com.kamco.cd.kamcoback.postgres.core;
import com.kamco.cd.kamcoback.common.service.BaseCoreService;
import com.kamco.cd.kamcoback.postgres.entity.AnimalEntity;
import com.kamco.cd.kamcoback.postgres.entity.ZooEntity;
import com.kamco.cd.kamcoback.postgres.repository.AnimalRepository;
import com.kamco.cd.kamcoback.postgres.repository.ZooRepository;
import com.kamco.cd.kamcoback.zoo.dto.AnimalDto;
import jakarta.persistence.EntityNotFoundException;
import lombok.RequiredArgsConstructor;
@@ -17,6 +19,7 @@ public class AnimalCoreService
implements BaseCoreService<AnimalDto.Basic, Long, AnimalDto.SearchReq> {
private final AnimalRepository animalRepository;
private final ZooRepository zooRepository;
@Transactional(readOnly = true)
public AnimalDto.Basic getDataByUuid(String uuid) {
@@ -33,7 +36,18 @@ public class AnimalCoreService
// AddReq를 받는 추가 메서드
@Transactional
public AnimalDto.Basic create(AnimalDto.AddReq req) {
AnimalEntity entity = new AnimalEntity(req.getCategory(), req.getSpecies(), req.getName());
ZooEntity zoo = null;
if (req.getZooId() != null) {
zoo =
zooRepository
.getZooByUid(req.getZooId())
.orElseThrow(
() ->
new EntityNotFoundException(
"Zoo not found with id: " + req.getZooId()));
}
AnimalEntity entity =
new AnimalEntity(req.getCategory(), req.getSpecies(), req.getName(), zoo);
AnimalEntity saved = animalRepository.save(entity);
return saved.toDto();
}

View File

@@ -8,9 +8,12 @@ import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.EnumType;
import jakarta.persistence.Enumerated;
import jakarta.persistence.FetchType;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table;
import java.util.UUID;
import lombok.AccessLevel;
@@ -41,13 +44,18 @@ public class AnimalEntity extends CommonDateEntity {
private String name;
private Boolean isDeleted;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "zoo_id")
private ZooEntity zoo;
// Construct
public AnimalEntity(Category category, Species species, String name) {
public AnimalEntity(Category category, Species species, String name, ZooEntity zoo) {
this.uuid = UUID.randomUUID();
this.category = category;
this.species = species;
this.name = name;
this.isDeleted = false;
this.zoo = zoo;
}
public AnimalDto.Basic toDto() {

View File

@@ -23,6 +23,7 @@ public class AnimalDto {
private Category category;
private Species species;
private String name;
private Long zooId; // 동물원 ID (선택)
}
@Getter