Added support to create and load cache data (prototype)

This commit is contained in:
Lord Hepipud 2019-09-17 17:17:38 +02:00
parent d7eedea277
commit 5f4c788861
2 changed files with 62 additions and 0 deletions

30
lib/core/cache/Get-IcingaCacheData.psm1 vendored Normal file
View file

@ -0,0 +1,30 @@
function Get-IcingaCacheData()
{
param(
[string]$Space,
[string]$CacheStore,
[string]$KeyName
);
$CacheFile = Join-Path -Path (Join-Path -Path (Join-Path -Path (Get-IcingaCacheDir) -ChildPath $Space) -ChildPath $CacheStore) -ChildPath ([string]::Format('{0}.json', $KeyName));
[string]$Content = '';
$cacheData = @{};
if ((Test-Path $CacheFile) -eq $FALSE) {
return $null;
}
$Content = Get-Content -Path $CacheFile;
if ([string]::IsNullOrEmpty($Content)) {
return $null;
}
$cacheData = ConvertFrom-Json -InputObject ([string]$Content);
if ([string]::IsNullOrEmpty($KeyName)) {
return $cacheData;
} else {
return $cacheData.$KeyName;
}
}

32
lib/core/cache/Set-IcingaCacheData.psm1 vendored Normal file
View file

@ -0,0 +1,32 @@
function Set-IcingaCacheData()
{
param(
[string]$Space,
[string]$CacheStore,
[string]$KeyName,
$Value
);
$CacheFile = Join-Path -Path (Join-Path -Path (Join-Path -Path (Get-IcingaCacheDir) -ChildPath $Space) -ChildPath $CacheStore) -ChildPath ([string]::Format('{0}.json', $KeyName));
$cacheData = @{};
if ((Test-Path $CacheFile)) {
$cacheData = Get-IcingaCacheData -Space $Space -CacheStore $CacheStore;
} else {
New-Item -Path $CacheFile -Force | Out-Null;
}
if ($null -eq $cacheData -or $cacheData.Count -eq 0) {
$cacheData = @{
$KeyName = $Value
};
} else {
if ($cacheData.PSobject.Properties.Name -ne $KeyName) {
$cacheData | Add-Member -MemberType NoteProperty -Name $KeyName -Value $Value -Force;
} else {
$cacheData.$KeyName = $Value;
}
}
Set-Content -Path $CacheFile -Value (ConvertTo-Json -InputObject $cacheData -Depth 100) | Out-Null;
}