PetRequest.java

package org.petify.shelter.dto;

import org.petify.shelter.enums.Gender;
import org.petify.shelter.enums.PetSize;
import org.petify.shelter.enums.PetType;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.PositiveOrZero;
import org.hibernate.validator.constraints.Length;

import java.io.Serializable;

/**
 * DTO for {@link org.petify.shelter.model.Pet}
 */
public record PetRequest(
        @NotNull(message = "Name must not be null!")
        @NotBlank(message = "Name cannot be blank!")
        @Length(message = "Name must be a string between 3 and 20 characters long!", min = 3, max = 20)
        String name,

        @NotNull(message = "You need to provide pet type!")
        PetType type,

        String breed,

        @PositiveOrZero(message = "Age of pet cannot be negative!")
        Integer age,
        @Length(message = "Description must be a string between 3 and 255 characters long!", min = 3, max = 3000)
        String description,

        @NotNull
        Gender gender,

        @NotNull
        PetSize size,

        boolean vaccinated,

        boolean urgent,

        boolean sterilized,

        boolean kidFriendly
) implements Serializable {}