Private/ArchiveHelper.ps1
|
# --------------------------------------------------------------------------- # Archive helper - internal entry creation with rolling limits # --------------------------------------------------------------------------- function Add-TTArchiveEntry { param($Session, [string]$Reason = 'closed') $archive = @(Read-JsonFile $script:ArchiveFile) $entry = $Session.PSObject.Copy() $entry | Add-Member -NotePropertyName ClosedTime -NotePropertyValue ([datetime]::UtcNow.ToString('o')) -Force $entry | Add-Member -NotePropertyName CloseReason -NotePropertyValue $Reason -Force $archive = @($archive) + @($entry) # Enforce rolling limits $cfg = Get-TTConfig $cutoff = [datetime]::UtcNow.AddDays(-$cfg.ArchiveRetentionDays).ToString('o') $archive = @($archive | Where-Object { $_.ClosedTime -gt $cutoff }) if ($archive.Count -gt $cfg.MaxArchiveEntries) { $archive = $archive[-$cfg.MaxArchiveEntries..-1] } Write-JsonFile $script:ArchiveFile $archive } |