watchMaterials method

Stream<CourseMaterialList> watchMaterials(
  1. int courseOfferingId
)

Watches material references in manifest order, including cached empty lists.

Implementation

Stream<CourseMaterialList> watchMaterials(int courseOfferingId) {
  final query =
      _database.select(_database.courseOfferings).join([
          leftOuterJoin(
            _database.materials,
            _database.materials.courseOffering.equalsExp(
              _database.courseOfferings.id,
            ),
          ),
        ])
        ..where(_database.courseOfferings.id.equals(courseOfferingId))
        ..orderBy([OrderingTerm.asc(_database.materials.id)]);
  return query.watch().map(
    (rows) => (
      materials: rows
          .map((row) => row.readTableOrNull(_database.materials))
          .nonNulls
          .toList(growable: false),
      fetchedAt: rows.isEmpty
          ? null
          : rows.first
                .readTable(_database.courseOfferings)
                .materialsFetchedAt,
    ),
  );
}