public static void Ctor_GivenInvalidColumnOrderWithoutColumn_ThrowsArgumentException()
        {
            const string           expression = "\"test\"";
            const IndexColumnOrder order      = (IndexColumnOrder)55;

            Assert.That(() => new PostgreSqlDatabaseIndexColumn(expression, order), Throws.ArgumentException);
        }
Example #2
0
        public static void Ctor_GivenInvalidIndexColumnOrder_ThrowsArgumentException()
        {
            const string           expression = "lower(test_column)";
            var                    column     = Mock.Of <IDatabaseColumn>();
            const IndexColumnOrder order      = (IndexColumnOrder)55;

            Assert.That(() => new DatabaseIndexColumn(expression, column, order), Throws.ArgumentException);
        }
        public static void ToString_WhenInvoked_ReturnsExpectedValues(string expression, string expectedResult)
        {
            var column = Mock.Of <IDatabaseColumn>();
            const IndexColumnOrder order = IndexColumnOrder.Ascending;

            var indexColumn = new PostgreSqlDatabaseIndexColumn(expression, column, order);
            var result      = indexColumn.ToString();

            Assert.That(result, Is.EqualTo(expectedResult));
        }
Example #4
0
        public static void Order_WhenDescendingProvidedInCtor_ReturnsDescending()
        {
            const string           expression = "lower(test_column)";
            var                    column     = Mock.Of <IDatabaseColumn>();
            const IndexColumnOrder order      = IndexColumnOrder.Descending;

            var indexColumn = new DatabaseIndexColumn(expression, column, order);

            Assert.That(indexColumn.Order, Is.EqualTo(order));
        }
Example #5
0
        public IndexColumn(IModelledSqlExpression expression, IndexColumnOrder order = IndexColumnOrder.Ascending)
        {
            if (!order.IsValid())
            {
                throw new ArgumentException($"The { nameof(IndexColumnOrder) } provided must be a valid enum.", nameof(order));
            }

            Expression = expression ?? throw new ArgumentNullException(nameof(expression));
            Order      = order;
        }
Example #6
0
            public PrimaryKey(IndexColumnOrder columnOrder = IndexColumnOrder.Ascending, bool autoIncrement = false)
                : base(ColumnConstraintType.PrimaryKey)
            {
                if (!columnOrder.IsValid())
                {
                    throw new ArgumentException($"The { nameof(IndexColumnOrder) } provided must be a valid enum.", nameof(columnOrder));
                }

                ColumnOrder   = columnOrder;
                AutoIncrement = autoIncrement;
            }
Example #7
0
        public IndexColumn(ExpressionColumn column, IndexColumnOrder order = IndexColumnOrder.Ascending)
        {
            if (column == null)
            {
                throw new ArgumentNullException(nameof(column));
            }
            if (!order.IsValid())
            {
                throw new ArgumentException($"The { nameof(IndexColumnOrder) } provided must be a valid enum.", nameof(order));
            }

            Expression = column.Expression;
            Order      = order;
        }
Example #8
0
        /// <summary>
        /// Initializes a new instance of the <see cref="PostgreSqlDatabaseIndexColumn"/> class.
        /// </summary>
        /// <param name="expression">An expression that represents the index column.</param>
        /// <param name="order">The sorting order applied to the index column.</param>
        /// <exception cref="ArgumentNullException"><paramref name="expression"/> is <c>null</c>, empty or whitespace.</exception>
        /// <exception cref="ArgumentException"><paramref name="order"/> is an invalid enum value.</exception>
        public PostgreSqlDatabaseIndexColumn(string expression, IndexColumnOrder order)
        {
            if (expression.IsNullOrWhiteSpace())
            {
                throw new ArgumentNullException(nameof(expression));
            }
            if (!order.IsValid())
            {
                throw new ArgumentException($"The { nameof(IndexColumnOrder) } provided must be a valid enum.", nameof(order));
            }

            Expression       = expression;
            Order            = order;
            DependentColumns = Array.Empty <IDatabaseColumn>();
        }
Example #9
0
        internal IndexedColumn WithColumnOrder(IndexColumnOrder columnOrder)
        {
            if (!columnOrder.IsValid())
            {
                throw new ArgumentException($"The { nameof(IndexColumnOrder) } provided must be a valid enum.", nameof(columnOrder));
            }

            var newColumn = Name != null
                ? new IndexedColumn(Name)
                : new IndexedColumn(Expression);

            newColumn.Collation   = Collation;
            newColumn.ColumnOrder = ColumnOrder;

            return(newColumn);
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="DatabaseIndexColumn"/> class.
        /// </summary>
        /// <param name="expression">A textual expression defining the index column.</param>
        /// <param name="dependentColumns">Columns that the index column is dependent upon.</param>
        /// <param name="order">The index column ordering.</param>
        /// <exception cref="ArgumentNullException"><paramref name="dependentColumns"/> is <c>null</c> or contains <c>null</c> values. Alternatively if <paramref name="expression"/> is <c>null</c>, empty or whitespace.</exception>
        /// <exception cref="ArgumentException"><paramref name="order"/> is an invalid enum.</exception>
        public DatabaseIndexColumn(string expression, IEnumerable <IDatabaseColumn> dependentColumns, IndexColumnOrder order)
        {
            if (expression.IsNullOrWhiteSpace())
            {
                throw new ArgumentNullException(nameof(expression));
            }
            if (dependentColumns == null || dependentColumns.AnyNull())
            {
                throw new ArgumentNullException(nameof(dependentColumns));
            }
            if (!order.IsValid())
            {
                throw new ArgumentException($"The { nameof(IndexColumnOrder) } provided must be a valid enum.", nameof(order));
            }

            Expression       = expression;
            DependentColumns = dependentColumns.ToList();
            Order            = order;
        }
Example #11
0
 private static string SortToString(IndexColumnOrder order)
 {
     return(order == IndexColumnOrder.Ascending
         ? "ASC"
         : "DESC");
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="DatabaseIndexColumn"/> class.
 /// </summary>
 /// <param name="expression">A textual expression defining the index column.</param>
 /// <param name="column">A column that the index column is dependent upon.</param>
 /// <param name="order">The index column ordering.</param>
 /// <exception cref="ArgumentNullException"><paramref name="column"/> is <c>null</c>. Alternatively if <paramref name="expression"/> is <c>null</c>, empty or whitespace.</exception>
 /// <exception cref="ArgumentException"><paramref name="order"/> is an invalid enum.</exception>
 public DatabaseIndexColumn(string expression, IDatabaseColumn column, IndexColumnOrder order)
     : this(expression, new[] { column }, order)
 {
 }