toggleServer static method

Future<void> toggleServer(
  1. SchemaMetaData smd,
  2. ConfigurationNameDefaults defaults
)

Implementation

static Future<void> toggleServer(
    SchemaMetaData smd, ConfigurationNameDefaults defaults) async {
  final WardenType C_WARDEN_TYPE = WardenType.USER;
  DbTransaction mysqlTransaction =
      await DataBaseHelper.getDbTransaction(C_DATABASE_NAME);
  try {
    ConfigurationDao configurationDao =
        ConfigurationDao(smd, mysqlTransaction, defaults);
    await configurationDao.init(initTable: true);
    bool testServer = true;
    try {
      await configurationDao.getString(ConfigurationUtils.C_TEST_SUBSET,
          C_WARDEN_TYPE, ConfigurationNameEnum.WEB_URL);
      testServer = true;
    } on SqlException catch (e) {
      if (e.sqlExceptionEnum == SqlExceptionEnum.ENTRY_NOT_FOUND ||
          e.sqlExceptionEnum == SqlExceptionEnum.FAILED_SELECT)
        testServer = false;
    }
    ConfigurationUtils cu =
        ConfigurationUtils(C_WARDEN_TYPE, smd, mysqlTransaction, defaults);
    await cu.init();
    if (testServer) {
      await cu.fetchConfigurationString(ConfigurationNameEnum.WEB_URL);
    } else {
      await cu.storeConfigurationString(
          ConfigurationNameEnum.WEB_URL, ConfigurationUtils.C_TEST_WEB);
    }
  } finally {
    await mysqlTransaction.connection.close();
    await mysqlTransaction.endTransaction();
    await mysqlTransaction.closePool();
  }
}