private void validateButton_Click(object sender, EventArgs e) { outputTextBox.Clear(); _logger.Log(LogLevel.Information, "Parsing ... start"); var parserOutput = _parser.ParseString(sqlTextBox.Text); _logger.Log(LogLevel.Information, "Parsing .. end"); _logger.Log(string.Empty); var fileName = "local file"; // TODO : use the name of the file that you have loaded if (parserOutput.ParsingErrors != null && parserOutput.ParsingErrors.Count > 0) { _logger.LogParsingErrors(parserOutput, fileName); } else { // TODO : this should by configurable // NOTE : formatting removes comments we rely on to get database context !!! if (false) { _logger.Log(LogLevel.Information, "Script formatting ... start"); var formattedSql = _formatter.FormatSql(parserOutput.TsqlScript, SqlVersion.Sql120); parserOutput = _parser.ParseString(formattedSql); sqlTextBox.Text = formattedSql; _logger.Log(LogLevel.Information, "Script formatting ... end"); _logger.Log(string.Empty); } // TODO : grabbing first context, for SSMS use the database dropdown var databaseContext = _contextProvider .Get(sqlTextBox.Text, parserOutput.TsqlScript) .First(); var file = new SchemaFile() { Context = databaseContext, Path = fileName, Schema = _schema, Settings = null, // TODO : seems like I don't need settings here for now TsqlScript = parserOutput.TsqlScript, }; _localGenerator.AddLocalSchema(file); _logger.Log(LogLevel.Information, "Validate SQL ... start"); _logger.Log(string.Empty); var validationResults = _validationEngine.ValidateFile(file); _logger.Log(string.Empty); _logger.Log(LogLevel.Information, validationResults.Any(vr => vr.Value.Any()) ? "SQL is not valid" : "SQL is valid" ); _logger.Log(string.Empty); _logger.LogValidationErrors(validationResults, file); _logger.Log(LogLevel.Information, "Validate SQL .. end"); } }
private IList <SchemaFile> CreateFiles(string fileName, string fileContent, ParserOutput parserOutput, DatabaseSchemaSettings settings) { var contexts = _contextProvider.Get(fileContent, parserOutput.TsqlScript); var files = contexts .Select(context => new SchemaFile() { Context = context, Schema = _databaseSchema, Settings = settings, Path = fileName, TsqlScript = parserOutput.TsqlScript, }) .ToList(); return(files); }