upsert method

Implementation

Future<AppConfigData?> upsert(AppConfigCreateInput data) async {
  AppConfigData? appConfigRecord = await (select(appConfig)
        ..where((item) => item.id.equals(1))
        ..limit(1))
      .watchSingleOrNull()
      .first;
  if (appConfigRecord == null) {
    appConfigRecord =
        await into(appConfig).insertReturningOrNull(AppConfigCompanion(
      apiEndpoint: Value(data.apiEndpoint),
      apiKey: Value(data.apiKey),
      apiSecret: Value(data.apiSecret),
      appBundle: Value(data.appBundle),
      lenderId: Value(data.partnerId),
    ));
  } else {
    appConfigRecord = (await (update(appConfig)
              ..where((item) => item.id.equals(appConfigRecord!.id)))
            .writeReturning(AppConfigCompanion(
                apiEndpoint: Value(data.apiEndpoint),
                apiKey: Value(data.apiKey),
                apiSecret: Value(data.apiSecret),
                appBundle: Value(data.appBundle),
                lenderId: Value(data.partnerId),
                shouldSyncData: Value(appConfigRecord.shouldSyncData),
                lastSync: Value(appConfigRecord.lastSync),
                updatedAt: Value(DateTime.now()))))
        .firstOrNull;
  }

  return appConfigRecord;
}