upsertTeacher method

Future<int> upsertTeacher({
  1. required String code,
  2. required int semesterId,
  3. required String nameZh,
  4. String? nameEn,
})

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

Implementation

Future<int> upsertTeacher({
  required String code,
  required int semesterId,
  required String nameZh,
  String? nameEn,
}) async {
  return (await into(teachers).insertReturning(
    TeachersCompanion.insert(
      code: code,
      semester: semesterId,
      nameZh: nameZh,
      nameEn: Value(nameEn),
    ),
    onConflict: DoUpdate(
      (old) => TeachersCompanion(
        nameZh: Value(nameZh),
        nameEn: Value.absentIfNull(nameEn),
      ),
      target: [teachers.code, teachers.semester],
    ),
  )).id;
}