Public/New-Note.ps1
Function New-Note { <# .SYNOPSIS Create or overwrite a note .DESCRIPTION Create or overwrite a note See Get-BackendHelp for details on whether a note supports serialization for its Data .EXAMPLE New-Note -Data 'A bunch of dataaaa' -Tags tag1, tag2 .EXAMPLE # Create a new note with a specific ID and overwrite any note with the same ID New-Note -Data 'A bunch of dataaaa' -Tags tag1, tag2 -ID existing_id -Force .PARAMETER ID ID for the new note. Defaults to randomly generated GUID .PARAMETER Data Data for the new note. See backend specifications to determine supported data types and serialization .PARAMETER Tags Tags for the new note. Tags are a way to tag or classify a note for searching or organizational purposes .PARAMETER UpdatedBy UpdatedBy for the new note. Defaults to $ENV:USERNAME .PARAMETER RelatedIDs RelatedIDs for the new note. No validation is performed This is a way to tie your note to other notes .PARAMETER Source Source for a note. For default values, See backend specifications .PARAMETER Force If a note with the specified ID exists, overwrite it .PARAMETER Passthru Return newly created note #> [cmdletbinding(SupportsShouldProcess, ConfirmImpact = 'Low')] param( [parameter(Position=1, ValueFromPipelineByPropertyName = $True)] [object]$Data, [parameter(ValueFromPipelineByPropertyName = $True)] [string]$ID, [parameter(ValueFromPipelineByPropertyName = $True)] [string[]]$Tags, [parameter(ValueFromPipelineByPropertyName = $True)] [string[]]$RelatedIDs, [parameter(ValueFromPipelineByPropertyName = $True)] [string]$Source, [parameter(ValueFromPipelineByPropertyName = $True)] [string]$UpdatedBy, [switch]$Force, [switch]$Passthru, [string]$Backend = $Script:TireFireConfig.Backend, [hashtable]$BackendConfig = $Script:TireFireConfig.BackendConfig ) process { if(-not $PSBoundParameters.ContainsKey('ID')){ $ID = [guid]::NewGuid().Guid } $Params = @{ ID = $ID } Write-Output Tags, Data, Source, UpdatedBy, RelatedIDs, Passthru | ForEach-Object { $Key = $_ if($PSBoundParameters.ContainsKey($Key)){ $Value = $PSBoundParameters[$Key] $Params.add($Key, $Value) } } foreach($Param in $BackendConfig.Keys){ $Params.Add($Param, $BackendConfig[$Param]) } if(-not $Script:BackendHash.ContainsKey($Backend)){ Throw "$Backend is not a valid backend. Valid backends:`n$($Script:BackendHash.keys | Out-String)" } else { $BackendScript = $Script:BackendHash[$Backend].new } if ($Force -or $PSCmdlet.ShouldProcess($ID, "Create Note with ID [$ID] on backend [$Backend]")) { . $BackendScript @Params } } } |