-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathinvite-codes.controller.ts
More file actions
73 lines (70 loc) ยท 2.19 KB
/
invite-codes.controller.ts
File metadata and controls
73 lines (70 loc) ยท 2.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
import {
Controller,
Get,
Post,
Param,
HttpStatus,
UseGuards,
} from '@nestjs/common';
import { ApiTags, ApiOperation, ApiResponse, ApiBody } from '@nestjs/swagger';
import { InviteCodesService } from './invite-codes.service';
import { CreateInviteCodeDto } from './dto/create-invite-code.dto';
import { MatchUserProfileGuard } from '../auth/guards/match-user-profile.guard';
import { IsProfileInSpaceGuard } from '../auth/guards/is-profile-in-space.guard';
@Controller('inviteCodes')
@ApiTags('inviteCodes')
export class InviteCodesController {
constructor(private readonly inviteCodesService: InviteCodesService) {}
@Post(':space_uuid')
@UseGuards(MatchUserProfileGuard)
@UseGuards(IsProfileInSpaceGuard)
@ApiOperation({ summary: 'Create invite code' })
@ApiBody({ type: CreateInviteCodeDto })
@ApiResponse({
status: HttpStatus.CREATED,
description: 'The invite code has been successfully created.',
})
@ApiResponse({
status: HttpStatus.BAD_REQUEST,
description: 'Space code input is missing.',
})
@ApiResponse({
status: HttpStatus.UNAUTHORIZED,
description: 'need access token',
})
@ApiResponse({
status: HttpStatus.NOT_FOUND,
description: 'Space not found.',
})
async createInviteCode(@Param('space_uuid') spaceUuid: string) {
const inviteCode =
await this.inviteCodesService.createInviteCode(spaceUuid);
return {
statusCode: HttpStatus.CREATED,
message: 'Created',
data: { invite_code: inviteCode.inviteCode },
};
}
@Get(':inviteCode')
@ApiOperation({ summary: 'Find space by invite code' })
@ApiResponse({
status: HttpStatus.OK,
description: 'Returns a space associated with the invite code.',
})
@ApiResponse({
status: HttpStatus.UNAUTHORIZED,
description: 'need access token',
})
@ApiResponse({
status: HttpStatus.NOT_FOUND,
description: 'Invite code not found.',
})
@ApiResponse({
status: HttpStatus.GONE,
description: 'Invite code has expired',
})
async findSpace(@Param('inviteCode') inviteCode: string) {
const space = await this.inviteCodesService.findSpace(inviteCode);
return { statusCode: HttpStatus.OK, message: 'Success', data: space };
}
}