add name as unique id - #701

This commit is contained in:
Proddy
2023-03-01 21:48:07 +01:00
parent d2c5ae8aa9
commit ee5ec1b7d1
8 changed files with 230 additions and 281 deletions

View File

@@ -85,7 +85,29 @@ export const createSettingsValidator = (settings: Settings) =>
})
});
export const schedulerItemValidation = (si: ScheduleItem, creating: boolean) =>
export const schedulerItemValidation = (schedule: ScheduleItem[], creating: boolean) =>
new Schema({
cmd: [{ required: true, message: 'Command is required' }]
id: [
{ required: true, message: 'Name is required' },
{
type: 'string',
pattern: /^[a-zA-Z0-9_\\.]{1,24}$/,
message: "Must be 1-24 characters: alpha numeric, '_' or '.'"
},
...(creating ? [uniqueIDValidator(schedule)] : [])
],
cmd: [
{ required: true, message: 'Command is required' },
{ type: 'string', min: 1, max: 32, message: 'Command must be 1-32 characters' }
]
});
export const uniqueIDValidator = (schedule: ScheduleItem[]) => ({
validator(rule: InternalRuleItem, id: string, callback: (error?: string) => void) {
if (id && schedule.find((si) => si.id === id)) {
callback('Name already in use');
} else {
callback();
}
}
});