AddressDtos.java
package com.rbctcsworld.ecommerce.address;
import com.rbctcsworld.ecommerce.order.ShippingAddress;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern;
import jakarta.validation.constraints.Size;
public final class AddressDtos {
private AddressDtos() {
}
/**
* label: optional name such as "Home" or "Office" (letters, digits, spaces, . ' -; up to 30).
* address: the same rules as an order's delivery address (US only). makeDefault: use it first at checkout.
*/
public record AddressRequest(
@Size(max = 30) @Pattern(regexp = "^[\\p{L}\\p{N} .'-]*$", message = "may only contain letters, digits, spaces and . ' -")
String label,
@NotNull @Valid ShippingAddress address,
boolean makeDefault) {
}
public record AddressResponse(long id, String label, ShippingAddress address, boolean isDefault) {
static AddressResponse from(CustomerAddress a) {
return new AddressResponse(a.getId(), a.getLabel(), a.address(), a.isDefault());
}
}
}