/// <summary> /// Save a Device Rule to the server. This may be either a new rule or an update to an existing rule. /// </summary> /// <param name="updateContainer"></param> /// <returns></returns> public async Task<TableStorageResponse<DeviceRule>> SaveDeviceRuleAsync(DeviceRule updatedRule) { DeviceRuleTableEntity incomingEntity = new DeviceRuleTableEntity(updatedRule.DeviceID, updatedRule.RuleId) { DataField = updatedRule.DataField, Threshold = (double)updatedRule.Threshold, Enabled = updatedRule.EnabledState, RuleOutput = updatedRule.RuleOutput }; if(!string.IsNullOrWhiteSpace(updatedRule.Etag)) { incomingEntity.ETag = updatedRule.Etag; } TableStorageResponse<DeviceRule> result = await AzureTableStorageHelper.DoTableInsertOrReplace<DeviceRule, DeviceRuleTableEntity>(incomingEntity, BuildRuleFromTableEntity, _storageAccountConnectionString, _deviceRulesNormalizedTableName); // Build up a new blob to push up List<DeviceRuleBlobEntity> blobList = await BuildBlobEntityListFromTableRows(); await PersistRulesToBlobStorageAsync(blobList); return result; }
private DeviceRule BuildRuleFromTableEntity(DeviceRuleTableEntity tableEntity) { if(tableEntity == null) { return null; } var updatedRule = new DeviceRule(tableEntity.RuleId) { DeviceID = tableEntity.DeviceId, DataField = tableEntity.DataField, Threshold = tableEntity.Threshold, EnabledState = tableEntity.Enabled, Operator = ">", RuleOutput = tableEntity.RuleOutput, Etag = tableEntity.ETag }; return updatedRule; }
private DeviceRuleTableEntity BuildTableEntityFromRule(DeviceRule incomingRule) { DeviceRuleTableEntity tableEntity = new DeviceRuleTableEntity(incomingRule.DeviceID, incomingRule.RuleId) { DataField = incomingRule.DataField, Threshold = (double)incomingRule.Threshold, Enabled = incomingRule.EnabledState, RuleOutput = incomingRule.RuleOutput }; if (!string.IsNullOrWhiteSpace(incomingRule.Etag)) { tableEntity.ETag = incomingRule.Etag; } return tableEntity; }