watchMaterials method
- 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,
),
);
}