updateConfigurationTrDto method

Future<ConfigurationTrDto> updateConfigurationTrDto(
  1. ConfigurationTrDto configurationTrDto
)

Implementation

Future<ConfigurationTrDto> updateConfigurationTrDto(
    ConfigurationTrDto configurationTrDto) async {
  validateTrDto(configurationTrDto, OperationType.UPDATE);

  bool identifyingFieldsPassed = false;
  bool setIdentifyingFields = false;
  if (configurationTrDto.subset != null &&
      configurationTrDto.warden != null &&
      configurationTrDto.configuration_name != null &&
      configurationTrDto.ordinal != null) identifyingFieldsPassed = true;

  if (smdSys.isSystem) {
    setIdentifyingFields = true;
  } else if (configurationTrDto.id != null) {
    setIdentifyingFields = true;
  } else if (!identifyingFieldsPassed) {
    throw SqlException(SqlExceptionEnum.FAILED_UPDATE,
        cause:
            "must pass either id or SubSet, WardenType, ConfigurationName and Ordinal");
  }
  FieldData fieldData = FieldData.wee(ConfigurationMixin.C_TABLE_ID);
  fieldData.set("id", configurationTrDto.id);
  if (setIdentifyingFields) {
    if (configurationTrDto.subset != null)
      fieldData.set("subset", configurationTrDto.subset);

    if (configurationTrDto.warden != null)
      fieldData.set(
          "warden", Warden.getWardenValue(configurationTrDto.warden));

    if (configurationTrDto.configuration_name != null)
      fieldData.set(
          "configuration_name",
          defaults
              .getConfigurationNameStruct(
                  configurationTrDto.configuration_name!)
              .name);

    if (configurationTrDto.ordinal != null)
      fieldData.set("ordinal", configurationTrDto.ordinal);
  }
  fieldData.set("value_number", configurationTrDto.value_number);
  fieldData.set("value_string", configurationTrDto.value_string);

  fieldData = getTrSet(fieldData, configurationTrDto.getTrDto);
  WhereData whereData = WhereData();
  if (smdSys.isSystem) {
    if (configurationTrDto.ts == null)
      throw SqlException(SqlExceptionEnum.FAILED_UPDATE,
          cause: "ts must not be null");
    whereData.set("ts", SqlOperator.EQUAL, configurationTrDto.ts);
  } else {
    whereData.set("id", SqlOperator.EQUAL, configurationTrDto.id);
    if (configurationTrDto.id == null) {
      whereData.set("subset", SqlOperator.EQUAL, configurationTrDto.subset);
      whereData.set("warden", SqlOperator.EQUAL,
          Warden.getWardenValue(configurationTrDto.warden));
      whereData.set(
          "configuration_name",
          SqlOperator.EQUAL,
          defaults
              .getConfigurationNameStruct(
                  configurationTrDto.configuration_name!)
              .name);
      whereData.set("ordinal", SqlOperator.EQUAL, configurationTrDto.ordinal);
    }
  }
  try {
    await super.updateTR(configurationTrDto, fieldData, whereData);
  } on SqlException catch (e) {
    if (e.sqlExceptionEnum != SqlExceptionEnum.PARTITION_NOT_FOUND) rethrow;
  }
  return configurationTrDto;
}