diff --git a/src/Infrastructure/BotSharp.Abstraction/Crontab/Models/CrontabItemFilter.cs b/src/Infrastructure/BotSharp.Abstraction/Crontab/Models/CrontabItemFilter.cs index 71c82e05..7a949dc2 100644 --- a/src/Infrastructure/BotSharp.Abstraction/Crontab/Models/CrontabItemFilter.cs +++ b/src/Infrastructure/BotSharp.Abstraction/Crontab/Models/CrontabItemFilter.cs @@ -11,9 +11,6 @@ public class CrontabItemFilter : Pagination [JsonPropertyName("conversation_ids")] public IEnumerable? ConversationIds { get; set; } - [JsonPropertyName("titles")] - public IEnumerable? Titles { get; set; } - public CrontabItemFilter() { diff --git a/src/Infrastructure/BotSharp.Abstraction/Crontab/Models/ScheduleTaskArgs.cs b/src/Infrastructure/BotSharp.Abstraction/Crontab/Models/ScheduleTaskArgs.cs index b40819ec..df11160a 100644 --- a/src/Infrastructure/BotSharp.Abstraction/Crontab/Models/ScheduleTaskArgs.cs +++ b/src/Infrastructure/BotSharp.Abstraction/Crontab/Models/ScheduleTaskArgs.cs @@ -12,7 +12,7 @@ public class ScheduleTaskArgs public string Description { get; set; } = null!; [JsonPropertyName("to_do_list")] - public ScheduleTaskItemArgs[] Tasks { get; set; } = null!; + public ScheduleTaskItemArgs[] Tasks { get; set; } = []; } public class ScheduleTaskItemArgs diff --git a/src/Infrastructure/BotSharp.Core/Repository/FileRepository/FileRepository.Crontab.cs b/src/Infrastructure/BotSharp.Core/Repository/FileRepository/FileRepository.Crontab.cs index 9ee8ffb1..8ea21948 100644 --- a/src/Infrastructure/BotSharp.Core/Repository/FileRepository/FileRepository.Crontab.cs +++ b/src/Infrastructure/BotSharp.Core/Repository/FileRepository/FileRepository.Crontab.cs @@ -21,7 +21,7 @@ public partial class FileRepository } var cronFile = Path.Combine(baseDir, CRON_FILE); - var json = JsonSerializer.Serialize(cronFile, _options); + var json = JsonSerializer.Serialize(cron, _options); File.WriteAllText(cronFile, json); return true; } @@ -72,10 +72,6 @@ public partial class FileRepository { matched = matched && filter.UserIds.Contains(record.UserId); } - if (filter?.Titles != null) - { - matched = matched && filter.Titles.Contains(record.Title); - } if (!matched) continue; diff --git a/src/Plugins/BotSharp.Plugin.MongoStorage/Collections/CrontabItemDocument.cs b/src/Plugins/BotSharp.Plugin.MongoStorage/Collections/CrontabItemDocument.cs index a2bba5f4..10e633d7 100644 --- a/src/Plugins/BotSharp.Plugin.MongoStorage/Collections/CrontabItemDocument.cs +++ b/src/Plugins/BotSharp.Plugin.MongoStorage/Collections/CrontabItemDocument.cs @@ -11,6 +11,7 @@ public class CrontabItemDocument : MongoBase public string Cron { get; set; } public string Title { get; set; } public string Description { get; set; } + public IEnumerable Tasks { get; set; } = []; public DateTime CreatedTime { get; set; } = DateTime.UtcNow; public static CrontabItem ToDomainModel(CrontabItemDocument item) @@ -24,6 +25,7 @@ public class CrontabItemDocument : MongoBase Cron = item.Cron, Title = item.Title, Description = item.Description, + Tasks = item.Tasks?.Select(x => CronTaskMongoElement.ToDomainElement(x))?.ToArray() ?? [], CreatedTime = item.CreatedTime }; } @@ -39,6 +41,7 @@ public class CrontabItemDocument : MongoBase Cron = item.Cron, Title = item.Title, Description = item.Description, + Tasks = item.Tasks?.Select(x => CronTaskMongoElement.ToMongoElement(x))?.ToList() ?? [], CreatedTime = item.CreatedTime }; } diff --git a/src/Plugins/BotSharp.Plugin.MongoStorage/Models/CronTaskMongoElement.cs b/src/Plugins/BotSharp.Plugin.MongoStorage/Models/CronTaskMongoElement.cs new file mode 100644 index 00000000..099286b8 --- /dev/null +++ b/src/Plugins/BotSharp.Plugin.MongoStorage/Models/CronTaskMongoElement.cs @@ -0,0 +1,30 @@ +using BotSharp.Abstraction.Crontab.Models; + +namespace BotSharp.Plugin.MongoStorage.Models; + +public class CronTaskMongoElement +{ + public string Topic { get; set; } + public string Script { get; set; } + public string Language { get; set; } + + public static CronTaskMongoElement ToMongoElement(ScheduleTaskItemArgs model) + { + return new CronTaskMongoElement + { + Topic = model.Topic, + Script = model.Script, + Language = model.Language + }; + } + + public static ScheduleTaskItemArgs ToDomainElement(CronTaskMongoElement model) + { + return new ScheduleTaskItemArgs + { + Topic = model.Topic, + Script = model.Script, + Language = model.Language + }; + } +} diff --git a/src/Plugins/BotSharp.Plugin.MongoStorage/Repository/MongoRepository.Crontab.cs b/src/Plugins/BotSharp.Plugin.MongoStorage/Repository/MongoRepository.Crontab.cs index f499e186..43611e71 100644 --- a/src/Plugins/BotSharp.Plugin.MongoStorage/Repository/MongoRepository.Crontab.cs +++ b/src/Plugins/BotSharp.Plugin.MongoStorage/Repository/MongoRepository.Crontab.cs @@ -46,10 +46,6 @@ public partial class MongoRepository { cronFilters.Add(cronBuilder.In(x => x.ConversationId, filter.ConversationIds)); } - if (filter?.Titles != null) - { - cronFilters.Add(cronBuilder.In(x => x.Title, filter.Titles)); - } if (filter?.UserIds != null) { cronFilters.Add(cronBuilder.In(x => x.UserId, filter.UserIds));