Refactor processors
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user