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

    Module CourseRepository

    Course data access repository providing comprehensive CRUD operations and advanced querying capabilities for the WayrApp language learning platform. This repository serves as the primary data access layer for course management, handling all database interactions through Prisma ORM with optimized query patterns, pagination support, and robust error handling.

    The repository implements standardized patterns for data transformation between Prisma models and application DTOs, ensuring consistent data structures across the application. It provides advanced filtering capabilities including text search across course names and descriptions, boolean filtering for public/private courses, and comprehensive sorting options. All queries are optimized for performance with proper indexing strategies and include relationship counting for efficient data retrieval.

    Key architectural features include automatic data mapping between database schema and application models, standardized pagination with configurable limits, comprehensive error handling for database operations, and integration with the shared repository helper utilities for consistent query building patterns. The repository supports both individual course operations and bulk querying with advanced filtering capabilities essential for course discovery and management workflows.

    Exequiel Trujillo

    1.0.0

    // Initialize repository with Prisma client
    const courseRepository = new CourseRepository(prisma);

    // Create a new course
    const newCourse = await courseRepository.create({
    id: 'spanish-101',
    source_language: 'en',
    target_language: 'es',
    name: 'Spanish for Beginners',
    description: 'Learn basic Spanish vocabulary and grammar',
    is_public: true
    });

    // Query courses with filtering and pagination
    const courses = await courseRepository.findAll({
    search: 'spanish',
    filters: { is_public: true },
    page: 1,
    limit: 10,
    sortBy: 'name',
    sortOrder: 'asc'
    });

    Classes

    CourseRepository