#!/usr/bin/env python3 """ ClassroomCopilot Structure Relationships This module defines the relationships between schools and structure nodes, as well as between entities and structure nodes. """ from typing import ClassVar from modules.database.tools.neontology.baserelationship import BaseRelationship import modules.database.schemas.nodes.schools.schools as school_nodes import modules.database.schemas.nodes.structures.schools as school_structures import modules.database.schemas.nodes.workers.workers as worker_nodes class SchoolHasStaffStructure(BaseRelationship): """Relationship between a school and its staff structure node.""" __relationshiptype__: ClassVar[str] = 'HAS_STAFF_STRUCTURE' source: school_nodes.SchoolNode target: school_structures.StaffStructureNode class SchoolHasStudentStructure(BaseRelationship): """Relationship between a school and its student structure node.""" __relationshiptype__: ClassVar[str] = 'HAS_STUDENT_STRUCTURE' source: school_nodes.SchoolNode target: school_structures.StudentStructureNode class SchoolHasITAdminStructure(BaseRelationship): """Relationship between a school and its IT admin structure node.""" __relationshiptype__: ClassVar[str] = 'HAS_IT_ADMIN_STRUCTURE' source: school_nodes.SchoolNode target: school_structures.ITAdminStructureNode class EntityBelongsToStructure(BaseRelationship): """ Relationship between an entity (worker, student, etc.) and a structure node. This is a generic relationship that can be used for any entity type. """ __relationshiptype__: ClassVar[str] = 'BELONGS_TO_STRUCTURE' source: object # Generic source type to allow any entity target: object # Generic target type to allow any structure # Specific entity-to-structure relationships class SuperAdminBelongsToITAdminStructure(BaseRelationship): """Relationship between a super admin and the IT admin structure.""" __relationshiptype__: ClassVar[str] = 'BELONGS_TO_STRUCTURE' source: worker_nodes.SuperAdminNode target: school_structures.ITAdminStructureNode class TeacherBelongsToStaffStructure(BaseRelationship): """Relationship between a teacher and the staff structure.""" __relationshiptype__: ClassVar[str] = 'BELONGS_TO_STRUCTURE' source: worker_nodes.TeacherNode target: school_structures.StaffStructureNode class StudentBelongsToStudentStructure(BaseRelationship): """Relationship between a student and the student structure.""" __relationshiptype__: ClassVar[str] = 'BELONGS_TO_STRUCTURE' source: worker_nodes.StudentNode target: school_structures.StudentStructureNode