forked from tl-its-umich-edu/canvas-course-manager-next
-
Notifications
You must be signed in to change notification settings - Fork 0
/
BulkSectionCreateValidators.ts
26 lines (21 loc) · 1.13 KB
/
BulkSectionCreateValidators.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import { InvalidationType } from '../models/models.js'
import { DuplicateIdentifierInRowsValidator, RowInvalidation, StringRowsSchemaValidator } from '../utils/rowValidation.js'
import { sectionNameSchema } from '../utils/validation.js'
interface SectionsRowInvalidation extends RowInvalidation {}
interface SectionRowsValidator {
validate: (sectionName: string[]) => SectionsRowInvalidation[]
}
class DuplicateSectionInFileSectionRowsValidator implements SectionRowsValidator {
validate = (sectionNames: string[]): SectionsRowInvalidation[] => {
const dupNameValidator = new DuplicateIdentifierInRowsValidator('section name')
return dupNameValidator.validate(sectionNames)
}
}
class SectionNameLengthValidator implements SectionRowsValidator {
validate = (sectionNames: string[]): SectionsRowInvalidation[] => {
const sectionNameValidator = new StringRowsSchemaValidator(sectionNameSchema, 'section name')
return sectionNameValidator.validate(sectionNames)
}
}
export type { SectionsRowInvalidation, SectionRowsValidator }
export { InvalidationType, DuplicateSectionInFileSectionRowsValidator, SectionNameLengthValidator }