details:
    type: studentEnrolment
    category: Students
    name: Student Enrolment
    table: gibbonStudentEnrolment
    modes: { update: true, insert: true, export: true }
access:
    module: Admissions
    action: Student Enrolment
primaryKey:
    gibbonStudentEnrolmentID
uniqueKeys:
    - [ gibbonSchoolYearID, gibbonYearGroupID, gibbonPersonID ]
    - [ gibbonSchoolYearID, gibbonFormGroupID, gibbonPersonID ]
table:
    gibbonSchoolYearID:
        name: "School Year"
        desc: "School year name, as set in School Admin. Must already exist."
        args: { filter: schoolyear, required: true, custom: true }
        relationship: { table: gibbonSchoolYear, key: gibbonSchoolYearID, field: name  }
    gibbonYearGroupID:
        name: "Year Group"
        desc: "Short Name"
        args: { filter: string, required: true }
        relationship: { table: gibbonYearGroup, key: gibbonYearGroupID, field: nameShort  }
    gibbonFormGroupID:
        name: "Form Group"
        desc: "Short Name"
        args: { filter: string, required: true }
        relationship: { table: gibbonFormGroup, key: gibbonFormGroupID, field: [ nameShort, gibbonSchoolYearID ]  }
    gibbonPersonID:
        name: "Student"
        desc: "Username or Email (if unique)"
        args: { filter: nospaces, required: true }
        relationship: { table: gibbonPerson, key: gibbonPersonID, field: username|email  }
    rollOrder:
        name: "Roll Order"
        desc: ""
        args: { filter: numeric, custom: true }
