Index

apps/recallassess/recallassess-api/src/scripts/lms-migration/migrations/assessment-answer.migration.ts

AssessmentAnswerPayload
literal type
BatAnswerLevel
"FOUNDATION" | "INTERMEDIATE" | "ADVANCED" | "EXPERT"
LegacyQuizQuestionAnswerRow
literal type

apps/recallassess/recallassess-api/src/scripts/lms-migration/migrations/assessment.migration.ts

AssessmentPayload
literal type
LegacyQuizRow
literal type

apps/recallassess/recallassess-api/src/scripts/lms-migration/migrations/assessment-question.migration.ts

AssessmentQuestionPayload
literal type
LegacyQuizQuestionRow
literal type

apps/recallassess/recallassess-api/src/api/shared/constants/assessment-scores.constants.ts

BatAnswerLevel

BAT answer level – kept in sync with Prisma enum BatAnswerLevel. Defined here so this file can be used by admin PWA (no

"FOUNDATION" | "INTERMEDIATE" | "ADVANCED" | "EXPERT"

apps/recallassess/recallassess-api/src/scripts/migrate-course-module-page-videos-to-bunny/migrate-course-module-page-videos-to-bunny.ts

CliOptions
literal type

apps/recallassess/recallassess-api/src/scripts/lms-migration/migrations/course.migration.ts

CourseLevel
"FOUNDATION" | "INTERMEDIATE" | "ADVANCED"
CoursePayload
literal type
LegacyCourseRow
literal type

apps/recallassess/recallassess-api/src/scripts/lms-migration/migrations/course-media.migration.ts

CourseMediaPayload
literal type
LegacyMediaRow

Course Media Migration

Migrates media files attached to courses from the legacy MySQL database.

This migration:

  1. Reads media records from legacy MySQL media table (where room_name = 'courseMgt_course')
  2. Joins with course table to get course_code
  3. Maps legacy course codes to new course codes and gets PostgreSQL course ID
  4. Builds legacy S3 path: /sites/default/media/{large|normal}/{media_id}-{media_name}
  5. Builds new S3 path: course/{course_id}/{image|video|document}/{media_id}-{media_name}
  6. Copies S3 files from legacy bucket to new bucket
  7. Creates/updates Media records in PostgreSQL linked to the course

Environment variables required:

  • LEGACY_S3_BUCKET: Source bucket name (e.g., "evolution-course-management")
  • LEGACY_AWS_REGION: AWS region for legacy bucket (e.g., "ap-southeast-1")
  • LEGACY_AWS_ACCESS_KEY_ID: AWS access key for legacy bucket (legacy AWS account)
  • LEGACY_AWS_SECRET_ACCESS_KEY: AWS secret key for legacy bucket (legacy AWS account)
  • AWS_S3_MEDIA_BUCKET: Destination bucket name (e.g., "recallassess-media-uat-113010539978")
  • AWS_REGION: AWS region for new bucket (e.g., "ap-southeast-1")
  • AWS_ACCESS_KEY_ID: AWS access key for new bucket (new AWS account)
  • AWS_SECRET_ACCESS_KEY: AWS secret key for new bucket (new AWS account)
literal type

apps/recallassess/recallassess-api/src/scripts/lms-migration/migrations/course-module-media.migration.ts

CourseModuleMediaPayload
literal type
LegacyMediaRow

Course Module Media Migration

Migrates media files attached to course modules from the legacy MySQL database.

This migration:

  1. Reads media records from legacy MySQL media table (where room_name = 'courseMgt_courseLevel')
  2. Joins with training_topic table to get topic_code (which maps to course_module_code)
  3. Maps topic_code to course_module_code and gets PostgreSQL course_module ID
  4. Builds legacy S3 path: /sites/default/media/{large|normal}/{media_id}-{media_name}
  5. Builds new S3 path: private/course-module/{course_module_id}/image/{media_id}-{media_name}
  6. Copies S3 files from legacy bucket to new bucket
  7. Creates/updates Media records in PostgreSQL linked to the course_module

Environment variables required:

  • LEGACY_S3_BUCKET: Source bucket name (e.g., "evolution-course-management")
  • LEGACY_AWS_REGION: AWS region for legacy bucket (e.g., "ap-southeast-1")
  • LEGACY_AWS_ACCESS_KEY_ID: AWS access key for legacy bucket (legacy AWS account)
  • LEGACY_AWS_SECRET_ACCESS_KEY: AWS secret key for legacy bucket (legacy AWS account)
  • AWS_S3_MEDIA_BUCKET: Destination bucket name (e.g., "recallassess-media-uat-113010539978")
  • AWS_REGION: AWS region for new bucket (e.g., "ap-southeast-1")
  • AWS_ACCESS_KEY_ID: AWS access key for new bucket (new AWS account)
  • AWS_SECRET_ACCESS_KEY: AWS secret key for new bucket (new AWS account)
literal type

apps/recallassess/recallassess-api/src/scripts/lms-migration/migrations/course-module-page-media.migration.ts

CourseModulePageMediaPayload
literal type
LegacyMediaRow

Course Module Page Media Migration

Migrates media files attached to course module pages from the legacy MySQL database.

This migration:

  1. Reads media records from legacy MySQL media table (where room_name = 'courseMgt_courseContentLink')
  2. Joins with course_content_link and course_content to get course_content_id
  3. Joins with course_section to get section title
  4. Maps legacy course codes and section titles to new course_module_page_id
  5. Maps room_name + record_type to MediaName enum (PHOTO, VIDEO, DOCUMENT)
  6. Maps media_type to MediaType enum (IMAGE, VIDEO, DOCUMENT)
  7. Builds legacy S3 path: /sites/default/media/{large|normal}/{media_id}-{media_name}
  8. Builds new S3 path: course_module_page/{course_module_page_id}/{photo|video|document}/{media_id}-{media_name}
  9. Copies S3 files from legacy bucket to new bucket
  10. Creates/updates Media records in PostgreSQL linked to the course_module_page

Environment variables required:

  • LEGACY_S3_BUCKET: Source bucket name (e.g., "evolution-course-management")
  • LEGACY_AWS_REGION: AWS region for legacy bucket (e.g., "ap-southeast-1")
  • LEGACY_AWS_ACCESS_KEY_ID: AWS access key for legacy bucket (legacy AWS account)
  • LEGACY_AWS_SECRET_ACCESS_KEY: AWS secret key for legacy bucket (legacy AWS account)
  • AWS_S3_MEDIA_BUCKET: Destination bucket name (e.g., "recallassess-media-uat-113010539978")
  • AWS_REGION: AWS region for new bucket (e.g., "ap-southeast-1")
  • AWS_ACCESS_KEY_ID: AWS access key for new bucket (new AWS account)
  • AWS_SECRET_ACCESS_KEY: AWS secret key for new bucket (new AWS account)
literal type

apps/recallassess/recallassess-api/src/scripts/lms-migration/migrations/course-module-page.migration.ts

CourseModulePagePayload
literal type
LegacyCourseContentRow
literal type

apps/recallassess/recallassess-api/src/scripts/lms-migration/migrations/course-module.migration.ts

CourseModulePayload
literal type
LegacyCourseModuleRow
literal type

apps/recallassess/recallassess-api/src/api/client/course/course.service.ts

CourseWithModules
unknown

apps/recallassess/recallassess-api/src/scripts/lms-migration/migrations/csm-online-knowledge-review.migration.ts

CsmOnlineKrPayload
literal type
CsmOnlineKrRow
literal type
JsonKnowledgeReview
literal type
JsonQuestion
literal type

apps/recallassess/recallassess-api/src/scripts/lms-migration/migrations/dnp-online-knowledge-review.migration.ts

DnpOnlineKrPayload
literal type
DnpOnlineKrRow
literal type
JsonKnowledgeReview
literal type
JsonQuestion
literal type

apps/recallassess/recallassess-api/src/api/shared/email/subscription-expired-banner-html.util.ts

EmailBannerSubscriptionLookup
literal type

apps/recallassess/recallassess-api/src/templates/email/email-skeleton.template.ts

EmailFooterCategory

Recall Email Template Skeleton

Single source of truth for the wrapper around all Recall emails. Header, footer, base styles, and bulletproof button patterns live HERE and HERE ONLY. Individual templates supply only the body content.

Phase 1 (April 2026): standardized brand purple, real logo, three footer variants by category, dropped legally-incomplete fields until provided.

"transactional" | "course" | "marketing"

apps/recallassess/recallassess-api/src/api/shared/email/types/email-limits.type.ts

EmailLimits
EmailBestPractices

apps/recallassess/recallassess-api/src/api/shared/email/merge-transactional-email-log-placeholders.ts

EmailLogPlaceholderMergeInput

Minimal shape of an email_log row + relations needed to replace {{user.}}, {{course.}}, {{mail.}}, and common {{system.}} keys.

literal type
MergeTransactionalEmailLogDeps
literal type

apps/recallassess/recallassess-api/src/api/shared/email/services/email-preferences.service.ts

EmailPreferencesPatch
unknown

apps/recallassess/recallassess-api/src/scripts/lms-migration/migrations/email-template.migration.ts

EmailTemplatePayload
literal type

apps/recallassess/recallassess-api/src/api/shared/services/system-log-http500-notification.service.ts

Http500LogRow
literal type

apps/recallassess/recallassess-api/src/api/shared/invoice/invoice-pdf.service.ts

InvoicePdfMeta
literal type

apps/recallassess/recallassess-api/src/api/shared/invoice/invoice-pdf-meta.ts

InvoicePdfPeriodSource

Minimal invoice shape for pickInvoicePeriodForPdf — same rules as the fluid invoice report payload and SSR PDF download.

literal type

apps/recallassess/recallassess-api/src/scripts/lms-migration/migrations/pip-online-knowledge-review.migration.ts

JsonKnowledgeReview
literal type
JsonQuestion
literal type
PipOnlineKrPayload
literal type
PipOnlineKrRow
literal type

apps/recallassess/recallassess-api/src/scripts/lms-migration/migrations/knowledge-review-answer.migration.ts

KnowledgeReviewAnswerPayload
literal type
LegacyQuizQuestionAnswerRow
literal type

apps/recallassess/recallassess-api/src/scripts/lms-migration/migrations/knowledge-review.migration.ts

KnowledgeReviewPayload
literal type
LegacyQuizRow
literal type

apps/recallassess/recallassess-api/src/scripts/lms-migration/migrations/knowledge-review-question.migration.ts

KnowledgeReviewQuestionPayload
literal type
LegacyQuizQuestionRow
literal type

apps/recallassess/recallassess-api/src/api/client/knowledge-review/knowledge-review.service.ts

KnowledgeReviewSubmissionType
"COURSE_LEVEL" | "EMBEDDED_QUIZ" | "EMBEDDED_ASSIGNMENT"

apps/recallassess/recallassess-api/src/api/client/my-course/my-course.service.ts

LearningGroupParticipantWithCourse
unknown

apps/recallassess/recallassess-api/src/api/shared/email/services/email-multi-region.service.ts

MultiRegionSendResult
literal type | literal type

apps/recallassess/recallassess-api/src/scripts/lms-migration/migrations/package.migration.ts

PackageData
literal type
PackagePayload
PackageData
PackageType
"FREE_TRIAL" | "STARTUP" | "GROWTH" | "ENTERPRISE"

apps/recallassess/recallassess-api/src/api/shared/stripe/services/stripe-payment/stripe-payment-billing-helpers.service.ts

StripeInvoiceApi

API responses include fields not always present on generated Stripe typings.

unknown
StripeSubscriptionApi
unknown

apps/recallassess/recallassess-api/src/api/shared/stripe/services/stripe-payment/stripe-payment-checkout.service.ts

StripeSubscriptionApi
unknown

apps/recallassess/recallassess-api/src/api/shared/stripe/services/stripe-payment/stripe-payment.types.ts

StripeSubscriptionApi

API responses include fields not always present on generated Stripe typings.

unknown

apps/recallassess/recallassess-api/src/api/client/testimonial/testimonial.service.ts

TestimonialWithCourse
unknown

apps/recallassess/recallassess-api/src/scripts/lms-migration/migrations/valuelist.migration.ts

ValuelistPayload
literal type

results matching ""

    No results matching ""