Update metodi cache su SPEC

This commit is contained in:
Samuele Locatelli
2026-05-28 14:49:20 +02:00
parent 47326e6535
commit c45dab1c31
5 changed files with 46 additions and 90 deletions
+42 -86
View File
@@ -1377,32 +1377,19 @@ namespace MP.SPEC.Data
/// <returns></returns>
public async Task<string> MacchineRecipeArchiveAsync(string idxMacchina)
{
using var activity = ActivitySource.StartActivity("MacchineRecipeArchiveAsync");
string? result = "";
string source = "DB";
string currKey = $"{Utils.redisMacRecipePath}:{idxMacchina}";
// cerco in redis dato valore sel idxMaccSel...
RedisValue rawData = await redisDb.StringGetAsync(currKey);
if (rawData.HasValue)
{
result = JsonConvert.DeserializeObject<string>($"{rawData}");
source = "REDIS";
}
else
{
//recupero elenco macchine...
var machineList = await MacchineGetFiltAsync("*");
var currMach = machineList.Where(x => x.IdxMacchina == idxMacchina).FirstOrDefault();
result = currMach != null ? currMach.RecipeArchivePath : null;
// serializzo e salvo...
rawData = JsonConvert.SerializeObject(result);
await redisDb.StringSetAsync(currKey, rawData, getRandTOut(redisLongTimeCache));
}
activity?.SetTag("data.source", source);
activity?.SetTag("result.count", 1);
activity?.Stop();
LogTrace($"MacchineRecipeArchiveAsync | Read from {source}: {activity?.Duration.TotalMilliseconds}ms");
return result ?? "";
return await GetOrFetchAsync(
operationName: "MacchineRecipeArchiveAsync",
cacheKey: currKey,
expiration: getRandTOut(redisLongTimeCache),
fetchFunc: async () =>
{
var machineList = await MacchineGetFiltAsync("*");
var currMach = machineList.FirstOrDefault(x => x.IdxMacchina == idxMacchina);
return currMach?.RecipeArchivePath ?? "";
},
tagList: [Utils.redisMacRecipePath]
);
}
/// <summary>
@@ -1412,34 +1399,39 @@ namespace MP.SPEC.Data
/// <returns></returns>
public async Task<string> MacchineRecipeConfAsync(string idxMacchina)
{
using var activity = ActivitySource.StartActivity("MacchineRecipeConfAsync");
string? result = "";
string source = "DB";
string currKey = $"{Utils.redisMacRecipeConf}:{idxMacchina}";
// cerco in redis dato valore sel idxMaccSel...
RedisValue rawData = await redisDb.StringGetAsync(currKey);
if (rawData.HasValue)
{
result = JsonConvert.DeserializeObject<string>($"{rawData}");
source = "REDIS";
}
else
{
//recupero elenco macchine...
var machineList = await MacchineGetFiltAsync("*");
var currMach = machineList.Where(x => x.IdxMacchina == idxMacchina).FirstOrDefault();
result = currMach != null ? currMach.RecipePath : null;
// serializzo e salvo...
rawData = JsonConvert.SerializeObject(result);
await redisDb.StringSetAsync(currKey, rawData, getRandTOut(redisLongTimeCache));
}
activity?.SetTag("data.source", source);
activity?.SetTag("result.count", 1);
activity?.Stop();
LogTrace($"MacchineRecipeConfAsync | Read from {source}: {activity?.Duration.TotalMilliseconds}ms");
return result ?? "";
return await GetOrFetchAsync(
operationName: "MacchineRecipeConfAsync",
cacheKey: currKey,
expiration: getRandTOut(redisLongTimeCache),
fetchFunc: async () =>
{
var machineList = await MacchineGetFiltAsync("*");
var currMach = machineList.FirstOrDefault(x => x.IdxMacchina == idxMacchina);
return currMach?.RecipePath ?? "";
},
tagList: [Utils.redisMacRecipeConf]
);
}
/// <summary>
/// Elenco operatori filtrati x gruppo
/// </summary>
/// <param name="codGruppo"></param>
/// <returns></returns>
public async Task<List<AnagOperatoriModel>> OperatoriGetFiltAsync(string codGruppo)
{
string keyGrp = codGruppo != "*" ? codGruppo : "ALL";
string currKey = $"{Utils.redisOprList}:{keyGrp}";
return await GetOrFetchAsync(
operationName: "OperatoriGetFiltAsync",
cacheKey: currKey,
expiration: getRandTOut(redisLongTimeCache),
fetchFunc: async () => await dbController.OperatoriGetFiltAsync(codGruppo) ?? new List<AnagOperatoriModel>(),
tagList: [Utils.redisOprList]
);
}
/// <summary>
/// Elenco id Macchine che abbiano dati FLuxLog, nel periodo indicato
/// </summary>
@@ -1725,42 +1717,6 @@ namespace MP.SPEC.Data
return result;
}
/// <summary>
/// Elenco operatori filtrati x gruppo
/// </summary>
/// <param name="codGruppo"></param>
/// <returns></returns>
public async Task<List<AnagOperatoriModel>> OperatoriGetFiltAsync(string codGruppo)
{
using var activity = ActivitySource.StartActivity("OperatoriGetFiltAsync");
List<AnagOperatoriModel>? result = new List<AnagOperatoriModel>();
string source = "DB";
string keyGrp = codGruppo != "*" ? codGruppo : "ALL";
string currKey = $"{Utils.redisOprList}:{keyGrp}";
// cerco in redis dato valore sel idxMaccSel...
RedisValue rawData = await redisDb.StringGetAsync(currKey);
if (rawData.HasValue)
{
result = JsonConvert.DeserializeObject<List<AnagOperatoriModel>>($"{rawData}");
source = "REDIS";
}
else
{
result = await dbController.OperatoriGetFiltAsync(codGruppo);
// serializzo e salvo...
rawData = JsonConvert.SerializeObject(result);
await redisDb.StringSetAsync(currKey, rawData, getRandTOut(redisLongTimeCache));
}
if (result == null)
{
result = new List<AnagOperatoriModel>();
}
activity?.SetTag("result.count", result.Count);
activity?.Stop();
LogTrace($"OperatoriGetFiltAsync | Read from {source}: {activity?.Duration.TotalMilliseconds}ms"); activity?.SetTag("data.source", source);
return result;
}
/// <summary>
/// Elenco di tutti i parametri filtrati x idxMaccSel
/// </summary>
+1 -1
View File
@@ -5,7 +5,7 @@
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<RootNamespace>MP.SPEC</RootNamespace>
<Version>8.16.2605.2813</Version>
<Version>8.16.2605.2814</Version>
<UserSecretsId>1800a78a-6ff1-40f9-b490-87fb8bfc1394</UserSecretsId>
<SatelliteResourceLanguages>en</SatelliteResourceLanguages>
</PropertyGroup>
+1 -1
View File
@@ -1,6 +1,6 @@
<body>
<i>Modulo MAPOSPEC </i>
<h4>Versione: 8.16.2605.2813</h4>
<h4>Versione: 8.16.2605.2814</h4>
<br /> Note di rilascio:
<ul>
<li>
+1 -1
View File
@@ -1 +1 @@
8.16.2605.2813
8.16.2605.2814
+1 -1
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<item>
<version>8.16.2605.2813</version>
<version>8.16.2605.2814</version>
<url>https://nexus.steamware.net/repository/SWS/MP-SPEC/stable/LAST/MP.SPEC.zip</url>
<changelog>https://nexus.steamware.net/repository/SWS/MP-SPEC/stable/LAST/ChangeLog.html</changelog>
<mandatory>false</mandatory>