streamflix-api / src /modules /user /profile /profile.controller.ts
Akshar2325
feat(discord-logger): implement api request and response logging
d201b18
Raw
History Blame
1.67 kB
import { Controller, Get, Put, Body, UseGuards } from '@nestjs/common';
import { ApiTags, ApiBearerAuth, ApiOperation } from '@nestjs/swagger';
import { ProfileService } from './profile.service';
import { UpdateProfileDto } from './dto/update-profile.dto';
import { GetUser } from 'src/shared/decorators/get-user.decorator';
import { LogToDiscord } from 'src/shared/decorators/log-to-discord.decorator';
import type { UserSessionType } from 'src/shared/types/user-session.type';
import { UserAuthGuard } from '../auth/guards/user-auth.guard';
@ApiTags('User: Profile')
@Controller('user/profile')
@UseGuards(UserAuthGuard)
@ApiBearerAuth()
@LogToDiscord()
export class ProfileController {
constructor(private readonly profileService: ProfileService) {}
@Get()
@ApiOperation({ summary: 'Get user profile' })
async getProfile(@GetUser() sessionData: UserSessionType) {
const user = await this.profileService.getProfile(sessionData.user.id);
return { user };
}
@Put()
@ApiOperation({
summary: 'Update user profile (cannot change email or phone)',
})
async updateProfile(
@GetUser() sessionData: UserSessionType,
@Body() updateDto: UpdateProfileDto,
) {
const user = await this.profileService.updateProfile(
sessionData.user.id,
updateDto,
);
return {
message: 'Profile updated successfully',
user,
};
}
@Get('interests')
@ApiOperation({ summary: 'Get user interests (genres)' })
async getUserInterests(@GetUser() sessionData: UserSessionType) {
const interests = await this.profileService.getUserInterests(
sessionData.user.id,
);
return { interests };
}
}