EquipmentStatusRequest.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.NotEmpty;

import java.util.HashSet;
import java.util.Set;

@Schema(description = "Request body for creating or updating an equipment status")
public record EquipmentStatusRequest(
        @Schema(description = "URL-friendly identifier", example = "available") @Slug String slug,
        @Schema(description = "Display name", example = "Available") @NotEmpty String name,
        @Schema(description = "Description") String description,
        @Schema(description = "Set of status slugs this status can transition to", example = "[\"rented\", \"maintenance\"]")
        Set<@Slug String> allowedTransitions
) {
        public EquipmentStatusRequest {
                allowedTransitions = allowedTransitions == null ? Set.of() : new HashSet<>(allowedTransitions);
        }

        public EquipmentStatusRequest(String slug, String name, String description) {
                this(slug, name, description, Set.of());
        }
}