<?xml version="1.0" encoding="UTF-8"?>
<xmi:XMI xmlns:xmi="http://www.omg.org/XMI" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:version="2.1">
  <uml:Model xmi:id="MetaCourse" name="MetaCourse">

    <!-- User -->
    <packagedElement xmi:type="uml:Class" xmi:id="User" name="User">
      <ownedAttribute xmi:id="User_id" name="id" visibility="private"><type xmi:type="uml:PrimitiveType" href="Guid"/></ownedAttribute>
      <ownedAttribute xmi:id="User_name" name="name" visibility="private"><type xmi:type="uml:PrimitiveType" href="String"/></ownedAttribute>
      <ownedAttribute xmi:id="User_email" name="email" visibility="private"><type xmi:type="uml:PrimitiveType" href="String"/></ownedAttribute>
      <ownedAttribute xmi:id="User_passwordHash" name="passwordHash" visibility="private"><type xmi:type="uml:PrimitiveType" href="String"/></ownedAttribute>
      <ownedAttribute xmi:id="User_createdAt" name="createdAt" visibility="private"><type xmi:type="uml:PrimitiveType" href="DateTime"/></ownedAttribute>
    </packagedElement>

    <!-- Course -->
    <packagedElement xmi:type="uml:Class" xmi:id="Course" name="Course">
      <ownedAttribute xmi:id="Course_id" name="id" visibility="private"><type xmi:type="uml:PrimitiveType" href="Guid"/></ownedAttribute>
      <ownedAttribute xmi:id="Course_title" name="title" visibility="private"><type xmi:type="uml:PrimitiveType" href="String"/></ownedAttribute>
      <ownedAttribute xmi:id="Course_description" name="description" visibility="private"><type xmi:type="uml:PrimitiveType" href="String"/></ownedAttribute>
      <ownedAttribute xmi:id="Course_status" name="status" visibility="private"><type xmi:type="uml:PrimitiveType" href="String"/></ownedAttribute>
      <ownedAttribute xmi:id="Course_createdAt" name="createdAt" visibility="private"><type xmi:type="uml:PrimitiveType" href="DateTime"/></ownedAttribute>
      <ownedAttribute xmi:id="Course_updatedAt" name="updatedAt" visibility="private"><type xmi:type="uml:PrimitiveType" href="DateTime"/></ownedAttribute>
    </packagedElement>

    <!-- Topic -->
    <packagedElement xmi:type="uml:Class" xmi:id="Topic" name="Topic">
      <ownedAttribute xmi:id="Topic_id" name="id" visibility="private"><type xmi:type="uml:PrimitiveType" href="Guid"/></ownedAttribute>
      <ownedAttribute xmi:id="Topic_title" name="title" visibility="private"><type xmi:type="uml:PrimitiveType" href="String"/></ownedAttribute>
      <ownedAttribute xmi:id="Topic_description" name="description" visibility="private"><type xmi:type="uml:PrimitiveType" href="String"/></ownedAttribute>
      <ownedAttribute xmi:id="Topic_position" name="position" visibility="private"><type xmi:type="uml:PrimitiveType" href="Integer"/></ownedAttribute>
    </packagedElement>

    <!-- Resource -->
    <packagedElement xmi:type="uml:Class" xmi:id="Resource" name="Resource">
      <ownedAttribute xmi:id="Resource_id" name="id" visibility="private"><type xmi:type="uml:PrimitiveType" href="Guid"/></ownedAttribute>
      <ownedAttribute xmi:id="Resource_type" name="type" visibility="private"><type xmi:type="uml:PrimitiveType" href="String"/></ownedAttribute>
      <ownedAttribute xmi:id="Resource_title" name="title" visibility="private"><type xmi:type="uml:PrimitiveType" href="String"/></ownedAttribute>
      <ownedAttribute xmi:id="Resource_content" name="content" visibility="private"><type xmi:type="uml:PrimitiveType" href="String"/></ownedAttribute>
      <ownedAttribute xmi:id="Resource_createdAt" name="createdAt" visibility="private"><type xmi:type="uml:PrimitiveType" href="DateTime"/></ownedAttribute>
    </packagedElement>

    <!-- UserCourse (inscription junction) -->
    <packagedElement xmi:type="uml:Class" xmi:id="UserCourse" name="UserCourse">
      <ownedAttribute xmi:id="UserCourse_enrolledAt" name="enrolledAt" visibility="private"><type xmi:type="uml:PrimitiveType" href="DateTime"/></ownedAttribute>
      <ownedAttribute xmi:id="UserCourse_completedAt" name="completedAt" visibility="private"><type xmi:type="uml:PrimitiveType" href="DateTime"/></ownedAttribute>
    </packagedElement>

    <!-- TopicResource (junction) -->
    <packagedElement xmi:type="uml:Class" xmi:id="TopicResource" name="TopicResource">
      <ownedAttribute xmi:id="TopicResource_position" name="position" visibility="private"><type xmi:type="uml:PrimitiveType" href="Integer"/></ownedAttribute>
    </packagedElement>

    <!-- UserTopicProgress -->
    <packagedElement xmi:type="uml:Class" xmi:id="UserTopicProgress" name="UserTopicProgress">
      <ownedAttribute xmi:id="UTP_completed" name="completed" visibility="private"><type xmi:type="uml:PrimitiveType" href="Boolean"/></ownedAttribute>
      <ownedAttribute xmi:id="UTP_completedAt" name="completedAt" visibility="private"><type xmi:type="uml:PrimitiveType" href="DateTime"/></ownedAttribute>
    </packagedElement>

    <!-- UserResourceProgress -->
    <packagedElement xmi:type="uml:Class" xmi:id="UserResourceProgress" name="UserResourceProgress">
      <ownedAttribute xmi:id="URP_completed" name="completed" visibility="private"><type xmi:type="uml:PrimitiveType" href="Boolean"/></ownedAttribute>
      <ownedAttribute xmi:id="URP_completedAt" name="completedAt" visibility="private"><type xmi:type="uml:PrimitiveType" href="DateTime"/></ownedAttribute>
    </packagedElement>

    <!-- User crée Course (1 -> *) -->
    <packagedElement xmi:type="uml:Association" xmi:id="Assoc_UserCreeCourse" name="crée">
      <memberEnd xmi:idref="UserCreeCourse_user"/>
      <memberEnd xmi:idref="UserCreeCourse_course"/>
      <ownedEnd xmi:id="UserCreeCourse_user" name="user" type="User" visibility="private" association="Assoc_UserCreeCourse">
        <lowerValue xmi:type="uml:LiteralInteger" value="1"/>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" value="1"/>
      </ownedEnd>
      <ownedEnd xmi:id="UserCreeCourse_course" name="courses" type="Course" visibility="private" association="Assoc_UserCreeCourse">
        <lowerValue xmi:type="uml:LiteralInteger" value="0"/>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" value="*"/>
      </ownedEnd>
    </packagedElement>

    <!-- User inscription Course via UserCourse -->
    <packagedElement xmi:type="uml:Association" xmi:id="Assoc_UserInscriptionCourse" name="inscription">
      <memberEnd xmi:idref="Inscription_user"/>
      <memberEnd xmi:idref="Inscription_course"/>
      <ownedEnd xmi:id="Inscription_user" name="user" type="User" visibility="private" association="Assoc_UserInscriptionCourse">
        <lowerValue xmi:type="uml:LiteralInteger" value="0"/>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" value="*"/>
      </ownedEnd>
      <ownedEnd xmi:id="Inscription_course" name="course" type="Course" visibility="private" association="Assoc_UserInscriptionCourse">
        <lowerValue xmi:type="uml:LiteralInteger" value="0"/>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" value="*"/>
      </ownedEnd>
    </packagedElement>

    <!-- Course -> Topic (composition) -->
    <packagedElement xmi:type="uml:Association" xmi:id="Assoc_CourseTopic" name="">
      <memberEnd xmi:idref="CourseTopic_course"/>
      <memberEnd xmi:idref="CourseTopic_topic"/>
      <ownedEnd xmi:id="CourseTopic_course" name="course" type="Course" visibility="private" association="Assoc_CourseTopic" aggregation="composite">
        <lowerValue xmi:type="uml:LiteralInteger" value="1"/>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" value="1"/>
      </ownedEnd>
      <ownedEnd xmi:id="CourseTopic_topic" name="topics" type="Topic" visibility="private" association="Assoc_CourseTopic">
        <lowerValue xmi:type="uml:LiteralInteger" value="0"/>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" value="*"/>
      </ownedEnd>
    </packagedElement>

    <!-- Topic <-> Resource via TopicResource -->
    <packagedElement xmi:type="uml:Association" xmi:id="Assoc_TopicResource" name="">
      <memberEnd xmi:idref="TR_topic"/>
      <memberEnd xmi:idref="TR_resource"/>
      <ownedEnd xmi:id="TR_topic" name="topic" type="Topic" visibility="private" association="Assoc_TopicResource">
        <lowerValue xmi:type="uml:LiteralInteger" value="0"/>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" value="*"/>
      </ownedEnd>
      <ownedEnd xmi:id="TR_resource" name="resource" type="Resource" visibility="private" association="Assoc_TopicResource">
        <lowerValue xmi:type="uml:LiteralInteger" value="0"/>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" value="*"/>
      </ownedEnd>
    </packagedElement>

    <!-- User <-> Topic via UserTopicProgress -->
    <packagedElement xmi:type="uml:Association" xmi:id="Assoc_UserTopicProgress" name="">
      <memberEnd xmi:idref="UTP_user"/>
      <memberEnd xmi:idref="UTP_topic"/>
      <ownedEnd xmi:id="UTP_user" name="user" type="User" visibility="private" association="Assoc_UserTopicProgress">
        <lowerValue xmi:type="uml:LiteralInteger" value="0"/>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" value="*"/>
      </ownedEnd>
      <ownedEnd xmi:id="UTP_topic" name="topic" type="Topic" visibility="private" association="Assoc_UserTopicProgress">
        <lowerValue xmi:type="uml:LiteralInteger" value="0"/>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" value="*"/>
      </ownedEnd>
    </packagedElement>

    <!-- User <-> Resource via UserResourceProgress -->
    <packagedElement xmi:type="uml:Association" xmi:id="Assoc_UserResourceProgress" name="">
      <memberEnd xmi:idref="URP_user"/>
      <memberEnd xmi:idref="URP_resource"/>
      <ownedEnd xmi:id="URP_user" name="user" type="User" visibility="private" association="Assoc_UserResourceProgress">
        <lowerValue xmi:type="uml:LiteralInteger" value="0"/>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" value="*"/>
      </ownedEnd>
      <ownedEnd xmi:id="URP_resource" name="resource" type="Resource" visibility="private" association="Assoc_UserResourceProgress">
        <lowerValue xmi:type="uml:LiteralInteger" value="0"/>
        <upperValue xmi:type="uml:LiteralUnlimitedNatural" value="*"/>
      </ownedEnd>
    </packagedElement>

  </uml:Model>
</xmi:XMI>
