private ExcecutionResult ExecuteNonTransactionalCreateDatabaseSqlScripts( DatabaseConnectionParameters connectionParameters, Dictionary <string, FileInfo> filesToExecute, Encoding encodingForReadingSqlScripts) { IDbConnection connection = CreateDbConnection(connectionParameters); TransactionalSqlFileExecutor sqlFileExecutor = new TransactionalSqlFileExecutor(connection, _outputLogger); try { sqlFileExecutor.ExecuteNonTransactional(filesToExecute.Select(item => item.Key).ToList(), encodingForReadingSqlScripts); } catch (TransactionalSqlFileExecutorException exception) { var result = new ExcecutionResult { Success = false }; result.Errors.Add(exception.Message); result.Errors.Add(exception.InnerException.Message); return(result); } return(new ExcecutionResult { Success = true }); }
public virtual ExcecutionResult ExecuteCreateDatabase( DatabaseConnectionParameters connectionParameters, Encoding encodingForReadingSqlScripts) { // Execute optional FileStructurePolicy if (_createDatabasePolicy != null) { PolicyResult policyResult = _createDatabasePolicy.Check(_databaseScriptsDirInfo); if (!policyResult.Success) { // Policy failed Return errors ExcecutionResult result = new ExcecutionResult { Success = false }; result.Errors.AddRange(policyResult.Messages); return(result); } } SqlFilesListReader filesReader = new SqlFilesListReader(_databaseScriptsDirInfo); Dictionary <string, FileInfo> filesToExecute = filesReader.GetCreateDatabaseFileToExecute(); return(ExecuteNonTransactionalCreateDatabaseSqlScripts(connectionParameters, filesToExecute, encodingForReadingSqlScripts)); }
public ExcecutionResult Execute( string fromVersion, string toVersion, DatabaseConnectionParameters connectionParameters, Encoding encodingForReadingSqlScripts) { var excecutionResult = new ExcecutionResult { Success = true }; if (connectionParameters.BeforeExecuteScriptsAction == BeforeExecuteScriptsAction.CreateDatabase) { excecutionResult = ExecuteCreateDatabase(connectionParameters, encodingForReadingSqlScripts); } if (excecutionResult.Success) { excecutionResult = ExecuteAllScriptsForDatabase(fromVersion, toVersion, connectionParameters, encodingForReadingSqlScripts); } return(excecutionResult); }
public virtual ExcecutionResult ExecuteAllScriptsForDatabase( string fromVersion, string toVersion, DatabaseConnectionParameters connectionParameters, Encoding encodingForReadingSqlScripts) { if (string.IsNullOrEmpty(fromVersion)) { throw new ArgumentException(@"Cannot be null or empty.", "fromVersion"); } if (string.IsNullOrEmpty(toVersion)) { throw new ArgumentException(@"Cannot be null or empty.", "toVersion"); } if (encodingForReadingSqlScripts == null) { encodingForReadingSqlScripts = Encoding.Default; } Version fromVersionObject; Version toVersionObject; try { fromVersionObject = VersionNumberHelper.RemoveNegativeNumbersFromVersionObject(new Version(fromVersion)); } catch (Exception ex) { var result = new ExcecutionResult { Success = false }; result.Errors.Add( string.Format("Invalid fromVersion. Could not parse fromVersion to a usable version object. {0}", ex.Message)); return(result); } try { toVersionObject = VersionNumberHelper.RemoveNegativeNumbersFromVersionObject(new Version(toVersion)); } catch (Exception ex) { var result = new ExcecutionResult { Success = false }; result.Errors.Add(string.Format("Invalid toVersion. Could not parse toVersion to a usable version object. {0}", ex.Message)); return(result); } // Execute optional FileStructurePolicy if (_fileStructurePolicy != null) { PolicyResult policyResult = _fileStructurePolicy.Check(_databaseScriptsDirInfo); if (!policyResult.Success) { // Policy failed Return errors ExcecutionResult result = new ExcecutionResult { Success = false }; result.Errors.AddRange(policyResult.Messages); return(result); } } SqlFilesListReader filesReader = new SqlFilesListReader(_databaseScriptsDirInfo); Dictionary <string, FileInfo> filesToExecute = filesReader.GetSpecificVersionedFilesToExecute(fromVersionObject, toVersionObject); return(ExecuteSqlScripts(connectionParameters, filesToExecute, encodingForReadingSqlScripts)); }