private void ReformatSqlClick(object sender, RoutedEventArgs e) { var sqlSrc = SourceBox.Text; if (string.IsNullOrWhiteSpace(sqlSrc)) { return; } var processed = ParseSql(sqlSrc); if (processed.errors.Any()) { var sb = new StringBuilder("Errors found:"); foreach (var error in processed.errors) { sb.AppendLine($" Line: {error.Line} Col: {error.Column}: {error.Message}"); } } else { var scriptGenerator = new Sql150ScriptGenerator(_options); scriptGenerator.GenerateScript(processed.sqlTree, out string sqlDst); DestBox.Text = sqlDst; } }
public ScriptingService(IMetadataService metadata, IQueryExecutor executor) { Parser = new TSql150Parser(false, SqlEngineType.Standalone); Generator = new Sql150ScriptGenerator(new SqlScriptGeneratorOptions() { AlignClauseBodies = true }); ScriptExecutor = executor; MetadataService = metadata; }
public string Generate(Model model) { var script = GetTablesScript(model.Entities, model.NamespaceName); var generator = new Sql150ScriptGenerator(); generator.GenerateScript(script, out var result); return(result); }
public TSqlScriptWriter(TextWriter writer) { _writer = new IndentedTextWriter(writer); _generator = new Sql150ScriptGenerator(); _generator.Options.AlignClauseBodies = true; _generator.Options.AsKeywordOnOwnLine = true; _generator.Options.KeywordCasing = KeywordCasing.Lowercase; _generator.Options.IncludeSemicolons = true; _generator.Options.IndentationSize = 4; _generator.Options.SqlVersion = SqlVersion.Sql150; _generator.Options.NewLineBeforeOpenParenthesisInMultilineList = true; }
private static SqlScriptGenerator GetGenerator(GenerationOptions options) { SqlScriptGenerator generator = null; switch (options.SqlVersion) { case SqlVersion.Sql80: generator = new Sql80ScriptGenerator(); break; case SqlVersion.Sql100: generator = new Sql100ScriptGenerator(); break; case SqlVersion.Sql110: generator = new Sql110ScriptGenerator(); break; case SqlVersion.Sql120: generator = new Sql120ScriptGenerator(); break; case SqlVersion.Sql130: generator = new Sql130ScriptGenerator(); break; case SqlVersion.Sql140: generator = new Sql140ScriptGenerator(); break; case SqlVersion.Sql150: generator = new Sql150ScriptGenerator(); break; default: generator = new Sql90ScriptGenerator(); break; } generator.Options.Apply(options); return(generator); }
private void button1_Click(object sender, EventArgs e) { using (var rdr = new StringReader(textBox1.Text)) { IList <ParseError> errors = null; var parser = new TSql150Parser(true, SqlEngineType.All); var tree = parser.Parse(rdr, out errors); foreach (ParseError err in errors) { Console.WriteLine(err.Message); } var scrGen = new Sql150ScriptGenerator(); string formattedSQL = null; scrGen.GenerateScript(tree, out formattedSQL); textBox2.Text = formattedSQL; } }
public TSqlScriptGenerator(TextWriter writer, SqlScriptGeneratorOptions options) { _writer = writer; _generator = new Sql150ScriptGenerator(options); _builder = new TSqlScriptBuilder(); }
public TSqlScriptWriter(TextWriter writer, Sql150ScriptGenerator generator) { _writer = new IndentedTextWriter(writer); _generator = generator; }
public void SnakeCaseFile(string filePath) { Encoding encoding; string f1 = null; //try to use same encoding as source file using (var reader = new StreamReader(filePath)) { f1 = reader.ReadToEnd().ToLower(); encoding = reader.CurrentEncoding; } string sqlFileText = File.ReadAllText(filePath); var sqlFileTextLines = File.ReadAllLines(filePath); //File.WriteAllText(file.FullName, text); var parser = new TSql150Parser(false); var options = new SqlScriptGeneratorOptions(); var scriptGen = new Sql150ScriptGenerator(options) { }; IList <ParseError> errors; var script2 = parser.Parse(new StringReader(sqlFileText), out errors) as TSqlScript; if (errors.Count > 0) { RaiseSqlErrorsException(errors, sqlFileText, filePath); return; } //var sb = new StringBuilder(sqlFileText); foreach (var batch in script2.Batches.Reverse()) { foreach (var statement in batch.Statements.Reverse()) { var snakeCaseVisitor = new SqlServerSnakeCaseVisitor2(); statement.Accept(snakeCaseVisitor); var sortedReplacements = snakeCaseVisitor.Replacements.OrderByDescending(r => r.Offset); foreach (var r in sortedReplacements) { if (filePath.EndsWith("Schedule_ProgramPattern.sql") && r.LineNumber == 1) { int x = 1; } var sb2 = new StringBuilder(sqlFileTextLines[r.LineNumber - 1]); sb2 = sb2.Replace(r.OldValue, r.NewValue, r.Column - 1, r.OldValue.Length); sqlFileTextLines[r.LineNumber - 1] = sb2.ToString(); } } } try { File.WriteAllLines(filePath, sqlFileTextLines, encoding); } catch (UnauthorizedAccessException e) { Console.WriteLine(e); } }