import { ApiProperty } from '@nestjs/swagger';

export class UserDto {
  @ApiProperty({ example: 'clx...' })
  id: string;

  @ApiProperty({ example: 'user@example.com', nullable: true })
  email: string | null;

  @ApiProperty({ example: '张三', nullable: true })
  nickname: string | null;

  @ApiProperty({ example: null, nullable: true })
  avatarUrl: string | null;

  @ApiProperty({ example: 'user' })
  role: string;

  @ApiProperty({ example: 'active' })
  status: string;

  @ApiProperty({ example: false })
  onboardingCompleted: boolean;
}

export class AuthTokensDto {
  @ApiProperty({ description: 'JWT access token，有效期 1h', example: 'eyJhbG...' })
  accessToken: string;

  @ApiProperty({ description: '96 位十六进制 refresh token，一次性轮换', example: 'a1b2c3...' })
  refreshToken: string;
}

export class LoginResponseDto extends AuthTokensDto {
  @ApiProperty({ type: UserDto })
  user: UserDto;
}

export class RefreshResponseDto extends AuthTokensDto {
  @ApiProperty({ type: UserDto })
  user: UserDto;
}

export class LogoutResponseDto {
  @ApiProperty({ example: true })
  success: boolean;

  @ApiProperty({ example: '已退出登录' })
  message: string;
}
