as method

  1. @override
Query<HasResultSet, dynamic> as()
override

This method is overridden by Dart-defined views to declare the right query to run.

Implementation

@override
Query as() =>
    select([
      courseOfferings.id,
      courseOfferings.number,
      courses.nameZh,
      courses.nameEn,
      courses.credits,
      courses.hours,
      schedules.dayOfWeek,
      schedules.period,
      // TODO: Add classrooms.nameEn — English page uses abbreviated format
      // (e.g., "TB2_201") with a separate building legend table. Need to
      // parse the legend and store both short and full English names.
      classrooms.nameZh,
    ]).from(schedules).join([
      innerJoin(
        courseOfferings,
        courseOfferings.id.equalsExp(schedules.courseOffering),
      ),
      innerJoin(courses, courses.id.equalsExp(courseOfferings.course)),
      leftOuterJoin(
        classrooms,
        classrooms.id.equalsExp(schedules.classroom),
      ),
    ]);