You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

34 lines
896 B

import { createError, readValidatedBody } from 'h3';
import Database from '#server/utils/Database';
import { definePermissionEventHandler } from '#server/utils/handler';
import { validateZod } from '#server/utils/types';
import { ClientGroupCreateSchema } from '#db/repositories/clientGroup/types';
export default definePermissionEventHandler(
'admin',
'any',
async ({ event }) => {
const data = await readValidatedBody(
event,
validateZod(ClientGroupCreateSchema, event)
);
try {
const group = await Database.clientGroups.create(data);
return { success: true, group };
} catch (error) {
if (
error instanceof Error &&
error.message === 'Client group already exists'
) {
throw createError({
statusCode: 409,
statusMessage: error.message,
});
}
throw error;
}
}
);