add service species collection

This commit is contained in:
2026-04-06 20:34:03 -06:00
parent 9f465b25bb
commit c96c3b1dab
4 changed files with 53 additions and 5 deletions

View File

@@ -4,7 +4,9 @@ import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Positive; import jakarta.validation.constraints.Positive;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.HashSet;
import java.util.Objects; import java.util.Objects;
import java.util.Set;
public class ServiceRequest { public class ServiceRequest {
@NotBlank(message = "Service name is required") @NotBlank(message = "Service name is required")
@@ -19,6 +21,8 @@ public class ServiceRequest {
@Positive(message = "Duration must be positive") @Positive(message = "Duration must be positive")
private Integer serviceDuration; private Integer serviceDuration;
private Set<String> species = new HashSet<>();
public String getServiceName() { public String getServiceName() {
return serviceName; return serviceName;
} }
@@ -51,6 +55,14 @@ public class ServiceRequest {
this.serviceDuration = serviceDuration; this.serviceDuration = serviceDuration;
} }
public Set<String> getSpecies() {
return species;
}
public void setSpecies(Set<String> species) {
this.species = species;
}
@Override @Override
public boolean equals(Object o) { public boolean equals(Object o) {
if (this == o) return true; if (this == o) return true;
@@ -59,12 +71,13 @@ public class ServiceRequest {
return Objects.equals(serviceName, that.serviceName) && return Objects.equals(serviceName, that.serviceName) &&
Objects.equals(serviceDesc, that.serviceDesc) && Objects.equals(serviceDesc, that.serviceDesc) &&
Objects.equals(servicePrice, that.servicePrice) && Objects.equals(servicePrice, that.servicePrice) &&
Objects.equals(serviceDuration, that.serviceDuration); Objects.equals(serviceDuration, that.serviceDuration) &&
Objects.equals(species, that.species);
} }
@Override @Override
public int hashCode() { public int hashCode() {
return Objects.hash(serviceName, serviceDesc, servicePrice, serviceDuration); return Objects.hash(serviceName, serviceDesc, servicePrice, serviceDuration, species);
} }
@Override @Override
@@ -74,6 +87,7 @@ public class ServiceRequest {
", serviceDesc='" + serviceDesc + '\'' + ", serviceDesc='" + serviceDesc + '\'' +
", servicePrice=" + servicePrice + ", servicePrice=" + servicePrice +
", serviceDuration=" + serviceDuration + ", serviceDuration=" + serviceDuration +
", species=" + species +
'}'; '}';
} }
} }

View File

@@ -3,6 +3,7 @@ package com.petshop.backend.dto.service;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.Objects; import java.util.Objects;
import java.util.Set;
public class ServiceResponse { public class ServiceResponse {
private Long serviceId; private Long serviceId;
@@ -10,18 +11,20 @@ public class ServiceResponse {
private String serviceDesc; private String serviceDesc;
private BigDecimal servicePrice; private BigDecimal servicePrice;
private Integer serviceDuration; private Integer serviceDuration;
private Set<String> species;
private LocalDateTime createdAt; private LocalDateTime createdAt;
private LocalDateTime updatedAt; private LocalDateTime updatedAt;
public ServiceResponse() { public ServiceResponse() {
} }
public ServiceResponse(Long serviceId, String serviceName, String serviceDesc, BigDecimal servicePrice, Integer serviceDuration, LocalDateTime createdAt, LocalDateTime updatedAt) { public ServiceResponse(Long serviceId, String serviceName, String serviceDesc, BigDecimal servicePrice, Integer serviceDuration, Set<String> species, LocalDateTime createdAt, LocalDateTime updatedAt) {
this.serviceId = serviceId; this.serviceId = serviceId;
this.serviceName = serviceName; this.serviceName = serviceName;
this.serviceDesc = serviceDesc; this.serviceDesc = serviceDesc;
this.servicePrice = servicePrice; this.servicePrice = servicePrice;
this.serviceDuration = serviceDuration; this.serviceDuration = serviceDuration;
this.species = species;
this.createdAt = createdAt; this.createdAt = createdAt;
this.updatedAt = updatedAt; this.updatedAt = updatedAt;
} }
@@ -66,6 +69,14 @@ public class ServiceResponse {
this.serviceDuration = serviceDuration; this.serviceDuration = serviceDuration;
} }
public Set<String> getSpecies() {
return species;
}
public void setSpecies(Set<String> species) {
this.species = species;
}
public LocalDateTime getCreatedAt() { public LocalDateTime getCreatedAt() {
return createdAt; return createdAt;
} }
@@ -87,12 +98,12 @@ public class ServiceResponse {
if (this == o) return true; if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false; if (o == null || getClass() != o.getClass()) return false;
ServiceResponse that = (ServiceResponse) o; ServiceResponse that = (ServiceResponse) o;
return Objects.equals(serviceId, that.serviceId) && Objects.equals(serviceName, that.serviceName) && Objects.equals(serviceDesc, that.serviceDesc) && Objects.equals(servicePrice, that.servicePrice) && Objects.equals(serviceDuration, that.serviceDuration) && Objects.equals(createdAt, that.createdAt) && Objects.equals(updatedAt, that.updatedAt); return Objects.equals(serviceId, that.serviceId) && Objects.equals(serviceName, that.serviceName) && Objects.equals(serviceDesc, that.serviceDesc) && Objects.equals(servicePrice, that.servicePrice) && Objects.equals(serviceDuration, that.serviceDuration) && Objects.equals(species, that.species) && Objects.equals(createdAt, that.createdAt) && Objects.equals(updatedAt, that.updatedAt);
} }
@Override @Override
public int hashCode() { public int hashCode() {
return Objects.hash(serviceId, serviceName, serviceDesc, servicePrice, serviceDuration, createdAt, updatedAt); return Objects.hash(serviceId, serviceName, serviceDesc, servicePrice, serviceDuration, species, createdAt, updatedAt);
} }
@Override @Override
@@ -103,6 +114,7 @@ public class ServiceResponse {
", serviceDesc='" + serviceDesc + '\'' + ", serviceDesc='" + serviceDesc + '\'' +
", servicePrice=" + servicePrice + ", servicePrice=" + servicePrice +
", serviceDuration=" + serviceDuration + ", serviceDuration=" + serviceDuration +
", species=" + species +
", createdAt=" + createdAt + ", createdAt=" + createdAt +
", updatedAt=" + updatedAt + ", updatedAt=" + updatedAt +
'}'; '}';

View File

@@ -6,7 +6,9 @@ import org.hibernate.annotations.UpdateTimestamp;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.HashSet;
import java.util.Objects; import java.util.Objects;
import java.util.Set;
@Entity @Entity
@Table(name = "service") @Table(name = "service")
@@ -28,6 +30,11 @@ public class Service {
@Column(nullable = false) @Column(nullable = false)
private Integer serviceDuration; private Integer serviceDuration;
@ElementCollection
@CollectionTable(name = "service_species", joinColumns = @JoinColumn(name = "serviceId"))
@Column(name = "species", length = 50)
private Set<String> species = new HashSet<>();
@CreationTimestamp @CreationTimestamp
@Column(name = "created_at", updatable = false) @Column(name = "created_at", updatable = false)
private LocalDateTime createdAt; private LocalDateTime createdAt;
@@ -89,6 +96,14 @@ public class Service {
this.serviceDuration = serviceDuration; this.serviceDuration = serviceDuration;
} }
public Set<String> getSpecies() {
return species;
}
public void setSpecies(Set<String> species) {
this.species = species;
}
public LocalDateTime getCreatedAt() { public LocalDateTime getCreatedAt() {
return createdAt; return createdAt;
} }

View File

@@ -42,6 +42,9 @@ public class ServiceService {
service.setServiceDesc(request.getServiceDesc()); service.setServiceDesc(request.getServiceDesc());
service.setServicePrice(request.getServicePrice()); service.setServicePrice(request.getServicePrice());
service.setServiceDuration(request.getServiceDuration()); service.setServiceDuration(request.getServiceDuration());
if (request.getSpecies() != null) {
service.setSpecies(request.getSpecies());
}
service = serviceRepository.save(service); service = serviceRepository.save(service);
return mapToResponse(service); return mapToResponse(service);
@@ -56,6 +59,9 @@ public class ServiceService {
service.setServiceDesc(request.getServiceDesc()); service.setServiceDesc(request.getServiceDesc());
service.setServicePrice(request.getServicePrice()); service.setServicePrice(request.getServicePrice());
service.setServiceDuration(request.getServiceDuration()); service.setServiceDuration(request.getServiceDuration());
if (request.getSpecies() != null) {
service.setSpecies(request.getSpecies());
}
service = serviceRepository.save(service); service = serviceRepository.save(service);
return mapToResponse(service); return mapToResponse(service);
@@ -81,6 +87,7 @@ public class ServiceService {
service.getServiceDesc(), service.getServiceDesc(),
service.getServicePrice(), service.getServicePrice(),
service.getServiceDuration(), service.getServiceDuration(),
service.getSpecies(),
service.getCreatedAt(), service.getCreatedAt(),
service.getUpdatedAt() service.getUpdatedAt()
); );