public void SetConstraint(string tableName, bool isHashKey) { if (_tableColumns.ContainsKey(tableName)) { var column = _tableColumns[tableName]; if (column.IsHashKey || column.IsSortKey) { throw new InvalidOperationException($"Key '{tableName}' constraint definition is duplicated."); } column.IsHashKey = isHashKey; column.IsSortKey = !isHashKey; } else { _tableColumns[tableName] = new KeyTableColumn { ColumnName = tableName, IsHashKey = isHashKey, IsSortKey = !isHashKey }; _tempItemCount++; } if (isHashKey) { _hashKeyName = tableName; } else { _sortKeyName = tableName; } }
public void AddTableColumn(KeyTableColumn keyTableColumn) { var name = keyTableColumn.ColumnName; if (_tableColumns.TryGetValue(name, out var definedColumn)) { if (string.IsNullOrEmpty(definedColumn.DataType)) { if (keyTableColumn.IsHashKey || keyTableColumn.IsSortKey) { throw new InvalidOperationException($"Key '{name}' constraint definition is duplicated."); } keyTableColumn.IsHashKey = definedColumn.IsHashKey; keyTableColumn.IsSortKey = definedColumn.IsSortKey; _tableColumns[name] = keyTableColumn; _tempItemCount--; return; } throw new InvalidOperationException($"Already '{name}' is defined."); } if (keyTableColumn.IsHashKey) { if (HashKeyColumn != null) { throw new InvalidOperationException($"Hash key duplicated. (name: '{_hashKeyName}', '{name}')"); } _hashKeyName = name; } else if (keyTableColumn.IsSortKey) { if (SortKeyColumn != null) { throw new InvalidOperationException($"Sort key duplicated. (sort key: '{_sortKeyName}', '{name}')"); } _sortKeyName = name; } _tableColumns[name] = keyTableColumn; }