upsertCourse method

Future<int> upsertCourse({
  1. required String code,
  2. required double credits,
  3. required int hours,
  4. required String nameZh,
  5. String? nameEn,
})

Returns the ID of an existing course row, or creates/updates one.

Implementation

Future<int> upsertCourse({
  required String code,
  required double credits,
  required int hours,
  required String nameZh,
  String? nameEn,
}) async {
  return (await into(courses).insertReturning(
    CoursesCompanion.insert(
      code: code,
      credits: credits,
      hours: hours,
      nameZh: nameZh,
      nameEn: Value(nameEn),
    ),
    onConflict: DoUpdate(
      (old) => CoursesCompanion(
        credits: Value(credits),
        hours: Value(hours),
        nameZh: Value(nameZh),
        nameEn: Value.absentIfNull(nameEn),
      ),
      target: [courses.code],
    ),
  )).id;
}