public bool CreateDatabase(out string errorMessage, out string errorMessageShort) { errorMessage = ""; errorMessageShort = ""; try { bool ok = true; DBFolders dbFolders = new DBFolders(projectName, rdbms, logger); // we first process CreateDBFoldersToProcess - but only if no database exists yet // we use masterConnectionString for these scripts, because we need stronger permissions to create database string errorMessageLocal = ""; int i; for (i = 0; i < dbFolders.CreateDBFoldersToProcess.Count; i++) { ok = ProcessDBFolder(dbFolders.CreateDBFoldersToProcess[i], out errorMessageLocal, out errorMessageShort); if (!ok) { break; } } if (!ok) { errorMessage = $"Executing scripts from createDB folder '{ dbFolders.CreateDBFoldersToProcess[i] }' returned error: '{ errorMessageLocal }'."; if (i < dbFolders.CreateDBFoldersToProcess.Count) { errorMessage += Environment.NewLine + "Following createDB folders must still be processed: "; errorMessage = string.Join(Environment.NewLine, dbFolders.CreateDBFoldersToProcess.Skip(i).ToArray()); } if (dbFolders.ScriptFoldersToProcess.Count > 0) { errorMessage += Environment.NewLine + "Following folders must still be processed: "; for (int j = 0; j < dbFolders.ScriptFoldersToProcess.Count; j++) { errorMessage += Environment.NewLine + dbFolders.ScriptFoldersToProcess[j]; } } return(false); } else { // after folders with createDB naming, process the other (version) folders - ScriptFoldersToProcess for (i = 0; i < dbFolders.ScriptFoldersToProcess.Count; i++) { ok = ProcessScriptFolder(dbFolders.ScriptFoldersToProcess[i], out errorMessageLocal, out errorMessageShort); if (!ok) { break; } } if (!ok) { errorMessage = $"Executing scripts from folder '{ dbFolders.ScriptFoldersToProcess[i] }' returned error: '{ errorMessageLocal }'."; if (i < dbFolders.ScriptFoldersToProcess.Count) { errorMessage += Environment.NewLine + "Following folders must still be processed: "; errorMessage = string.Join(Environment.NewLine, dbFolders.ScriptFoldersToProcess.Skip(i).ToArray()); } return(false); } else { return(true); } } } catch (Exception e) { errorMessage = e.Message; errorMessage += Environment.NewLine + "StackTrace:" + Environment.NewLine + e.StackTrace; errorMessageShort = e.Message; return(false); } }
private void DisplayScriptFolderOrder(string projectName, RDBMS rdbms) { DBFolders dbFolders = new DBFolders(projectName, rdbms, logger); dbFolders.WriteFolderNames(logger); }