public/jobs/Update-JobLog.ps1
Function Update-JobLog { <# ... #> [CmdletBinding(DefaultParameterSetName = 'Hashtable')] param( [Parameter(Mandatory=$true, ParameterSetName = 'Hashtable')] [Parameter(Mandatory=$true, ParameterSetName = 'Array')] [Int]$JobId # The Job ID that you have already got from the database # Values to change ,[Parameter(Mandatory=$false, ParameterSetName = 'Hashtable')] [Parameter(Mandatory=$false, ParameterSetName = 'Array')] [Switch]$Finished = $false # Finished like 0 or 1 ,[Parameter(Mandatory=$false, ParameterSetName = 'Hashtable')] [Parameter(Mandatory=$false, ParameterSetName = 'Array')] [String]$Status = "" # Status like "Finished" and others #,[Parameter(Mandatory=$false)][String]$Process = "" # Process ID ,[Parameter(Mandatory=$false, ParameterSetName = 'Hashtable')] [Parameter(Mandatory=$false, ParameterSetName = 'Array')] [String]$Plugin = "" # Plugin guid ,[Parameter(Mandatory=$false, ParameterSetName = 'Hashtable')] [Parameter(Mandatory=$false, ParameterSetName = 'Array')] [Int]$DebugMode = -1 # Debug mode like 0 or 1 ,[Parameter(Mandatory=$false, ParameterSetName = 'Hashtable')] [Parameter(Mandatory=$false, ParameterSetName = 'Array')] [String]$Type = "" # Type like UPLOAD, MESSAGES, LISTS etc. ,[Parameter(Mandatory=$false, ParameterSetName = 'Hashtable')] [Parameter(Mandatory=$false, ParameterSetName = 'Array')] [Hashtable]$InputParam = [Hashtable]@{} # Input hashtable ,[Parameter(Mandatory=$false, ParameterSetName = 'Hashtable')] [Parameter(Mandatory=$false, ParameterSetName = 'Array')] [Int]$Inputrecords = -1 # Number of records that have been put in ,[Parameter(Mandatory=$false, ParameterSetName = 'Hashtable')] [Parameter(Mandatory=$false, ParameterSetName = 'Array')] [Int]$Successful = -1 # Successful records, only needed on uploads ,[Parameter(Mandatory=$false, ParameterSetName = 'Hashtable')] [Parameter(Mandatory=$false, ParameterSetName = 'Array')] [Int]$Failed = -1 # Failed records, only needed on uploads ,[Parameter(Mandatory=$false, ParameterSetName = 'Hashtable')] [Parameter(Mandatory=$false, ParameterSetName = 'Array')] [Int]$Totalseconds = -1 # Seconds in total, logged at the end # Only one Output should be allowed ,[Parameter(Mandatory=$false, ParameterSetName = 'Hashtable')][Hashtable]$OutputParam = [Hashtable]@{} # Output hashtable (if it is suitable) ,[Parameter(Mandatory=$false, ParameterSetName = 'Array')][System.Collections.ArrayList]$OutputArray = [System.Collections.ArrayList]@() # Output array (if it is suitable) ) Process { #----------------------------------------------- # CHECK CONNECTION #----------------------------------------------- Set-JobLogDatabase #----------------------------------------------- # BUILD THE STATEMENT #----------------------------------------------- $sb = [System.Text.StringBuilder]::new() [void]$sb.Append("UPDATE joblog SET ") Write-Verbose "Checking parameters" $upd = [System.Collections.ArrayList]@() If ( $Finished -eq $true ) { Write-Verbose "Adding finished parameter" [void]$upd.Add("finished = $( $Finished )") } If ( $Status -ne "" ) { [void]$upd.Add("status = '$( $Status )'") } #[void]$upd.Add("process = '$( $Process )'") If ( $Plugin -ne "" ) { [void]$upd.Add("plugin = '$( $Plugin )'") } If ( $DebugMode -gt -1 ) { [void]$upd.Add("debug = $( $DebugMode )") } If ( $Type -ne "" ) { [void]$upd.Add("type = '$( $Type )'") } If ( $InputParam.Keys.Count -gt 0 ) { [void]$upd.Add("input = '$( ( ConvertTo-Json $InputParam -Depth 99 -Compress ) )'") } If ( $Inputrecords -gt -1 ) { [void]$upd.Add("inputrecords = $( $Inputrecords )") } If ( $Successful -gt -1 ) { [void]$upd.Add("successful = $( $Successful )") } If ( $Failed -gt -1 ) { [void]$upd.Add("failed = $( $Failed )") } If ( $Totalseconds -gt -1 ) { [void]$upd.Add("totalseconds = $( $Totalseconds )") } Switch ( $PSCmdlet.ParameterSetName ) { "Array" { If ( $OutputArray.Count -gt 0 ) { [void]$upd.Add("output = '$( ( ConvertTo-Json $OutputArray -Depth 99 -Compress ) )'") } [void]$upd.Add("returnformat = 'ARRAY'") } default { If ( $OutputParam.Keys.Count -gt 0 ) { [void]$upd.Add("output = '$( ( ConvertTo-Json $OutputParam -Depth 99 -Compress ) )'") } [void]$upd.Add("returnformat = 'HASHTABLE'") break } } $updateValues = $upd -join ", " [void]$sb.Append($updateValues) [void]$sb.Append("WHERE id = $( $JobId )") #----------------------------------------------- # UPDATE THE DATA #----------------------------------------------- #$query = "update logjob set process = 'abc' where id = $( $JobId )" #Invoke-DuckDBQueryAsNonExecute -Query $sb.ToString() -ConnectionName "JobLog" $sqlUpdate = Invoke-SqlUpdate -Query $sb.ToString() -ConnectionName "JobLog" } } |