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

    Module ExerciseController

    HTTP controller for comprehensive exercise management within the WayrApp language learning platform.

    This controller serves as the primary REST API interface for exercise operations, providing complete CRUD functionality for all supported exercise types within the content management system. It handles HTTP request processing, parameter validation, authentication integration, and response formatting for all exercise-related endpoints in the WayrApp backend architecture.

    The controller manages six distinct exercise types that form the core interactive elements of the language learning experience: translation exercises for source-to-target language conversion, fill-in-the-blank exercises for text completion with multiple blanks, VOF (Verification of Facts) exercises for true/false statements, pairs exercises for matching left-right associations, informative exercises for content display and learning material presentation, and ordering exercises for sequence arrangement and logical ordering tasks.

    Key architectural responsibilities include HTTP request processing for exercise CRUD operations, parameter extraction and validation from URL paths and request bodies, authentication and authorization enforcement through middleware integration, standardized API response formatting, comprehensive error handling with proper HTTP status codes, exercise type conversion for internal consistency (dash-to-underscore normalization), pagination support for exercise retrieval operations, and type-specific filtering capabilities for targeted exercise queries.

    The controller follows RESTful conventions and provides endpoints for creating exercises with type-specific validation, retrieving individual exercises and paginated exercise lists, filtering exercises by specific types with pagination support, updating exercise properties with comprehensive validation, and deleting exercises with dependency management. All operations integrate seamlessly with the service layer for business logic processing and maintain consistent response formatting across all endpoints.

    Exequiel Trujillo

    1.0.0

    // Initialize controller with Prisma client and integrate with Express routes
    import { Router } from 'express';
    import { PrismaClient } from '@prisma/client';
    import { ExerciseController } from './ExerciseController';

    const router = Router();
    const prisma = new PrismaClient();
    const exerciseController = new ExerciseController(prisma);

    // Exercise CRUD endpoints
    router.post('/exercises', exerciseController.createExercise);
    router.get('/exercises/:id', exerciseController.getExercise);
    router.get('/exercises', exerciseController.getExercises);
    router.put('/exercises/:id', exerciseController.updateExercise);
    router.delete('/exercises/:id', exerciseController.deleteExercise);

    // Type-specific filtering endpoint
    router.get('/exercises/type/:type', exerciseController.getExercisesByType);

    Classes

    ExerciseController