cga-assignment-syncer v1.0.0
CGA Assignments syncer
This module handles events from Canvas. We sync assignments, submissions, grades, and comments from Canvas and save them in our database.
Terms
- Assignment group - categorises the assignments, each assignment belongs to 1 assignment group
- Assignment - contains the assignment details such as the grading type, and possible submission types
- Assignment submission - the submission of a student id to an assignment, a student can submit multiple submissions if allowed by teacher. The highest attempt number is the latest submission by the student
- Assignment grade - the grade of the student, this could be a percentage, a letter, or a number, depends on the points possible set in the assignment
- Assignment comment - comments made by the teacher in the assignment. This is required for some reports such as milestone full term reports.
Message queues
There are subscriptions set in Canvas (Admin > Crimson Global Academy > Data Services) and these are currently connected to our message queues.
- assignmentGroupEvent - when any assignment group is created or updated
- assignmentEvent - when any assignment is created or updated
- assignmentSubmissionEvent - when a submission gets created or updated, this would contain the grades as well
- assignmentSubmissionCommentEvent - when a comment is created in a submission
- assignmentSubmissionCommentSync - records on this queue is checked for any updates because Canvas does not give out live events on comment update so we add messages to this queue from a lambda function triggered on a schedule.
Lambda functions
These syncers are run on a scheduled basis see assignmentSyncer.tf. This is to handle events that are not handled by Canvas webhooks. This will do a clean up of deleted assignments groups, assignments, submissions, and comments. Also for assignment submission, this also picks up details that are not send by the webhook such as posted_at field.
- syncAssignments - /assignments/sync/all - sync all assignment groups, assignments, submission, and grades
- syncAssignmentGroup - /assignments/sync/group
- syncAssignment - /assignments/sync
- syncAssignmentSubmission - /assignments/sync/submission
- updateSubmissionComment - /assignments/sync/submission/comment
- syncSubmissionComment - /assignments/sync/submission/comment/new
Testing locally
There are available scripts for you to try. Check out package.json for more info.
Enter command in your terminal npm run {{script}}
.
Note:
npm run process_comments
- will fetch submissions from your database and will get all comments in Canvas. The corresponding course, assignment, and submissions should be present in the Canvas environment you set up.
6 months ago