apps/recallassess/recallassess-api/src/api/admin/system-setting/system-setting.service.ts
SystemSettingService
Admin API — System Setting (System Setting). Business Logic Service for RecallAssess.
BNestBaseModuleService
Methods |
| Async add | ||||||
add(data: any)
|
||||||
|
Override add method to log creation
Parameters :
Returns :
Promise<any>
|
| Async delete | ||||||
delete(id: number)
|
||||||
|
Override delete method to log deletion
Parameters :
Returns :
Promise<any>
|
| Async save |
save(id: number, data: any)
|
|
Override save method to log update
Returns :
Promise<any>
|
import { BNestBaseModuleService } from "@bish-nest/core/data/module-service/base-module.service";
import { BNestPrismaService } from "@bish-nest/core/services";
import { Injectable, NotFoundException } from "@nestjs/common";
/**
* SystemSettingService
*
* Admin API — System Setting (System Setting). Business Logic Service for RecallAssess.
*/
@Injectable()
export class SystemSettingService extends BNestBaseModuleService {
/**
* Override add method to log creation
*/
async add(data: any): Promise<any> {
// Validate unique key constraint
if (data.key) {
const existingSetting = await this.prisma.client.systemSetting.findUnique({
where: { key: data.key },
});
if (existingSetting) {
throw new Error(`System setting with key '${data.key}' already exists`);
}
}
// Validate key is not empty
if (!data.key || data.key === '') {
throw new Error('System setting key cannot be empty');
}
// Validate value is not empty
if (!data.value || data.value === '') {
throw new Error('System setting value cannot be empty');
}
// Filter out display-only audit fields (keep user relationships for database)
const filteredData = { ...data };
delete filteredData.user_name_created_by;
delete filteredData.user_name_updated_by;
return super.add(filteredData);
}
/**
* Override save method to log update
*/
async save(id: number, data: any): Promise<any> {
// Get old data before update
const oldSystemSetting = await this.prisma.client.systemSetting.findUnique({
where: { id },
});
if (!oldSystemSetting) {
throw new NotFoundException(`System setting with ID ${id} not found`);
}
// Validate unique key constraint if key is being updated
if (data.key && data.key !== oldSystemSetting.key) {
const existingSetting = await this.prisma.client.systemSetting.findUnique({
where: { key: data.key },
});
if (existingSetting && existingSetting.id !== id) {
throw new Error(`System setting with key '${data.key}' already exists`);
}
}
// Validate key is not empty
if (data.key === '') {
throw new Error('System setting key cannot be empty');
}
// Validate value is not empty
if (data.value === '') {
throw new Error('System setting value cannot be empty');
}
// Filter out display-only audit fields (keep userUpdatedBy for database)
const filteredData = { ...data };
delete filteredData.user_name_created_by;
delete filteredData.user_name_updated_by;
return super.save(id, filteredData);
}
/**
* Override delete method to log deletion
*/
async delete(id: number): Promise<any> {
// Get data before deletion
const systemSetting = await this.prisma.client.systemSetting.findUnique({
where: { id },
});
if (!systemSetting) {
throw new NotFoundException(`System setting with ID ${id} not found`);
}
return super.delete(id);
}
}