From 0647f10ca12aee2c00ca1a5c0c834c93a37b1761 Mon Sep 17 00:00:00 2001 From: LD-Reborn Date: Sun, 31 Aug 2025 03:02:43 +0200 Subject: [PATCH] Renamed IScriptable to IScriptContainer, added Stop() function to Calls --- src/Indexer/Calls.cs | 22 ++++++++++++++++++- src/Indexer/Models/CallModels.cs | 1 + ...ableModels.cs => ScriptContainerModels.cs} | 2 +- .../ScriptContainers/CSharpScriptContainer.cs | 2 +- .../ScriptContainers/PythonScriptContainer.cs | 2 +- src/Indexer/Worker.cs | 4 ++-- src/Indexer/WorkerManager.cs | 4 ++-- 7 files changed, 29 insertions(+), 8 deletions(-) rename src/Indexer/Models/{ScriptableModels.cs => ScriptContainerModels.cs} (88%) diff --git a/src/Indexer/Calls.cs b/src/Indexer/Calls.cs index 696bd45..ac79767 100644 --- a/src/Indexer/Calls.cs +++ b/src/Indexer/Calls.cs @@ -38,6 +38,11 @@ public class RunOnceCall : ICall public void Dispose() {} + public void Stop() + { + Worker.Scriptable.Stop(); + } + private async void IndexAsync() { try @@ -73,7 +78,7 @@ public class RunOnceCall : ICall public class IntervalCall : ICall { public System.Timers.Timer Timer; - public IScriptable Scriptable; + public IScriptContainer Scriptable; public ILogger _logger; public bool IsEnabled { get; set; } public bool IsExecuting { get; set; } @@ -145,6 +150,11 @@ public class IntervalCall : ICall Timer.Dispose(); } + public void Stop() + { + Scriptable.Stop(); + } + public HealthCheckResult HealthCheck() { if (!Scriptable.UpdateInfo.Successful) @@ -241,6 +251,11 @@ public class ScheduleCall : ICall Scheduler.DeleteJob(JobKey); } + public void Stop() + { + Worker.Scriptable.Stop(); + } + private async Task CreateJob() { if (CallConfig.Schedule is null) @@ -341,6 +356,11 @@ public class FileUpdateCall : ICall _watcher.Dispose(); } + public void Stop() + { + Worker.Scriptable.Stop(); + } + private void OnFileChanged(object sender, FileSystemEventArgs e) { if (!IsEnabled) diff --git a/src/Indexer/Models/CallModels.cs b/src/Indexer/Models/CallModels.cs index ed06c73..b56a798 100644 --- a/src/Indexer/Models/CallModels.cs +++ b/src/Indexer/Models/CallModels.cs @@ -19,6 +19,7 @@ public interface ICall public void Enable(); public void Disable(); public void Dispose(); + public void Stop(); public string Name { get; set; } public bool IsEnabled { get; set; } public bool IsExecuting { get; set; } diff --git a/src/Indexer/Models/ScriptableModels.cs b/src/Indexer/Models/ScriptContainerModels.cs similarity index 88% rename from src/Indexer/Models/ScriptableModels.cs rename to src/Indexer/Models/ScriptContainerModels.cs index 88f5a62..32cc950 100644 --- a/src/Indexer/Models/ScriptableModels.cs +++ b/src/Indexer/Models/ScriptContainerModels.cs @@ -1,6 +1,6 @@ namespace Indexer.Models; -public interface IScriptable +public interface IScriptContainer { ScriptToolSet ToolSet { get; set; } ScriptUpdateInfo UpdateInfo { get; set; } diff --git a/src/Indexer/ScriptContainers/CSharpScriptContainer.cs b/src/Indexer/ScriptContainers/CSharpScriptContainer.cs index 4b60b92..91e4f92 100644 --- a/src/Indexer/ScriptContainers/CSharpScriptContainer.cs +++ b/src/Indexer/ScriptContainers/CSharpScriptContainer.cs @@ -5,7 +5,7 @@ using Indexer.Models; namespace Indexer.ScriptContainers; -public class CSharpScriptable : IScriptable +public class CSharpScriptable : IScriptContainer { public ScriptToolSet ToolSet { get; set; } public ScriptUpdateInfo UpdateInfo { get; set; } diff --git a/src/Indexer/ScriptContainers/PythonScriptContainer.cs b/src/Indexer/ScriptContainers/PythonScriptContainer.cs index 7f73a53..a5bb249 100644 --- a/src/Indexer/ScriptContainers/PythonScriptContainer.cs +++ b/src/Indexer/ScriptContainers/PythonScriptContainer.cs @@ -3,7 +3,7 @@ using Indexer.Models; namespace Indexer.ScriptContainers; -public class PythonScriptable : IScriptable +public class PythonScriptable : IScriptContainer { public ScriptToolSet ToolSet { get; set; } public PyObject? pyToolSet; diff --git a/src/Indexer/Worker.cs b/src/Indexer/Worker.cs index c196484..b4996b2 100644 --- a/src/Indexer/Worker.cs +++ b/src/Indexer/Worker.cs @@ -5,13 +5,13 @@ public class Worker { public string Name { get; set; } public WorkerConfig Config { get; set; } - public IScriptable Scriptable { get; set; } + public IScriptContainer Scriptable { get; set; } public List Calls { get; set; } public bool IsExecuting { get; set; } public DateTime? LastExecution { get; set; } public DateTime? LastSuccessfulExecution { get; set; } - public Worker(string name, WorkerConfig workerConfig, IScriptable scriptable) + public Worker(string name, WorkerConfig workerConfig, IScriptContainer scriptable) { Name = name; Config = workerConfig; diff --git a/src/Indexer/WorkerManager.cs b/src/Indexer/WorkerManager.cs index 7399d7c..1b9ac26 100644 --- a/src/Indexer/WorkerManager.cs +++ b/src/Indexer/WorkerManager.cs @@ -106,7 +106,7 @@ public class WorkerManager return preexistingDateTime; } - public IScriptable GetScriptable(ScriptToolSet toolSet) + public IScriptContainer GetScriptable(ScriptToolSet toolSet) { string fileName = toolSet.FilePath ?? throw new IndexerConfigurationException($"\"Script\" not set for Worker \"{toolSet.Name}\""); foreach (Type type in types) @@ -115,7 +115,7 @@ public class WorkerManager bool? isInstance = method is not null ? (bool?)method.Invoke(null, [fileName]) : null; if (isInstance == true) { - IScriptable? instance = (IScriptable?)Activator.CreateInstance(type, [toolSet, _logger]); + IScriptContainer? instance = (IScriptContainer?)Activator.CreateInstance(type, [toolSet, _logger]); if (instance is null) { _logger.LogError("Unable to initialize script: \"{fileName}\"", fileName);