getOrCreateSemester method

Future<Semester> getOrCreateSemester(
  1. int year,
  2. int term, {
  3. bool? inCourseSemesterList,
  4. bool? inScoreSemesterList,
})

Returns an existing semester row, or creates one if missing.

When inCourseSemesterList is true, marks the semester as having appeared in the course semester list API response. When inScoreSemesterList is true, marks the semester as having appeared in the score semester list API response.

Implementation

Future<Semester> getOrCreateSemester(
  int year,
  int term, {
  bool? inCourseSemesterList,
  bool? inScoreSemesterList,
}) async {
  final companion = SemestersCompanion.insert(
    year: year,
    term: term,
    inCourseSemesterList: .absentIfNull(inCourseSemesterList),
    inScoreSemesterList: .absentIfNull(inScoreSemesterList),
  );

  return into(semesters).insertReturning(
    companion,
    onConflict: DoUpdate(
      (old) => companion,
      target: [semesters.year, semesters.term],
    ),
  );
}