public SqlScriptingResult GenerateSqlScripts(SqlScriptingInput input) { var result = new SqlScriptingResult(); HandleTables(result, input.Tables, input.RootFolder); HandleTextObjects(result, input.TextObjects, input.RootFolder); return result; }
public void HandleTables(SqlScriptingResult result, List<SqlTable> tables, string rootFolder) { foreach (SqlTable table in tables) { // Ignore "tSQLt" schema. if (!table.Schema.Equals("tSQLt", System.StringComparison.InvariantCultureIgnoreCase)) { var contentBuilder = new StringBuilder(string.Empty); string name = string.Format("{0}.{1}", table.Schema, table.Name); AddTableHeader(contentBuilder, name, "table"); int totalColumnCount = table.Columns.Count; for (int i = 0; i < totalColumnCount; i++) { SqlColumn column = table.Columns[i]; var columnBuilder = new StringBuilder(string.Empty); columnBuilder.AppendFormat(" {0}", column.Name); columnBuilder.AppendFormat(" {0}", column.DataTypeName); HandleDataTypeLength(column, columnBuilder); HandleIdentity(column, columnBuilder); HandleNullability(column, columnBuilder); HandlePrimaryKey(table, column, columnBuilder); HandleDefault(table, column, columnBuilder); HandleForeignKey(table, column, columnBuilder); HandleSeperator(totalColumnCount, i, columnBuilder); contentBuilder.AppendLine(columnBuilder.ToString()); } AddTableFooter(contentBuilder); AddScriptToResult(rootFolder, "Tables", table.Schema, table.Name, contentBuilder, result); } } }
public void AddScriptToResult(string rootFolder, string folderName, string schema, string name , StringBuilder fileContent, SqlScriptingResult result) { string fileName = string.Format("{0}.{1}.sql", schema, name); string folderPath = string.IsNullOrWhiteSpace(rootFolder) ? folderName : Path.Combine(rootFolder, folderName); string path = Path.Combine(folderPath, fileName); var script = new FileInfoDto { Content = fileContent.ToString(), Path = path }; result.Scripts.Add(script); }
public void HandleTextObjects(SqlScriptingResult result, List<SqlTextObject> textObjects, string rootFolder) { foreach (SqlTextObject textObject in textObjects) { // Ignore "tSQLt" schema. if (!textObject.Schema.Equals("tSQLt", System.StringComparison.InvariantCultureIgnoreCase)) { var contentBuilder = new StringBuilder(string.Empty); string name = string.Format("{0}.{1}", textObject.Schema, textObject.Name); // Don't add drop statement for schema's. if (!textObject.GroupName.ToLower().Equals("schema")) { AddTextObjectHeader(contentBuilder, name, textObject.TypeName); } contentBuilder.Append(textObject.TextHeader); contentBuilder.Append(textObject.TextBody); AddTextObjectFooter(contentBuilder); AddScriptToResult(rootFolder, textObject.GroupName, textObject.Schema, textObject.Name, contentBuilder, result); } } }