Skip to content

Commit 668c97c

Browse files
committed
refactor(database): improve Get-ProjectItem and Remove-ProjectItem for better database handling
1 parent 310ffd3 commit 668c97c

1 file changed

Lines changed: 43 additions & 27 deletions

File tree

public/project_item.ps1

Lines changed: 43 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -19,27 +19,43 @@ function Get-ProjectItem{
1919
[Parameter()][switch]$Force
2020
)
2121

22-
($Owner,$ProjectNumber) = Get-OwnerAndProjectNumber -Owner $Owner -ProjectNumber $ProjectNumber
23-
if([string]::IsNullOrWhiteSpace($owner) -or [string]::IsNullOrWhiteSpace($ProjectNumber)){ "Owner and ProjectNumber are required" | Write-MyError; return $null}
24-
25-
26-
# Get Item from Project database
27-
$db = Get-Project -Owner $Owner -ProjectNumber $ProjectNumber -Force:$Force
22+
begin{
23+
($Owner,$ProjectNumber) = Get-OwnerAndProjectNumber -Owner $Owner -ProjectNumber $ProjectNumber
24+
if([string]::IsNullOrWhiteSpace($owner) -or [string]::IsNullOrWhiteSpace($ProjectNumber)){ "Owner and ProjectNumber are required" | Write-MyError; return $null}
25+
26+
27+
# Get Item from Project database
28+
$db = Get-Project -Owner $Owner -ProjectNumber $ProjectNumber -Force:$Force
2829

29-
if($db){
30-
$item = Get-Item $db $itemId
30+
# Durty flag
31+
$durty= $false
3132
}
3233

33-
# If item not found on cache get it directly
34-
if($null -eq $item){
35-
$item = Get-ProjectItemDirect -ItemId $ItemId -NoCache
34+
process{
35+
if($db){
36+
$item = Get-Item $db $itemId
37+
}
38+
if($null -eq $item){
39+
"Item [$ItemId] not found in cache, fetching from API" | Write-Verbose
40+
41+
# Get direct. No cache as we are in a database modification context
42+
$item = Get-ProjectItemDirect -ItemId $ItemId
3643

37-
Set-Item $db $item
44+
# Add to database
45+
Set-Item $db $item
46+
$durty = $true
47+
}
3848

39-
Save-ProjectDatabase -Database $db
49+
return $item
50+
}
51+
52+
end{
53+
if($durty){
54+
"Saving durty database" | Write-Verbose
55+
Save-ProjectDatabase -Database $db
56+
}
4057
}
4158

42-
return $item
4359
} Export-ModuleMember -Function Get-ProjectItem
4460

4561
function Set-ProjectItem{
@@ -67,14 +83,21 @@ function Remove-ProjectItem{
6783
[Parameter()][string]$ProjectNumber
6884
)
6985

70-
($Owner,$ProjectNumber) = Get-OwnerAndProjectNumber -Owner $Owner -ProjectNumber $ProjectNumber
71-
if([string]::IsNullOrWhiteSpace($owner) -or [string]::IsNullOrWhiteSpace($ProjectNumber)){ "Owner and ProjectNumber are required" | Write-MyError; return $null}
86+
begin{
87+
($Owner,$ProjectNumber) = Get-OwnerAndProjectNumber -Owner $Owner -ProjectNumber $ProjectNumber
88+
if([string]::IsNullOrWhiteSpace($owner) -or [string]::IsNullOrWhiteSpace($ProjectNumber)){ "Owner and ProjectNumber are required" | Write-MyError; return $null}
89+
90+
$db = Get-Project -Owner $Owner -ProjectNumber $ProjectNumber
91+
}
7292

73-
$db = Get-Project -Owner $Owner -ProjectNumber $ProjectNumber
93+
process{
94+
Remove-Item $db $itemId
95+
}
7496

75-
Remove-Item $db $itemId
97+
end{
98+
Save-ProjectDatabase -Database $db
99+
}
76100

77-
Save-ProjectDatabase -Database $db
78101
}
79102

80103
function Find-ProjectItem{
@@ -316,8 +339,7 @@ function Remove-ProjectItemDirect{
316339
function Get-ProjectItemDirect{
317340
[CmdletBinding()]
318341
param(
319-
[Parameter(Mandatory,ValueFromPipeline,Position = 0)][string]$ItemId,
320-
[Parameter()][switch]$NoCache
342+
[Parameter(Mandatory,ValueFromPipeline,Position = 0)][string]$ItemId
321343
)
322344

323345
$response = Invoke-MyCommand -Command GetItem -Parameters @{
@@ -337,12 +359,6 @@ function Get-ProjectItemDirect{
337359

338360
$item = $response.data.node | Convert-NodeItemToHash
339361

340-
if(! $NoCache){
341-
"Adding item [$ItemId] to cache" | Write-Verbose
342-
Set-ProjectItem -Owner $Owner -ProjectNumber $ProjectNumber -Item $item
343-
Save-ProjectDatabase -Owner $Owner -ProjectNumber $ProjectNumber
344-
}
345-
346362
return $item
347363
} Export-ModuleMember -Function Get-ProjectItemDirect
348364

0 commit comments

Comments
 (0)