WayrApp Backend & Ecosystem Documentation - v1.0.0
    Preparing search index...

    Module LessonRepository

    Lesson data access repository providing comprehensive CRUD operations and exercise management capabilities for the WayrApp language learning platform. This repository serves as the primary data access layer for lesson management, handling all database interactions through Prisma ORM with advanced querying patterns, exercise assignment operations, and robust relationship management.

    The repository implements sophisticated lesson-exercise relationship management through a many-to-many association table, enabling flexible exercise assignment, reordering, and removal operations. It provides comprehensive filtering capabilities including experience points range filtering, module-based querying, and standardized pagination support. All queries are optimized for performance with proper relationship loading and consistent data transformation patterns.

    Key architectural features include automatic data mapping between database schema and application models, transactional exercise reordering operations, comprehensive exercise assignment management, and integration with shared repository helper utilities for consistent query building. The repository supports both individual lesson operations and bulk querying with advanced filtering capabilities essential for lesson discovery and content management workflows.

    Exercise management capabilities include assignment and unassignment operations, order management for exercise sequences within lessons, and atomic reordering operations using database transactions to ensure data consistency. The repository maintains referential integrity across the lesson-exercise relationship while providing flexible querying options for content delivery and management systems.

    Exequiel Trujillo

    1.0.0

    // Initialize repository with Prisma client
    const lessonRepository = new LessonRepository(prisma);

    // Create a new lesson
    const newLesson = await lessonRepository.create({
    id: 'lesson-basic-greetings',
    module_id: 'module-conversation-basics',
    experience_points: 15,
    order: 1
    });

    // Query lessons by module with filtering
    const lessons = await lessonRepository.findByModuleId('module-conversation-basics', {
    filters: { experience_points_min: 10, experience_points_max: 50 },
    page: 1,
    limit: 10,
    sortBy: 'order',
    sortOrder: 'asc'
    });

    // Assign exercise to lesson
    const assignment = await lessonRepository.assignExercise('lesson-basic-greetings', 'exercise-translate-hello', 1);

    // Reorder exercises within a lesson
    await lessonRepository.reorderExercises('lesson-basic-greetings', ['exercise-1', 'exercise-3', 'exercise-2']);

    Classes

    LessonRepository