55 lines
1.1 KiB
TypeScript
55 lines
1.1 KiB
TypeScript
import { prisma } from '@/db';
|
|
import { Audit, Setting } from '@/generated/prisma/client';
|
|
|
|
type AdminSettingValue = Pick<Setting, 'id' | 'key' | 'value'>;
|
|
|
|
type AdminSettingValueOnly = {
|
|
[key: string]: string;
|
|
};
|
|
|
|
type AdminSettingFull = {
|
|
[key: string]: AdminSettingValue;
|
|
};
|
|
|
|
export async function getAllAdminSettings(
|
|
valueOnly: true,
|
|
): Promise<AdminSettingValueOnly>;
|
|
|
|
export async function getAllAdminSettings(
|
|
valueOnly?: false,
|
|
): Promise<AdminSettingFull>;
|
|
|
|
export async function getAllAdminSettings(valueOnly = false) {
|
|
const settings = await prisma.setting.findMany({
|
|
where: {
|
|
relation: 'admin',
|
|
},
|
|
select: {
|
|
id: true,
|
|
key: true,
|
|
value: true,
|
|
},
|
|
});
|
|
|
|
const results: Record<string, string | AdminSettingValue> = {};
|
|
|
|
settings.forEach((setting) => {
|
|
results[setting.key] = valueOnly ? setting.value : setting;
|
|
});
|
|
|
|
return results;
|
|
}
|
|
|
|
export const createAuditLog = async (data: Omit<Audit, 'id' | 'createdAt'>) => {
|
|
try {
|
|
await prisma.audit.create({
|
|
data: {
|
|
...data,
|
|
},
|
|
});
|
|
} catch (error) {
|
|
console.log(error);
|
|
throw error;
|
|
}
|
|
};
|