agile-learning-institute / mentorHub-mongodb

Mongo Database for Institute system
2 stars 3 forks source link

Topic 3.0.1 curriculum 3.0.2 #117

Closed FlatBallFlyer closed 2 months ago

FlatBallFlyer commented 2 months ago

Removed skill index property from Topics, and added Skills and Resources to Now/Completed scope in Curriculum

michquinn commented 2 months ago

So just some general questions:

  1. Based on #115, there are no longer collections for Skills or Resources, those having been subsumed by the Topics collection. Despite this, there are still individual schema files for each, in addition to their definitions within the Topic schema.
  2. These subschemas are also present directly in the Curriculum schema. It appears this has been the case since the beginning, though I'm not aware of any explicit documentation of the choice to duplicate the data.

Actually, there are several competing definitions of a resource.

On the Topics schema:

description
link
name
skills
tags

The old standalone resource collection schema had these additional keys:

_id
duration
lastSaved
status

While the Curriculum schema has these additional keys (compared to the basic ones in Topics):

completed
rating
review
started

The common fields of name and skills are not defined identically among the three. In the standalone collection name is a slug/msmWord, while in Topics and Curriculum it is an msmSentence (though the human-readable description for the latter states "for adHoc resources"). Resource skills, on the other hand, within the Resources collection is an array of ObjectIds, while in Topics (version 3) it is an array of index references to topic skills and in Curriculum it is an array of msmSentence.

Topics in a curriculum are a named set of resources. In the topics collection, a topic has additional properties such as skills, which resources could reference by index number until that property was removed. Topic skills essentially take their definition from the old skills collection schema, though lacking an _id, status, or lastSaved property.

Major version 2 of the Topics schema assumed Topics and their corresponding resources could each have their own independent set of skills (topics.skills and resource.skills, both arrays of ObjectIds to the Skills collection), while in version 3 the Topic had a skills property listing all the skills that one may gain from consuming the resources on that topic, while each resource explicitly referenced which skills from the set it would help the user develop. This reference appears to be deprecated.