Skip to content

Commit

Permalink
Merge pull request #1763 from jzabroski/createIndexMultipleIncludes
Browse files Browse the repository at this point in the history
Fixes #1740: Example creating index with multiple includes
  • Loading branch information
jzabroski committed Mar 28, 2024
2 parents ce086ce + fdc7c40 commit bafe29c
Show file tree
Hide file tree
Showing 5 changed files with 56 additions and 3 deletions.
15 changes: 15 additions & 0 deletions samples/FluentMigrator.Example.Migrations/1_AddGTDTables.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@
//
#endregion

using FluentMigrator.SqlServer;

namespace FluentMigrator.Example.Migrations
{
[Migration(20090906205342)]
Expand All @@ -41,6 +43,19 @@ public override void Up()
.WithColumn("Password").AsString().NotNullable()
.WithColumn("PasswordSalt").AsString().NotNullable()
.WithColumn("IsAdmin").AsBoolean().NotNullable();


IfDatabase(ProcessorId.SqlServer).
Create.Index("IX_Users").OnTable("Users")
.OnColumn("Name").Ascending()
.WithOptions().NonClustered()
.Include("Login")
.Include("IsAdmin");

IfDatabase(processorId => processorId != ProcessorId.SqlServer)
.Create.Index("IX_Users").OnTable("Users")
.OnColumn("Name").Ascending()
.WithOptions().NonClustered();
}

public override void Down()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,13 @@
#endregion

using System;
#if NETFRAMEWORK
using System.Data.OleDb;
#endif
using System.Diagnostics.CodeAnalysis;
using System.IO;

using Microsoft.Data.SqlClient;
using Microsoft.Data.Sqlite;

namespace FluentMigrator.Example.Migrator
Expand All @@ -27,6 +30,7 @@ namespace FluentMigrator.Example.Migrator
public static class DefaultDatabaseConfigurations
{
public static readonly DatabaseConfiguration Sqlite = CreateSqliteConfiguration();
public static readonly DatabaseConfiguration SqlServer = CreateSqlServerConfiguration();

#if NETFRAMEWORK
public static readonly DatabaseConfiguration Jet = CreateJetConfiguration();
Expand All @@ -43,13 +47,28 @@ private static DatabaseConfiguration CreateSqliteConfiguration()
Mode = SqliteOpenMode.ReadWriteCreate
};

return new DatabaseConfiguration()
return new DatabaseConfiguration
{
ProcessorId = ProcessorId.SQLite,
ConnectionString = csb.ConnectionString,
};
}

private static DatabaseConfiguration CreateSqlServerConfiguration()
{
var scsb = new SqlConnectionStringBuilder();
scsb.DataSource = ".";
scsb.IntegratedSecurity = true;
scsb.InitialCatalog = "FluentMigrator";
scsb.TrustServerCertificate = true;

return new DatabaseConfiguration
{
ProcessorId = ProcessorId.SqlServer,
ConnectionString = scsb.ToString()
};
}

#if NETFRAMEWORK
private static DatabaseConfiguration CreateJetConfiguration()
{
Expand Down Expand Up @@ -107,5 +126,5 @@ private static void EnsureMdbExists(string dbFileName, string connectionString)
catalog.Create(connectionString);
}
#endif
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ private static void RunWithServices(DatabaseConfiguration dbConfig)
#if NETFRAMEWORK
.AddJet()
#endif
.AddSqlServer()
.AddSQLite()
.WithGlobalConnectionString(dbConfig.ConnectionString)
.ScanIn(typeof(AddGTDTables).Assembly).For.Migrations())
Expand Down
2 changes: 1 addition & 1 deletion samples/FluentMigrator.Example.Migrator/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ static int Main(string[] args)
var processor = app.Option(
"-d|--dialect <DIALECT>",
$"The database dialect ({string.Join(",", DefaultConfigurations.Keys)})",
CommandOptionType.SingleValue);
CommandOptionType.SingleValue, opt => opt.DefaultValue = "SQLite");
var connectionString = app.Option(
"-c|--connection <CONNECTION-STRING>",
$"The connection string to connect to the database",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -274,6 +274,24 @@ public void CanCreateIndexWithIncludedColumnAndFilter()
result.ShouldBe("CREATE INDEX [TestIndex] ON [dbo].[TestTable1] ([TestColumn1] ASC) INCLUDE ([TestColumn3]) WHERE TestColumn2 IS NULL");
}

[Test]
public void CanCreateIndexWithMultipleIncludeColumnStatements()
{
var expression = GeneratorTestHelper.GetCreateIndexExpression();
var x = (new CreateIndexExpressionBuilder(expression) as ICreateIndexOnColumnSyntax).Include("TestColumn2").Include("TestColumn3");
var result = _generator.Generate(expression);
result.ShouldBe("CREATE INDEX [TestIndex] ON [dbo].[TestTable1] ([TestColumn1] ASC) INCLUDE ([TestColumn2], [TestColumn3])");
}

[Test]
public void CanCreateIndexWithOneIncludeStatementMultipleColumns()
{
var expression = GeneratorTestHelper.GetCreateIndexExpression();
var x = (new CreateIndexExpressionBuilder(expression) as ICreateIndexOptionsSyntax).Include("TestColumn2").Include("TestColumn3");
var result = _generator.Generate(expression);
result.ShouldBe("CREATE INDEX [TestIndex] ON [dbo].[TestTable1] ([TestColumn1] ASC) INCLUDE ([TestColumn2], [TestColumn3])");
}

[Test]
public void CanCreateIndexWithCompression()
{
Expand Down

0 comments on commit bafe29c

Please sign in to comment.