import {
  IsNotEmpty,
  IsString,
  Matches,
  MaxLength,
  MinLength,
} from 'class-validator';
import { ApiProperty } from '@nestjs/swagger';

// 비밀번호 재설정 DTO — 메일 링크의 토큰 + 새 비밀번호(가입과 동일 규칙)
export class ResetPasswordDto {
  @ApiProperty({ description: '재설정 토큰(메일 링크의 token 값)' })
  @IsString()
  @IsNotEmpty({ message: '재설정 토큰이 필요합니다.' })
  token!: string;

  @ApiProperty({
    description: '새 비밀번호 (8~72자, 영문·숫자 포함)',
    example: 'newpass123',
  })
  @IsString()
  @MinLength(8, { message: '비밀번호는 최소 8자 이상이어야 합니다.' })
  // bcrypt 는 72바이트 초과분을 잘라내므로 길이를 제한해 혼동을 방지
  @MaxLength(72, { message: '비밀번호는 최대 72자까지 가능합니다.' })
  @Matches(/(?=.*[A-Za-z])(?=.*\d)/, {
    message: '비밀번호는 영문과 숫자를 모두 포함해야 합니다.',
  })
  password!: string;
}
