from typing import ClassVar, Optional
from ..base_nodes import CCBaseNode

class CurriculumBaseNode(CCBaseNode):
    __primarylabel__: ClassVar[str] = ''

class KeyStageNode(CurriculumBaseNode):
    __primarylabel__: ClassVar[str] = 'KeyStage'
    key_stage: str
    name: str

class KeyStageSyllabusNode(CurriculumBaseNode):
    __primarylabel__: ClassVar[str] = 'KeyStageSyllabus'
    id: str
    name: str
    key_stage: str
    subject_name: str

class SubjectNode(CurriculumBaseNode):
    __primarylabel__: ClassVar[str] = 'Subject'
    id: str
    name: str
        
class TopicNode(CurriculumBaseNode):
    __primarylabel__: ClassVar[str] = 'Topic'
    id: str
    name: str
    type: str
    assessment_type: str
    total_number_of_lessons_for_topic: str
    
class TopicLessonNode(CurriculumBaseNode):
    __primarylabel__: ClassVar[str] = 'TopicLesson'
    id: str
    name: str
    type: str
    length: Optional[str] = None
    suggested_activities: Optional[str] = None
    skills_learned: Optional[str] = None
    weblinks: Optional[str] = None

class LearningStatementNode(CurriculumBaseNode):
    __primarylabel__: ClassVar[str] = 'LearningStatement'
    id: str
    name: str
    type: str

class ScienceLabNode(CurriculumBaseNode):
    __primarylabel__: ClassVar[str] = 'ScienceLab'
    id: str
    name: str
    summary: Optional[str] = None
    requirements: Optional[str] = None
    procedure: Optional[str] = None
    safety: Optional[str] = None
    weblinks: Optional[str] = None
