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

    Module ExerciseRepository

    Exercise data access repository providing comprehensive CRUD operations and type-specific querying capabilities for the WayrApp language learning platform. This repository serves as the primary data access layer for exercise management, handling all database interactions through Prisma ORM with advanced filtering patterns, type-based querying, and robust data transformation operations.

    The repository supports multiple exercise types including translation, fill-in-the-blank, true/false (vof), pairs matching, informative content, and ordering exercises. Each exercise type maintains flexible JSON data structures while providing consistent access patterns through standardized repository methods. The system handles automatic type transformation between API format (dash-separated) and database format (underscore-separated) for seamless integration.

    Key architectural features include automatic data mapping between database schema and application models, type-specific filtering capabilities, bulk retrieval operations for lesson assembly, and comprehensive pagination support. The repository integrates with shared repository helper utilities for consistent query building patterns and provides optimized querying for exercise discovery and content management.

    Exercise data management includes flexible JSON storage for type-specific configurations, efficient type-based filtering for content organization, bulk operations for lesson construction, and consistent field name transformation for API compatibility. The repository maintains referential integrity while providing flexible querying options essential for content delivery and management systems.

    Exequiel Trujillo

    1.0.0

    // Initialize repository with Prisma client
    const exerciseRepository = new ExerciseRepository(prisma);

    // Create a new translation exercise
    const newExercise = await exerciseRepository.create({
    id: 'exercise-translate-hello',
    exercise_type: 'translation',
    data: {
    source_text: 'Hello',
    target_text: 'Hola',
    hints: ['greeting', 'common phrase']
    }
    });

    // Query exercises by type with pagination
    const fillBlankExercises = await exerciseRepository.findByType('fill-in-the-blank', {
    page: 1,
    limit: 10,
    sortBy: 'created_at',
    sortOrder: 'desc'
    });

    // Bulk retrieve exercises for lesson assembly
    const lessonExercises = await exerciseRepository.findByIds([
    'exercise-translate-hello',
    'exercise-fill-greeting',
    'exercise-vof-statement'
    ]);

    Classes

    ExerciseRepository