import { SetMetadata } from '@nestjs/common';

/**
 * Public 데코레이터
 *
 * @description
 * 인증이 필요 없는 공개 엔드포인트를 표시하는 데코레이터입니다.
 * JwtAuthGuard와 함께 사용하여 특정 엔드포인트의 인증을 건너뜁니다.
 *
 * @example
 * // 로그인, 회원가입 등 인증 없이 접근 가능한 엔드포인트
 * @Public()
 * @Post('login')
 * async login(@Body() loginDto: LoginDto) {
 *   return this.authService.login(loginDto);
 * }
 *
 * @example
 * // 전체 컨트롤러를 공개로 설정
 * @Public()
 * @Controller('public')
 * export class PublicController {
 *   // 모든 엔드포인트가 인증 없이 접근 가능
 * }
 *
 * @export
 * @constant Public
 */
export const Public = () => SetMetadata('isPublic', true);
