Exemple #1
0
        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;
            }
        }
Exemple #2
0
        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;
        }