Problem Statement
In current state changes stored in lms service are not reactive to any changes in the course content. This structure creates the issue when some of the contents changes and Sunbird uses locally stored copy of the content. For example, Once the user has completed the full course, if any unit is added or removed from the course, the changes are not dynamically reflected. There are use cases to enable this.
- SB-12089Getting issue details... STATUS
Solution Approach
A complete solution can be divided into below points
- remove the course data stored into db (ex. leafNodeCounts, courseName, tocUrl etc.)
- Restructure the DB tables and corresponding ES
- migrate the old data according to new structure
- Code changes in accordance with the restructured data model
Current DB structure related to course batch progress
course_batch (ES → cbatch)
column | type | description | used | indexed | can be removed |
---|---|---|---|---|---|
id | text | batchid | PK | ||
countdecrementdate | text | ||||
countdecrementstatus | boolean | ||||
countincrementdate | text | ||||
countincrementstatus | boolean | ||||
coursecreator | text | Y | |||
courseid | text | Y | |||
createdby | text | ||||
createddate | text | ||||
createdfor | list<text> | ||||
description | text | ||||
enddate | text | ||||
enrollmenttype | text | Y | |||
hashtagid | text | ||||
mentors | list<text> | ||||
name | text | ||||
participant | map<text, boolean> | ||||
startdate | text | ||||
status | int | Y | |||
updateddate | text |
content_consumption
column | type | description | used | indexed | can be removed |
---|---|---|---|---|---|
id | text | hash of userid, batchid and courseid and contentid | PK | ||
batchid | text | ||||
completedcount | int | how many time the content was completed | |||
contentid | text | Y | |||
contentversion | text | ||||
courseid | text | Y | |||
datetime | timestamp | ||||
grade | text | N | Y | ||
lastaccesstime | text | ||||
lastcompletedtime | text | ||||
lastupdatedtime | text | ||||
progress | int | progress pushed | |||
result | text | N | Y | ||
score | text | N | Y | ||
status | int | 1 for progress 2 for completed | Y | ||
userid | text | Y | |||
viewcount | int | how many times user viewed the content |