-
Notifications
You must be signed in to change notification settings - Fork 20
/
settings.controller.ts
executable file
·90 lines (81 loc) · 2.25 KB
/
settings.controller.ts
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
import {
Controller,
Get,
Post,
Body,
UseGuards,
Param,
Put,
Query,
UseInterceptors
} from "@nestjs/common";
import { AuthGuard } from "@nestjs/passport";
import { plainToClass } from "class-transformer";
import { SettingsService } from "./settings.service";
import { Setting } from "./../interfaces";
import {
KeyValueDto,
CreateSettingReq,
EditSettingReq,
SettingsGroup,
SettingRes
} from "./../dto";
import { Tags } from "nest-swagger";
import {
ResultList,
NullableParseIntPipe,
RolesGuard,
LoggingInterceptor
} from "nestx-common";
@Tags("core")
@Controller("setting")
@UseGuards(AuthGuard("jwt"), RolesGuard)
@UseInterceptors(LoggingInterceptor)
export class SettingsController {
constructor(private readonly settingService: SettingsService) {}
@Post()
async create(@Body() entry: CreateSettingReq) {
return this.settingService.create(plainToClass(CreateSettingReq, entry));
}
@Put()
async update(@Body() entry: EditSettingReq): Promise<Setting> {
return this.settingService.update(plainToClass(EditSettingReq, entry));
}
@Put("name/:name")
async updateSettingsByName(
@Query("name") name: string,
@Body() entry: SettingsGroup
): Promise<SettingsGroup> {
return this.settingService.updateSettingsByName(name, entry);
}
@Get("search")
async search(
@Query("keyword") keyword?: string,
@Query("value") value?: string
): Promise<KeyValueDto[]> {
return this.settingService.search(keyword, value);
}
@Get("query")
async query(
@Query("keyword") keyword?: string,
@Query("page", new NullableParseIntPipe()) page: number = 1,
@Query("size", new NullableParseIntPipe()) size: number = 10,
@Query("sort") sort?: string
): Promise<ResultList<Setting>> {
return this.settingService.querySearch(keyword, page, size, sort);
}
@Get("name/:name")
async getSettingsByName(
@Query("name") name?: string
): Promise<SettingsGroup> {
return this.settingService.getSettingsByName(name);
}
@Get("key/:key")
async getSettingsByKey(@Query("key") key: string): Promise<SettingRes> {
return this.settingService.getSettingsByKey(key);
}
@Get(":id")
async findOne(@Param("id") id: string): Promise<Setting> {
return this.settingService.findById(id);
}
}