import { Controller, Get, Query, UseGuards } from '@nestjs/common';
import { ApiOperation, ApiQuery, ApiResponse, ApiTags } from '@nestjs/swagger';
import { JwtAuthGuard } from '../auth/guards/jwt-auth.guard';
import { UserService, type PublicUser } from './user.service';

// 사용자 컨트롤러 — 멤버 초대 자동완성을 위한 검색/목록 제공 (인증 필요)
@ApiTags('User')
@Controller('users')
@UseGuards(JwtAuthGuard)
export class UserController {
  constructor(private readonly userService: UserService) {}

  @Get()
  @ApiOperation({
    summary: '사용자 검색/목록 (멤버 초대 자동완성)',
    description: 'q 가 있으면 이메일/이름 부분일치, 없으면 전체 목록(이름순).',
  })
  @ApiQuery({ name: 'q', required: false, description: '검색어(이메일/이름)' })
  @ApiResponse({ status: 200, description: '목록 조회 성공' })
  async list(@Query('q') q?: string): Promise<PublicUser[]> {
    const users = await this.userService.search(q);
    return users.map((u) => UserService.toPublic(u));
  }
}
