fix(FS Service): Added error handling on asset addition

feat(FS Service): Added setting string retrieval from newly added Setting enum
feat(FS Service): Added ability to deactivate the service via settings.
This commit is contained in:
Samuele Lorefice
2025-07-10 18:18:44 +02:00
parent 70adbee4d2
commit 409a32e1d2

View File

@@ -1,6 +1,7 @@
using Butter.Types;
using Lactose.Models;
using Lactose.Repositories;
using System.Data;
using System.Diagnostics;
using static System.String;
@@ -117,6 +118,11 @@ public class FileSystemScannerService(
];
protected override Task ExecuteAsync(CancellationToken stoppingToken) {
if(settingsRepository.Get(Settings.FolderScanEnabled.AsString())?.Value == "false") {
logger.LogInformation("Folder scanning is disabled. Service will not start.");
return Task.CompletedTask;
}
var service = new Task(() => ServiceLogic(stoppingToken));
service.Start();
return service;
@@ -127,7 +133,7 @@ public class FileSystemScannerService(
PeriodicTimer scanTimer;
logger.LogInformation("Filesystem Scan Service starting...");
var value = settingsRepository.Get("ScanServiceTimeInterval")?.Value;
var value = settingsRepository.Get(Settings.FolderScanInterval.AsString())?.Value;
if (value != null && !int.TryParse(value, out var interval)) {
logger.LogWarning("Invalid scan interval setting. Defaulting to 30 minutes.");
interval = 30; // Default to 30 minutes if parsing fails
@@ -211,9 +217,12 @@ public class FileSystemScannerService(
FileSize = finfo.Length,
Hash = []
};
//TODO: check if the file is already in the database
// Add the asset to the database
assetRepository.Insert(asset);
try { assetRepository.Insert(asset); }
catch (DuplicateNameException e) {
logger.LogError(e, $"Duplicate asset name \"{finfo.FullName}\", skipped."); }
}
);
}