public override void Execute(DBVersionsProcessContext processContext) { processContext.ThrowIfNull(nameof(processContext)); using (ArtifactExtractor _currentArtifactExtractor = _artifactExtractorFactory.Create(processContext.ProjectConfig)) { List <ActionStepBase> internalSteps = new List <ActionStepBase>(); using (var dbCommands = _dbCommandsFactory.CreateDBCommand(processContext.ProjectConfig.DBConnectionInfo)) { ScriptFileTypeBase incrementalFileType = ScriptFileTypeBase.Create <IncrementalScriptFileType>(); ExecuteScriptsByTypeStep incrementalExecuteScriptsByTypeStep = _executeScriptsByTypeStepFactory.Create(incrementalFileType.FileTypeCode, dbCommands); internalSteps.Add(incrementalExecuteScriptsByTypeStep); string lastIncStriptFilename = GetLastIncFilename(processContext); TargetScripts targetScripts = null; if (processContext.ProcessArgs != null) { targetScripts = (processContext.ProcessArgs as DBVersionsProcessArgs).TargetScripts; } //Comment: We run the repeatable files and ddd files, onlyif we have all the schema on the DB. mean, only if we executed all incremiental files. if (targetScripts.IncScriptFileName.Trim().ToUpperInvariant() == lastIncStriptFilename.Trim().ToUpperInvariant() || targetScripts.IncScriptFileName.Trim().ToUpperInvariant() == RuntimeScriptFile.TargetLastScriptFileName.Trim().ToUpperInvariant()) { ScriptFileTypeBase repeatableFileType = ScriptFileTypeBase.Create <RepeatableScriptFileType>(); ExecuteScriptsByTypeStep repeatableFileTypeExecuteScriptsByTypeStep = _executeScriptsByTypeStepFactory.Create(repeatableFileType.FileTypeCode, dbCommands); internalSteps.Add(repeatableFileTypeExecuteScriptsByTypeStep); if (processContext.ScriptFilesState.DevDummyDataScriptFilesComparer != null) { ScriptFileTypeBase devDummyDataFileType = ScriptFileTypeBase.Create <DevDummyDataScriptFileType>(); ExecuteScriptsByTypeStep devDummyDataFileTypeExecuteScriptsByTypeStep = _executeScriptsByTypeStepFactory.Create(devDummyDataFileType.FileTypeCode, dbCommands); internalSteps.Add(devDummyDataFileTypeExecuteScriptsByTypeStep); } } ExecuteInternalSteps(internalSteps, false); } } }
public override void Execute(DBVersionsProcessContext processContext) { processContext.ThrowIfNull(nameof(processContext)); if (processContext.ScriptFilesState.DevDummyDataScriptFilesComparer != null) { using (var dbCommands = _dbCommandsFactory.CreateDBCommand(processContext.ProjectConfig.DBConnectionInfo)) { List <ActionStepBase> internalSteps = new List <ActionStepBase>(); (processContext.ProcessDefinition as DBVersionsProcessDefinition).IsVirtualExecution = true; ScriptFileTypeBase devDummyDataFileType = ScriptFileTypeBase.Create <DevDummyDataScriptFileType>(); ExecuteScriptsByTypeStep devDummyDataFileTypeExecuteScriptsByTypeStep = _executeScriptsByTypeStepFactory.Create(devDummyDataFileType.FileTypeCode, dbCommands); internalSteps.Add(devDummyDataFileTypeExecuteScriptsByTypeStep); ExecuteInternalSteps(internalSteps, false); } } }
public override void Execute(DBVersionsProcessContext processContext) { processContext.ThrowIfNull(nameof(processContext)); using (var dbCommands = _dbCommandsFactory.CreateDBCommand(processContext.ProjectConfig.DBConnectionInfo)) { string dbName = dbCommands.DataBaseName; string tempFolderForDeploy = Path.Combine(_settings.TempFolderPath, $"Deploy_{dbName}_{DateTime.Now:HH-mm-dd-fff}"); if (!Directory.Exists(tempFolderForDeploy)) { Directory.CreateDirectory(tempFolderForDeploy); } ScriptFileTypeBase incrementalScriptFileType = ScriptFileTypeBase.Create <IncrementalScriptFileType>(); string incrementalSubFolderToDeploy = Path.Combine(tempFolderForDeploy, incrementalScriptFileType.RelativeFolderName); if (!Directory.Exists(incrementalSubFolderToDeploy)) { Directory.CreateDirectory(incrementalSubFolderToDeploy); } DirectoryInfo diIncremental = new DirectoryInfo(processContext.ProjectConfig.IncrementalScriptsFolderPath); foreach (FileInfo scriptFileToCopy in diIncremental.GetFiles()) { string targetFilename = Path.Combine(incrementalSubFolderToDeploy, scriptFileToCopy.Name); scriptFileToCopy.CopyTo(targetFilename, true); } ScriptFileTypeBase repeatableScriptFileType = ScriptFileTypeBase.Create <RepeatableScriptFileType>(); string repeatableSubFolderToDeploy = Path.Combine(tempFolderForDeploy, repeatableScriptFileType.RelativeFolderName); if (!Directory.Exists(repeatableSubFolderToDeploy)) { Directory.CreateDirectory(repeatableSubFolderToDeploy); } DirectoryInfo diRepeatable = new DirectoryInfo(processContext.ProjectConfig.RepeatableScriptsFolderPath); foreach (FileInfo scriptFileToCopy in diRepeatable.GetFiles()) { string targetFilename = Path.Combine(repeatableSubFolderToDeploy, scriptFileToCopy.Name); scriptFileToCopy.CopyTo(targetFilename, true); } if (!Directory.Exists(processContext.ProjectConfig.DeployArtifactFolderPath)) { Directory.CreateDirectory(processContext.ProjectConfig.DeployArtifactFolderPath); } string targetFileFullPath = Path.Combine(processContext.ProjectConfig.DeployArtifactFolderPath, $"{dbName}{ArtifactExtractor.ArtifactFilenameExtension}"); if (File.Exists(targetFileFullPath)) { File.Delete(targetFileFullPath); } ZipFile.CreateFromDirectory(tempFolderForDeploy, targetFileFullPath); processContext.Results = targetFileFullPath; } }