import { Controller, Get, Query, UseGuards } from '@nestjs/common'; import { ApiBearerAuth, ApiExtraModels, ApiOkResponse, ApiOperation, ApiTags, getSchemaPath } from '@nestjs/swagger'; import { CurrentUser } from '../../common/decorators/current-user.decorator'; import { JwtAuthGuard } from '../../common/guards/jwt-auth.guard'; import { FeedFilterDto } from './dto/feed-filter.dto'; import { FeedService } from './feed.service'; import { ProfileResponseDto } from '../profiles/dto/profile-response.dto'; @ApiTags('feed') @ApiBearerAuth() @UseGuards(JwtAuthGuard) @ApiExtraModels(ProfileResponseDto) @Controller('feed') export class FeedController { constructor(private readonly feedService: FeedService) {} @Get() @ApiOperation({ summary: 'Get filtered feed (requires profileId)' }) @ApiOkResponse({ schema: { properties: { items: { type: 'array', items: { $ref: getSchemaPath(ProfileResponseDto) } }, page: { type: 'number', example: 1 }, limit: { type: 'number', example: 20 }, }, required: ['items', 'page', 'limit'], }, }) getFeed(@CurrentUser('id') userId: string, @Query() filter: FeedFilterDto) { return this.feedService.getFeed(userId, filter); } }