EquipmentRequest.java

package com.github.jenkaby.bikerental.equipment.web.command.dto;

import com.github.jenkaby.bikerental.shared.web.support.Slug;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;

import java.time.LocalDate;

@Schema(description = "Request body for creating or updating equipment")
public record EquipmentRequest(

        @Schema(description = "Unique serial number", example = "SN-123456")
        @NotBlank(message = "Serial number is required")
        @Size(max = 50, message = "Serial number must not exceed 50 characters")
        String serialNumber,

        @Schema(description = "Unique identifier tag (UID)", example = "BIKE-001")
        @Size(max = 100, message = "UID must not exceed 100 characters")
        String uid,

        @Schema(description = "Equipment type slug", example = "bike")
        @Slug
        String typeSlug,

        @Schema(description = "Equipment status slug", example = "available")
        @Slug
        String statusSlug,

        @Schema(description = "Model name", example = "Trek Marlin 5")
        @Size(max = 200, message = "Model must not exceed 200 characters")
        String model,

        @Schema(description = "Date when equipment was put into service", example = "2023-06-01")
        LocalDate commissionedAt,

        @Schema(description = "Condition description", example = "Good")
        String condition
) {
}