import { CreatorsService } from './creators.service';
import { ApiBearerAuth, ApiOperation, ApiTags } from '@nestjs/swagger';
import { ApiResultListWithTotal } from 'src/common/types/api-result';
import { Controller, Get, UseGuards } from '@nestjs/common';
import { RequestUser } from 'src/common/request-user';
import { UserDTO } from 'src/common/dto/user-dto';
import { InvitationInfo } from './dto/invitation-dto';
import { JwtAuthGuard } from '../common/guards/jwt.auth.guard';
import { OptTokenOrJwtAuthGuard } from '../guards/opt-token-or-jwt.auth.guard';

@ApiTags('creators')
@Controller('creators')
@UseGuards(OptTokenOrJwtAuthGuard)
@ApiBearerAuth()
export class CreatorsController {
  constructor(private readonly creatorsService: CreatorsService) {}

  @Get('invitations')
  @UseGuards(JwtAuthGuard)
  @ApiOperation({
    summary: 'Get my invitations',
  })
  async getInvitation(
    @RequestUser() account: UserDTO,
  ): Promise<ApiResultListWithTotal<InvitationInfo>> {
    const res = await this.creatorsService.getInvitations(account);
    return res;
  }
}
