Refactor processors

This commit is contained in:
Michał Zieliński
2025-06-07 13:51:27 +02:00
parent 787df8b838
commit d05dc34e97
14 changed files with 2996 additions and 917 deletions

View File

@@ -26,6 +26,10 @@ public class MorskaD1Importer : MorskaBaseImporter
private DateTime? EndDate { get; set; }
private bool IsEnabled { get; set; }
// Cache for sheet data
private IList<IList<object>>? _cachedSheetData;
private string? _cachedDataKey;
public MorskaD1Importer(
AppDbContext db,
SpreadsheetsResource.ValuesResource googleSheetValues,
@@ -43,6 +47,10 @@ public class MorskaD1Importer : MorskaBaseImporter
_logger.LogInformation("{ImporterType}: Starting import for {ImportWorkerName} ({ImportWorkerId})",
ImporterType, importWorker.Name, importWorker.Id);
// ✅ Clear cache at start
_cachedSheetData = null;
_cachedDataKey = null;
LoadConfiguration(importWorker);
if (!ShouldPerformImport(importWorker))
@@ -65,6 +73,46 @@ public class MorskaD1Importer : MorskaBaseImporter
ImporterType, importWorker.Name, importWorker.Id);
throw;
}
finally
{
// ✅ Clear cache after import
_cachedSheetData = null;
_cachedDataKey = null;
}
}
// ✅ Dodaj metodę cache
private IList<IList<object>>? GetSheetData()
{
var currentDataKey = $"{SheetId}#{SheetTabName}#{DataRange}";
if (_cachedSheetData != null && _cachedDataKey == currentDataKey)
{
_logger.LogDebug("{ImporterType}: Using cached sheet data for {DataKey}",
ImporterType, currentDataKey);
return _cachedSheetData;
}
try
{
_logger.LogDebug("{ImporterType}: Fetching data from Google Sheets API for {DataKey}",
ImporterType, currentDataKey);
var dataRangeResponse = _googleSheetValues.Get(SheetId!, $"{SheetTabName}!{DataRange}").Execute();
_cachedSheetData = dataRangeResponse.Values;
_cachedDataKey = currentDataKey;
_logger.LogDebug("{ImporterType}: Cached {RowCount} rows from Google Sheet",
ImporterType, _cachedSheetData?.Count ?? 0);
return _cachedSheetData;
}
catch (Exception e)
{
_logger.LogError(e, "{ImporterType}: Error fetching data from Google Sheet {SheetId}",
ImporterType, SheetId);
throw;
}
}
private void LoadConfiguration(Layer importWorker)
@@ -164,8 +212,8 @@ public class MorskaD1Importer : MorskaBaseImporter
try
{
var dataRangeResponse = _googleSheetValues.Get(SheetId!, $"{SheetTabName}!{DataRange}").Execute();
var data = dataRangeResponse.Values;
// ✅ Użyj cache zamiast bezpośredniego API
var data = GetSheetData();
if (data == null || data.Count < 2)
{
@@ -239,10 +287,10 @@ public class MorskaD1Importer : MorskaBaseImporter
try
{
var dataRangeResponse = _googleSheetValues.Get(SheetId!, $"{SheetTabName}!{DataRange}").Execute();
var data = dataRangeResponse.Values;
// ✅ Użyj cache zamiast bezpośredniego API
var data = GetSheetData();
_logger.LogDebug("{ImporterType}: Retrieved {RowCount} rows from Google Sheet",
_logger.LogDebug("{ImporterType}: Using data with {RowCount} rows from cache",
ImporterType, data?.Count ?? 0);
var newRecords = (from t in data
@@ -279,8 +327,7 @@ public class MorskaD1Importer : MorskaBaseImporter
}
catch (Exception e)
{
_logger.LogError(e, "{ImporterType}: Error importing data from Google Sheet {SheetId}",
ImporterType, SheetId);
_logger.LogError(e, "{ImporterType}: Error importing data from cached sheet data", ImporterType);
throw;
}
}