public ICreateTableColumnOptionSyntax PrimaryKey()
        {
            CurrentColumn.IsPrimaryKey = true;

            //For MySQL, the PK will be created WITH the create table expression, however for
            // SQL Server, the PK get's created in a different Alter table expression afterwords.
            // MySQL will choke if the same constraint is again added afterword
            // TODO: This is a super hack, I'd rather not add another property like 'CreatesPkInCreateTableDefinition' to check
            // for this, but I don't see another way around. MySQL doesn't support checking for a constraint before creating
            // it... except in a very strange way but it doesn't actually provider error feedback if it doesn't work so we cannot use
            // it.  For now, this is what I'm doing
            if (Expression.CurrentDatabaseProvider != DatabaseProviders.MySql)
            {
                var expression = new CreateConstraintExpression(_context.CurrentDatabaseProvider, _databaseProviders, Expression.SqlSyntax, ConstraintType.PrimaryKey)
                {
                    Constraint =
                    {
                        TableName = CurrentColumn.TableName,
                        Columns   = new[] { CurrentColumn.Name }
                    }
                };
                _context.Expressions.Add(expression);
            }

            return(this);
        }
Esempio n. 2
0
        /// <inheritdoc />
        public ICreateConstraintOnTableBuilder PrimaryKey(bool clustered)
        {
            var expression = new CreateConstraintExpression(_context, ConstraintType.PrimaryKey);

            expression.Constraint.IsPrimaryKeyClustered = clustered;
            return(new CreateConstraintBuilder(expression));
        }
        public ICreateConstraintOnTableSyntax UniqueConstraint()
        {
            var expression = new CreateConstraintExpression(_context.CurrentDatabaseProvider, _databaseProviders, _sqlSyntax, ConstraintType.Unique);

            _context.Expressions.Add(expression);
            return(new CreateConstraintBuilder(expression));
        }
Esempio n. 4
0
        /// <inheritdoc />
        public ICreateConstraintOnTableBuilder Constraint(string constraintName)
        {
            var expression = new CreateConstraintExpression(_context, ConstraintType.NonUnique);

            expression.Constraint.ConstraintName = constraintName;
            return(new CreateConstraintBuilder(expression));
        }
        /// <inheritdoc />
        public ICreateConstraintOnTableBuilder PrimaryKey(string primaryKeyName)
        {
            var expression = new CreateConstraintExpression(_context, ConstraintType.PrimaryKey);

            expression.Constraint.ConstraintName = primaryKeyName;
            return(new CreateConstraintBuilder(expression));
        }
Esempio n. 6
0
        public Constraint.ICreateConstraintOnTableSyntax PrimaryKey()
        {
            var expression = new CreateConstraintExpression(ConstraintType.PrimaryKey);

            _context.Expressions.Add(expression);
            return(new CreateConstraintExpressionBuilder(expression));
        }
Esempio n. 7
0
        public ICreateConstraintOnTableSyntax UniqueConstraint()
        {
            var expression = new CreateConstraintExpression(ConstraintType.Unique);

            _context.Expressions.Add(expression);
            return(new CreateConstraintExpressionBuilder(expression));
        }
Esempio n. 8
0
        public Constraint.ICreateConstraintOnTableSyntax UniqueConstraint(string constraintName)
        {
            var expression = new CreateConstraintExpression(ConstraintType.Unique);

            expression.Constraint.ConstraintName = constraintName;
            _context.Expressions.Add(expression);
            return(new CreateConstraintExpressionBuilder(expression));
        }
        /// <inheritdoc />
        public ICreateConstraintOnTableSyntax PrimaryKey(string primaryKeyName)
        {
            var expression = new CreateConstraintExpression(ConstraintType.PrimaryKey);

            expression.Constraint.ConstraintName = primaryKeyName;
            _context.Expressions.Add(expression);
            return(new CreateConstraintExpressionBuilder(expression));
        }
        public void WhenDefaultSchemaConventionIsAppliedAndSchemaIsNotSetThenSchemaShouldBeNull()
        {
            var expression = new CreateConstraintExpression(ConstraintType.Unique);

            var processed = expression.Apply(ConventionSets.NoSchemaName);

            Assert.That(processed.Constraint.SchemaName, Is.Null);
        }
        public void WhenDefaultSchemaConventionIsChangedAndSchemaIsNotSetThenSetSchema()
        {
            var expression = new CreateConstraintExpression(ConstraintType.Unique);

            var processed = expression.Apply(ConventionSets.WithSchemaName);

            Assert.That(processed.Constraint.SchemaName, Is.EqualTo("testdefault"));
        }
        public ICreateConstraintOnTableSyntax Constraint(string constraintName)
        {
            var expression = new CreateConstraintExpression(_context.CurrentDatabaseProvider, _databaseProviders, _sqlSyntax, ConstraintType.NonUnique);

            expression.Constraint.ConstraintName = constraintName;
            _context.Expressions.Add(expression);
            return(new CreateConstraintBuilder(expression));
        }
        public ICreateConstraintOnTableSyntax PrimaryKey(string primaryKeyName)
        {
            var expression = new CreateConstraintExpression(_context.CurrentDatabaseProvider, _databaseProviders, _sqlSyntax, ConstraintType.PrimaryKey);

            expression.Constraint.ConstraintName = primaryKeyName;
            _context.Expressions.Add(expression);
            return(new CreateConstraintBuilder(expression));
        }
Esempio n. 14
0
        public static CreateConstraintExpression GetCreateNamedUniqueConstraintExpression()
        {
            var expression = new CreateConstraintExpression(ConstraintType.Unique);

            expression.Constraint.TableName = TestTableName1;
            expression.Constraint.Columns.Add(TestColumnName1);
            expression.Constraint.ConstraintName = "TESTUNIQUECONSTRAINT";
            return(expression);
        }
Esempio n. 15
0
        public static CreateConstraintExpression GetCreateUniqueConstraintExpression()
        {
            var expression = new CreateConstraintExpression(ConstraintType.Unique);

            expression.Constraint.TableName = TestTableName1;
            expression.Constraint.Columns.Add(TestColumnName1);
            expression.ApplyConventions(new MigrationConventions());
            return(expression);
        }
Esempio n. 16
0
        public static CreateConstraintExpression GetCreateNamedPrimaryKeyExpression()
        {
            var expression = new CreateConstraintExpression(ConstraintType.PrimaryKey);

            expression.Constraint.TableName = TestTableName1;
            expression.Constraint.Columns.Add(TestColumnName1);
            expression.Constraint.ConstraintName = "TESTPRIMARYKEY";
            return(expression);
        }
        public override string Generate(CreateConstraintExpression expression)
        {
            var withParts = GetWithOptions(expression);
            var withPart  = !string.IsNullOrEmpty(withParts)
                ? $" WITH ({withParts})"
                : string.Empty;

            return($"{base.Generate(expression)}{withPart}");
        }
Esempio n. 18
0
        public static CreateConstraintExpression GetCreateUniqueConstraintExpression()
        {
            var expression = new CreateConstraintExpression(ConstraintType.Unique);

            expression.Constraint.TableName = TestTableName1;
            expression.Constraint.Columns.Add(TestColumnName1);
            var processed = expression.Apply(ConventionSets.NoSchemaName);

            return(processed);
        }
Esempio n. 19
0
        public static CreateConstraintExpression GetCreateMultiColumnPrimaryKeyExpression()
        {
            var expression = new CreateConstraintExpression(ConstraintType.PrimaryKey);

            expression.Constraint.TableName = TestTableName1;
            expression.Constraint.Columns.Add(TestColumnName1);
            expression.Constraint.Columns.Add(TestColumnName2);
            expression.ApplyConventions(new MigrationConventions());
            return(expression);
        }
        public void CallingColumnsWithDuplicateNamesAddsSetOfColumnNamesForUnique()
        {
            var expression = new CreateConstraintExpression(ConstraintType.Unique);

            var builder = new CreateConstraintExpressionBuilder(expression);

            builder.Columns(new[] { Column1, Column2, Column1 });

            Assert.That(expression.Constraint.Columns.Count, Is.EqualTo(2));
        }
        protected string GetConstraintClusteringString(CreateConstraintExpression constraint)
        {
            if (!constraint.Constraint.AdditionalFeatures.TryGetValue(
                    SqlAnywhereExtensions.ConstraintType, out var indexType))
            {
                return(string.Empty);
            }

            return((indexType.Equals(SqlAnywhereConstraintType.Clustered)) ? " CLUSTERED" : " NONCLUSTERED");
        }
Esempio n. 22
0
        public override void Process(CreateConstraintExpression expression)
        {
            if (ConstraintExists(expression.Constraint.SchemaName, expression.Constraint.TableName,
                                 expression.Constraint.ConstraintName))
            {
                return;
            }

            Process(ExtendedGenerator.Generate(expression));
        }
 private IEnumerable <MigrationExpressionBase> GetAlters(CreateConstraintExpression from, CreateConstraintExpression to)
 {
     return(new MigrationExpressionBase[]
     {
         new DeleteConstraintExpression(ConstraintType.PrimaryKey)
         {
             Constraint = from.Constraint
         },
         to
     });
 }
        public override void Process(CreateConstraintExpression expression)
        {
            expression.ToLower();
            if (ConstraintExists(expression.Constraint.SchemaName, expression.Constraint.TableName,
                                 expression.Constraint.ConstraintName))
            {
                return;
            }

            base.Process(expression);
        }
        public void WhenDefaultSchemaConventionIsAppliedAndSchemaIsNotSetThenSchemaShouldBeNull()
        {
            var expr = new CreateConstraintExpression(ConstraintType.PrimaryKey)
            {
                Constraint = { ConstraintName = "Test" }
            };

            var processed = expr.Apply(ConventionSets.NoSchemaName);

            Assert.That(processed.Constraint.SchemaName, Is.Null);
        }
        public void WhenDefaultSchemaConventionIsAppliedAndSchemaIsSetThenSchemaShouldNotBeChanged()
        {
            var expression = new CreateConstraintExpression(ConstraintType.Unique)
            {
                Constraint = { SchemaName = "testschema" }
            };

            var processed = expression.Apply(ConventionSets.WithSchemaName);

            Assert.That(processed.Constraint.SchemaName, Is.EqualTo("testschema"));
        }
Esempio n. 27
0
        protected virtual string GetConstraintClusteringString(CreateConstraintExpression constraint)
        {
            object indexType;

            if (!constraint.Constraint.AdditionalFeatures.TryGetValue(
                    SqlServerExtensions.ConstraintType, out indexType))
            {
                return(string.Empty);
            }
            return(indexType.Equals(SqlServerConstraintType.Clustered) ? " CLUSTERED" : " NONCLUSTERED");
        }
        public void CanCreatePrimaryKey()
        {
            var expression = new CreateConstraintExpression(ConstraintType.PrimaryKey);

            expression.Constraint.TableName      = "ConstraintTable";
            expression.Constraint.ConstraintName = "PK_Name";
            expression.Constraint.Columns.Add("column1");

            string sql = generator.Generate(expression);

            sql.ShouldBe("ALTER TABLE \"public\".\"ConstraintTable\" ADD CONSTRAINT \"PK_Name\" PRIMARY KEY (\"column1\")");
        }
        public void CanCreateUniqueConstraint()
        {
            var expression = new CreateConstraintExpression(ConstraintType.Unique);

            expression.Constraint.TableName      = "ConstraintTable";
            expression.Constraint.ConstraintName = "Constraint";
            expression.Constraint.Columns.Add("column1");

            string sql = generator.Generate(expression);

            sql.ShouldBe("ALTER TABLE \"public\".\"ConstraintTable\" ADD CONSTRAINT \"Constraint\" UNIQUE (\"column1\")");
        }
Esempio n. 30
0
        public override string Generate(CreateConstraintExpression expression)
        {
            var constraintType       = expression.Constraint.IsPrimaryKeyConstraint ? "PRIMARY KEY" : "UNIQUE";
            var constraintClustering = GetConstraintClusteringString(expression);
            var columns = string.Join(", ", expression.Constraint.Columns.Select(x => Quoter.QuoteColumnName(x)).ToArray());

            return(string.Format(CreateConstraint,
                                 Quoter.QuoteTableName(expression.Constraint.TableName, expression.Constraint.SchemaName),
                                 Quoter.Quote(expression.Constraint.ConstraintName),
                                 constraintType,
                                 constraintClustering,
                                 columns));
        }