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:
@@ -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."); }
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user