src/Invoke-Reader.psm1

using namespace Dapper
using namespace System.Data

<#
.SYNOPSIS
    Executes a parameterized SQL query and returns a data reader.
.PARAMETER Connection
    The connection to the data source.
.PARAMETER Command
    The SQL query to be executed.
.PARAMETER Parameters
    The parameters of the SQL query.
.OUTPUTS
    A data reader that can be used to iterate over the results of the SQL query.
#>

function Invoke-Reader {
    [CmdletBinding()]
    [OutputType([System.Data.IDataReader])]
    param (
        [Parameter(Mandatory, Position = 0)]
        [IDbConnection] $Connection,

        [Parameter(Mandatory, Position = 1)]
        [string] $Command,

        [Parameter(Position = 2)]
        [ValidateNotNull()]
        [hashtable] $Parameters = @{}
    )

    $dynamicParameters = [DynamicParameters]::new()
    foreach ($key in $Parameters.Keys) { $dynamicParameters.Add($key, $Parameters.$key) }
    [SqlMapper]::ExecuteReader($Connection, $Command, $dynamicParameters)
}