private/projectDatabase/project_database_Item_Resolve.ps1

function Resolve-ProjectItem {
    [CmdletBinding()]
    param(
        [Parameter(Mandatory, Position = 0)][object]$Database,
        [Parameter(Mandatory, Position = 1)][string]$ItemId,
        [Parameter()][switch]$Force
    )

    $dirty = $false

    # Get Item to know what we are updating
    $item = Get-Item -Database $Database -ItemId $ItemId

    if (( ! $item ) -or $Force) {
        "Fetching item [$ItemId] from API" | Write-Verbose
        
        # Get direct. No cache as we are in a database modification context
        $item = Get-ProjectItemDirect -ItemId $ItemId

        if ( ! $item ) {
            "Item [$ItemId] not found in API" | Write-MyError
            return $null, $false
        }

        # Add to database
        Set-Item $Database $item

        # Get item again to allow the merge between staged and project fields
        $item = Get-Item $Database $itemId

        $dirty = $true
    }

    return $item, $dirty

}