Galen.Ci.EntityFramework.DeploymentHistory.Extract C# (CSharp) Method

Extract() public static method

public static Extract ( string deploymentId, DbConnection connection, string schemaName, string extractDirectoryPath, bool disableVerification = false ) : string
deploymentId string
connection System.Data.Common.DbConnection
schemaName string
extractDirectoryPath string
disableVerification bool
return string
        public static string Extract(
            string deploymentId,
            DbConnection connection,
            string schemaName,
            string extractDirectoryPath,
            bool disableVerification = false)
        {
            const string sql =
                "SELECT " +
                    "   AssemblyFileName " +
                    " , Binaries " +
                    " , Hashes " +
                "FROM [{0}].[__DeploymentHistory] " +
                "WHERE DeploymentId = @DeploymentId ";

            var hasDeploymentHistoryTable = GetIsDeploymentHistoryTableExists(connection, schemaName);
            if (!hasDeploymentHistoryTable)
            {
                return null;
            }

            DbCommand command = null;
            DbDataReader reader = null;
            try
            {
                command = connection.CreateCommand();
                command.CommandText = string.Format(sql, schemaName);

                var deploymentIdParam = command.CreateParameter();
                deploymentIdParam.DbType = DbType.String;
                deploymentIdParam.Direction = ParameterDirection.Input;
                deploymentIdParam.ParameterName = "@DeploymentId";
                deploymentIdParam.Value = deploymentId;
                command.Parameters.Add(deploymentIdParam);

                reader = command.ExecuteReader();
                if (!reader.HasRows)
                {
                    return null;
                }

                if (!reader.Read())
                {
                    throw new Exception($"Couldn't read {schemaName} deployment history; deploymentId: {deploymentId}");
                }

                using (var zipArchive = new ZipArchive(reader.GetStream(1), ZipArchiveMode.Read))
                {
                    ZipUtility.Unzip(extractDirectoryPath, zipArchive);
                }

                if (!disableVerification)
                {                    
                    using (var hashesReader = new StreamReader(reader.GetStream(2)))
                    {
                        HashUtility.Verify(extractDirectoryPath, hashesReader, m_HashName);
                    }
                }

                var assemblyFilePath = Path.Combine(extractDirectoryPath, reader.GetString(0));

                reader.Close();

                return assemblyFilePath;
            }
            finally
            {
                reader.SafeDispose();
                command.SafeDispose();
            }
        }