setCurrentUserStoreDto method

Future<void> setCurrentUserStoreDto(
  1. SchemaMetaData smd,
  2. DbTransaction transaction,
  3. UserStoreDto userStoreDto
)

Implementation

Future<void> setCurrentUserStoreDto(SchemaMetaData smd,
    DbTransaction transaction, UserStoreDto userStoreDto) async {
  _currentUserStoreDto = null;
  int? cuId;
  UserStoreDao userStoreDao = UserStoreDao(smd, transaction);
  await userStoreDao.init(initTable: true);
  try {
    UserStoreDto existingUserStoreDto =
        await userStoreDao.getUserStoreDtoByUnique(userStoreDto.email!);
    cuId = existingUserStoreDto.id;
  } on SqlException catch (e) {
    if (e.sqlExceptionEnum != SqlExceptionEnum.ENTRY_NOT_FOUND) rethrow;
  }

  if (cuId == null || cuId == userStoreDto.id) {
    await userStoreDao.setUserStoreDto(userStoreDto);
  } else {
    // User Id has been updated so remove old entry and rewrite
    await userStoreDao.deleteUserStoreById(cuId);
    await userStoreDao.setUserStoreDto(userStoreDto);
  }
}