diff --git a/src/Indexer/Calls.cs b/src/Indexer/Calls.cs index 2b150cd..57a384e 100644 --- a/src/Indexer/Calls.cs +++ b/src/Indexer/Calls.cs @@ -280,11 +280,22 @@ public class FileUpdateCall : ICall { throw new IndexerConfigurationException($"Path not set for a Call in Worker \"{Worker.Name}\""); } + + List events = callConfig.Events ?? []; + bool allEvents = events.Count == 0; + List filters = callConfig.Filters ?? []; + bool includeSubdirectories = callConfig.IncludeSubdirectories ?? false; + _watcher = new FileSystemWatcher(CallConfig.Path); - _watcher.Created += OnFileChanged; - _watcher.Changed += OnFileChanged; - _watcher.Deleted += OnFileChanged; - _watcher.Renamed += OnFileChanged; + if (allEvents || events.Contains("Created")) _watcher.Created += OnFileChanged; + if (allEvents || events.Contains("Changed")) _watcher.Changed += OnFileChanged; + if (allEvents || events.Contains("Deleted")) _watcher.Deleted += OnFileChanged; + if (allEvents || events.Contains("Renamed")) _watcher.Renamed += OnFileChanged; + foreach (string filter in filters) + { + _watcher.Filters.Add(filter); + } + _watcher.IncludeSubdirectories = includeSubdirectories; _watcher.EnableRaisingEvents = true; } diff --git a/src/Indexer/Models/CallModels.cs b/src/Indexer/Models/CallModels.cs index 77c1407..00314f0 100644 --- a/src/Indexer/Models/CallModels.cs +++ b/src/Indexer/Models/CallModels.cs @@ -1,11 +1,16 @@ using Microsoft.Extensions.Diagnostics.HealthChecks; +namespace Indexer.Models; + public class CallConfig { public required string Type { get; set; } public long? Interval { get; set; } // For Type: Interval public string? Path { get; set; } // For Type: FileSystemWatcher public string? Schedule { get; set; } // For Type: Schedule + public List? Events { get; set; } // For Type: Schedule + public List? Filters { get; set; } // For Type: Schedule + public bool? IncludeSubdirectories { get; set; } // For Type: Schedule } public interface ICall { diff --git a/src/Indexer/appsettings.Development.json b/src/Indexer/appsettings.Development.json index eab8a9e..2a7d06c 100644 --- a/src/Indexer/appsettings.Development.json +++ b/src/Indexer/appsettings.Development.json @@ -34,7 +34,10 @@ }, { "Type": "fileupdate", - "Path": "./Scripts/example_content" + "Path": "./Scripts/example_content", + "Events": ["Created", "Changed", "Deleted", "Renamed"], + "Filters": ["*.md", "*.txt"], + "IncludeSubdirectories": true } ] }