Picsur/backend/src/routes/api/pref/sys-pref.controller.ts

59 lines
1.7 KiB
TypeScript
Raw Normal View History

2022-09-06 14:32:16 +00:00
import { Body, Controller, Get, Logger, Param, Post } from '@nestjs/common';
2022-03-06 11:27:11 +00:00
import {
2022-06-05 10:20:16 +00:00
GetPreferenceResponse,
MultiplePreferencesResponse,
UpdatePreferenceRequest,
2022-09-06 14:32:16 +00:00
UpdatePreferenceResponse,
2022-04-13 15:38:42 +00:00
} from 'picsur-shared/dist/dto/api/pref.dto';
2022-08-26 18:40:16 +00:00
import { ThrowIfFailed } from 'picsur-shared/dist/types';
2022-09-02 15:18:22 +00:00
import { SysPreferenceDbService } from '../../../collections/preference-db/sys-preference-db.service';
2022-03-12 14:10:22 +00:00
import { RequiredPermissions } from '../../../decorators/permissions.decorator';
2022-04-04 08:36:59 +00:00
import { Returns } from '../../../decorators/returns.decorator';
2022-04-18 12:34:53 +00:00
import { Permission } from '../../../models/constants/permissions.const';
2022-03-04 13:37:00 +00:00
2022-04-13 15:28:48 +00:00
@Controller('api/pref/sys')
@RequiredPermissions(Permission.SysPrefAdmin)
2022-04-13 15:28:48 +00:00
export class SysPrefController {
2022-09-02 15:18:22 +00:00
private readonly logger = new Logger(SysPrefController.name);
2022-03-12 14:10:22 +00:00
2022-09-02 15:18:22 +00:00
constructor(private readonly prefService: SysPreferenceDbService) {}
2022-03-04 13:37:00 +00:00
2022-04-13 15:28:48 +00:00
@Get()
2022-04-13 15:38:42 +00:00
@Returns(MultiplePreferencesResponse)
async getAllSysPrefs(): Promise<MultiplePreferencesResponse> {
2022-08-26 18:40:16 +00:00
const prefs = ThrowIfFailed(await this.prefService.getAllPreferences());
2022-03-19 14:56:29 +00:00
2022-03-28 13:43:52 +00:00
return {
2022-06-27 13:23:06 +00:00
results: prefs,
2022-03-24 19:05:32 +00:00
total: prefs.length,
};
2022-03-19 14:56:29 +00:00
}
2022-04-13 15:28:48 +00:00
@Get(':key')
2022-04-13 15:38:42 +00:00
@Returns(GetPreferenceResponse)
2022-06-05 10:20:16 +00:00
async getSysPref(@Param('key') key: string): Promise<GetPreferenceResponse> {
2022-08-26 18:40:16 +00:00
const pref = ThrowIfFailed(await this.prefService.getPreference(key));
2022-03-04 13:37:00 +00:00
2022-03-28 13:43:52 +00:00
return pref;
2022-03-04 14:28:56 +00:00
}
2022-04-13 15:28:48 +00:00
@Post(':key')
2022-04-13 15:38:42 +00:00
@Returns(UpdatePreferenceResponse)
2022-03-04 14:28:56 +00:00
async setSysPref(
@Param('key') key: string,
2022-04-13 15:38:42 +00:00
@Body() body: UpdatePreferenceRequest,
): Promise<UpdatePreferenceResponse> {
2022-03-04 14:28:56 +00:00
const value = body.value;
2022-03-19 14:56:29 +00:00
2022-08-26 18:40:16 +00:00
const pref = ThrowIfFailed(
await this.prefService.setPreference(key, value),
);
2022-03-04 13:37:00 +00:00
2022-03-28 13:43:52 +00:00
return {
2022-03-27 20:33:13 +00:00
key,
value: pref.value,
type: pref.type,
};
2022-03-04 13:37:00 +00:00
}
}