From 5018e34896c51844f82c2223fca2e6af878afea3 Mon Sep 17 00:00:00 2001 From: Jicheng Lu Date: Sun, 24 Mar 2024 23:40:15 -0500 Subject: [PATCH] fix validation and truncate message --- .../Agents/RoutingRuleUpdateModel.cs | 2 +- .../MongoRepository.Conversation.cs | 21 +++++++++++-------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/Infrastructure/BotSharp.OpenAPI/ViewModels/Agents/RoutingRuleUpdateModel.cs b/src/Infrastructure/BotSharp.OpenAPI/ViewModels/Agents/RoutingRuleUpdateModel.cs index 1f77416e9..4f2635234 100644 --- a/src/Infrastructure/BotSharp.OpenAPI/ViewModels/Agents/RoutingRuleUpdateModel.cs +++ b/src/Infrastructure/BotSharp.OpenAPI/ViewModels/Agents/RoutingRuleUpdateModel.cs @@ -5,7 +5,7 @@ namespace BotSharp.OpenAPI.ViewModels.Agents; public class RoutingRuleUpdateModel { public string Field { get; set; } - public string Description { get; set; } + public string? Description { get; set; } public bool Required { get; set; } public string? RedirectTo { get; set; } diff --git a/src/Plugins/BotSharp.Plugin.MongoStorage/Repository/MongoRepository.Conversation.cs b/src/Plugins/BotSharp.Plugin.MongoStorage/Repository/MongoRepository.Conversation.cs index 824998e53..6c2f0fb5d 100644 --- a/src/Plugins/BotSharp.Plugin.MongoStorage/Repository/MongoRepository.Conversation.cs +++ b/src/Plugins/BotSharp.Plugin.MongoStorage/Repository/MongoRepository.Conversation.cs @@ -381,23 +381,26 @@ public bool TruncateConversation(string conversationId, string messageId, bool c var refTime = foundDialog.Dialogs.ElementAt(foundIdx).MetaData.CreateTime; var stateFilter = Builders.Filter.Eq(x => x.ConversationId, conversationId); var foundStates = _dc.ConversationStates.Find(stateFilter).FirstOrDefault(); - if (foundStates == null || foundStates.States.IsNullOrEmpty()) return false; - var truncatedStates = new List(); - foreach (var state in foundStates.States) + if (foundStates != null && !foundStates.States.IsNullOrEmpty()) { - var values = state.Values.Where(x => x.UpdateTime < refTime).ToList(); - if (values.Count == 0) continue; + var truncatedStates = new List(); + foreach (var state in foundStates.States) + { + var values = state.Values.Where(x => x.UpdateTime < refTime).ToList(); + if (values.Count == 0) continue; + + state.Values = values; + truncatedStates.Add(state); + } - state.Values = values; - truncatedStates.Add(state); + foundStates.States = truncatedStates; + _dc.ConversationStates.ReplaceOne(stateFilter, foundStates); } // Save foundDialog.Dialogs = truncatedDialogs; - foundStates.States = truncatedStates; _dc.ConversationDialogs.ReplaceOne(dialogFilter, foundDialog); - _dc.ConversationStates.ReplaceOne(stateFilter, foundStates); // Remove logs if (cleanLog)