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')
|
2022-05-04 19:25:52 +00:00
|
|
|
@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
|
|
|
}
|
|
|
|
}
|