Public/Get-Transfer.ps1

function Get-Transfer {
    <#
    .SYNOPSIS
        Retrieves transfer entries.
 
    .DESCRIPTION
        Gets one or more transfers from the data store. Can filter by name or ID.
 
    .PARAMETER Name
        Filter transfers by name.
 
    .PARAMETER Id
        Get a specific transfer by ID.
 
    .PARAMETER Budget
        Optional budget name to target. Uses active budget if not specified.
 
    .PARAMETER DataPath
        Optional custom path for data storage. Overrides budget-based paths.
 
    .EXAMPLE
        Get-Transfer
 
    .EXAMPLE
        Get-Transfer -Name "Savings"
 
    .EXAMPLE
        Get-Transfer -Budget "MyPersonalBudget"
 
    .OUTPUTS
        Array of Transfer objects
    #>

    [CmdletBinding(DefaultParameterSetName = 'All')]
    param(
        [Parameter(ParameterSetName = 'ByName')]
        [string]$Name,

        [Parameter(ParameterSetName = 'ById')]
        [string]$Id,

        [Parameter()]
        [string]$Budget,

        [Parameter()]
        [string]$DataPath
    )

    $resolvedPath = Resolve-DataPath -DataPath $DataPath -Budget $Budget
    if (-not $resolvedPath) { return @() }

    $transfers = Read-EntityData -EntityType 'Transfer' -DataPath $resolvedPath

    if ($PSCmdlet.ParameterSetName -eq 'ByName') {
        $transfers = $transfers | Where-Object { $_.Name -like "*$Name*" }
    }
    elseif ($PSCmdlet.ParameterSetName -eq 'ById') {
        $transfers = $transfers | Where-Object { $_.Id -eq $Id }
    }

    return $transfers
}