public override string[] GenerateSql(MigrationHistoryBuilder migrationsAffected, IGraphVisitor graph) { string createTable; string head = $"CREATE TABLE [{DatabaseName}].[{SchemaName}].[{TableName}]"; var optimizableMigrations = _definitions .SelectMany(m => graph.PullPrerequisitesForward(m, this, CanOptimize)) .ToImmutableList(); if (optimizableMigrations.Any()) { var definitions = optimizableMigrations .OfType <TableDefinitionMigration>() .Select(d => d.GenerateDefinitionSql()); createTable = $"{head}({string.Join(",", definitions)})"; } else { createTable = head; } string[] sql = { createTable }; migrationsAffected.AppendAll(optimizableMigrations); return(sql); }
public override string[] GenerateSql(EvolutionHistoryBuilder genesAffected, IGraphVisitor graph) { var optimizableGenes = _modifications .SelectMany(m => graph.PullPrerequisitesForward(m, this, CanOptimize)) .ToImmutableList(); if (optimizableGenes.Any()) { genesAffected.AppendAll(optimizableGenes); if (optimizableGenes.OfType <DropColumnGene>().Any()) { return(new string[0]); } } return(CreateColumnSql()); }