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.common.service.BaseCoreService;
import com.kamco.cd.kamcoback.postgres.entity.AnimalEntity; 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.AnimalRepository;
import com.kamco.cd.kamcoback.postgres.repository.ZooRepository;
import com.kamco.cd.kamcoback.zoo.dto.AnimalDto; import com.kamco.cd.kamcoback.zoo.dto.AnimalDto;
import jakarta.persistence.EntityNotFoundException; import jakarta.persistence.EntityNotFoundException;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@@ -17,6 +19,7 @@ public class AnimalCoreService
implements BaseCoreService<AnimalDto.Basic, Long, AnimalDto.SearchReq> { implements BaseCoreService<AnimalDto.Basic, Long, AnimalDto.SearchReq> {
private final AnimalRepository animalRepository; private final AnimalRepository animalRepository;
private final ZooRepository zooRepository;
@Transactional(readOnly = true) @Transactional(readOnly = true)
public AnimalDto.Basic getDataByUuid(String uuid) { public AnimalDto.Basic getDataByUuid(String uuid) {
@@ -33,7 +36,18 @@ public class AnimalCoreService
// AddReq를 받는 추가 메서드 // AddReq를 받는 추가 메서드
@Transactional @Transactional
public AnimalDto.Basic create(AnimalDto.AddReq req) { 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); AnimalEntity saved = animalRepository.save(entity);
return saved.toDto(); return saved.toDto();
} }

View File

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

View File

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