Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
        private void DisplayScriptFolderOrder(string projectName, RDBMS rdbms)
        {
            DBFolders dbFolders = new DBFolders(projectName, rdbms, logger);

            dbFolders.WriteFolderNames(logger);
        }