core PK: id 10 required 1 unique

Description

Records a peer mentor or coordinator's enrollment in a training course, tracking registration status, completion, and certification eligibility.

16
Attributes
5
Indexes
6
Validation Rules
10
CRUD Operations

Data Structure

Name Type Description Constraints
id uuid Primary key
PKrequiredunique
course_id uuid Foreign key to courses table
required
user_id uuid Foreign key to users table — the enrollee
required
status enum Current registration status
required
registered_at datetime Timestamp when the registration was created
required
confirmed_at datetime Timestamp when registration was confirmed by coordinator or system
-
completed_at datetime Timestamp when the user completed the course
-
cancelled_at datetime Timestamp when the registration was cancelled
-
cancellation_reason text Optional reason provided when cancelling
-
waitlist_position integer Position in waitlist when status is waitlisted; null otherwise
-
registered_by_user_id uuid User who performed the registration — may differ from user_id if a coordinator registered on behalf
required
attendance_confirmed boolean Whether physical/virtual attendance was confirmed by the facilitator
required
certificate_issued boolean Whether a peer mentor certificate was issued following completion
required
notes text Internal notes added by coordinator about this registration
-
created_at datetime Record creation timestamp
required
updated_at datetime Record last-updated timestamp
required

Database Indexes

idx_course_registrations_course_id
btree

Columns: course_id

idx_course_registrations_user_id
btree

Columns: user_id

idx_course_registrations_user_course
btree unique

Columns: user_id, course_id

idx_course_registrations_status
btree

Columns: status

idx_course_registrations_registered_at
btree

Columns: registered_at

Validation Rules

valid_course_reference error

Validation failed

valid_user_reference error

Validation failed

status_transition_guard error

Validation failed

completed_at_required_on_completion error

Validation failed

cancelled_at_required_on_cancellation error

Validation failed

waitlist_position_only_when_waitlisted error

Validation failed

Business Rules

no_duplicate_registration
on_create

A user may not register for the same course more than once unless the previous registration was cancelled

capacity_check
on_create

If the course has reached its maximum participant count, new registrations are placed on the waitlist automatically

waitlist_promotion
on_update

When a confirmed registration is cancelled, the first waitlisted user is automatically promoted to confirmed and notified

certificate_on_completion
on_update

When status transitions to completed and attendance_confirmed is true, the system triggers certificate issuance via CertificateService

certification_expiry_watch
always

CertificationExpiryChecker reads completed registrations to determine certificate validity windows and trigger auto-pause if expired

org_scoped_enrollment
on_create

Users may only register for courses belonging to their own organization

Storage Configuration

Storage Type
primary_table
Location
main_db
Partitioning
No Partitioning
Retention
Permanent Storage