Same gap as the resale-listing DTO: price is only @IsString(), then passed to BigInt(dto.price) downstream. A malformed value throws an unhandled SyntaxError that surfaces as a 500 instead of a validation error.
Suggested fix: Add @Matches(/^[1-9]\d*$/, { message: 'price must be a positive integer string' }) to the price field.
Same gap as the resale-listing DTO:
priceis only@IsString(), then passed toBigInt(dto.price)downstream. A malformed value throws an unhandledSyntaxErrorthat surfaces as a 500 instead of a validation error.Suggested fix: Add
@Matches(/^[1-9]\d*$/, { message: 'price must be a positive integer string' })to thepricefield.