internal/functions/invoke-azurebackuprestore.ps1

Function Invoke-AzureBackupRestore ($DatabaseServer, $DatabaseName, $SqlUser, $SqlPwd, $NewDatabaseName) {
    $StartTime = Get-Date

    $newAzureDbCreated = $false

    $sqlCommand = Get-SQLCommand $DatabaseServer $DatabaseName $SqlUser $SqlPwd
    
    $commandText = get-content "$script:PSModuleRoot\internal\sql\newazuredbfromcopy.sql"
    
    $commandText = $commandText.Replace('@CurrentDatabase', $DatabaseName)
    $commandText = $commandText.Replace('@NewName', $NewDatabaseName)

    $sqlCommand.CommandText = $commandText

    Write-Verbose "NewDatabaseName: $NewDatabaseName"

    $sqlCommand.CommandTimeout = 0

    $sqlCommand.Connection.Open()

    Write-verbose $sqlCommand.CommandText
    
    $null = $sqlCommand.ExecuteNonQuery()

    $sqlCommand.Dispose()

    $sqlCommand = Get-SQLCommand $DatabaseServer $DatabaseName $SqlUser $SqlPwd

    $commandText = get-content "$script:PSModuleRoot\internal\sql\newazuredbfromcopy.sql"

    $sqlCommand.CommandText = $commandText

    $null = $sqlCommand.Parameters.Add("@NewName", $NewDatabaseName)

    $sqlCommand.Connection.Open()
    
    $databaseId = -1

    while($newAzureDbCreated -eq $true){
         
        $reader = $sqlCommand.ExecuteReader()

        if ($reader.read() -eq $true) {
        
            $databaseId = $reader.GetInt(0)

            if($databaseId -gt 0)
            {
                $newAzureDbCreated = $true
            }
        }
        
        if(!$newAzureDbCreated){
            Write-Host "Tick"
            Start-Sleep -Seconds 30
        }

        $reader.close()
    }

    $EndTime = Get-Date

    $TimeSpan = New-TimeSpan -End $EndTime -Start $StartTime

    Write-Host "Time Taken inside: Invoke-AzureBackup" -ForegroundColor Green
    Write-Host "$TimeSpan" -ForegroundColor Green
}