From 1527cb10652acd7053ca9f3bc5dad2a90335e6b5 Mon Sep 17 00:00:00 2001 From: Jicheng Lu <103353@smsassist.com> Date: Wed, 15 Nov 2023 12:35:24 -0600 Subject: [PATCH] add update conversation status --- .../Repositories/IBotSharpRepository.cs | 1 + .../Repository/BotSharpDbContext.cs | 5 +++++ .../BotSharp.Core/Repository/FileRepository.cs | 17 +++++++++++++++++ .../Repository/MongoRepository.cs | 15 +++++++++++++++ 4 files changed, 38 insertions(+) diff --git a/src/Infrastructure/BotSharp.Abstraction/Repositories/IBotSharpRepository.cs b/src/Infrastructure/BotSharp.Abstraction/Repositories/IBotSharpRepository.cs index 39296024..95b85e15 100644 --- a/src/Infrastructure/BotSharp.Abstraction/Repositories/IBotSharpRepository.cs +++ b/src/Infrastructure/BotSharp.Abstraction/Repositories/IBotSharpRepository.cs @@ -32,6 +32,7 @@ public interface IBotSharpRepository void UpdateConversationDialog(string conversationId, string dialogs); List GetConversationStates(string conversationId); void UpdateConversationStates(string conversationId, List states); + void UpdateConversationStatus(string conversationId, string status); Conversation GetConversation(string conversationId); List GetConversations(string userId); List GetLastConversations(); diff --git a/src/Infrastructure/BotSharp.Core/Repository/BotSharpDbContext.cs b/src/Infrastructure/BotSharp.Core/Repository/BotSharpDbContext.cs index e0a0f0d3..eb2540d4 100644 --- a/src/Infrastructure/BotSharp.Core/Repository/BotSharpDbContext.cs +++ b/src/Infrastructure/BotSharp.Core/Repository/BotSharpDbContext.cs @@ -156,6 +156,11 @@ public class BotSharpDbContext : Database, IBotSharpRepository throw new NotImplementedException(); } + public void UpdateConversationStatus(string conversationId, string status) + { + throw new NotImplementedException(); + } + public void AddExectionLogs(string conversationId, List logs) { throw new NotImplementedException(); diff --git a/src/Infrastructure/BotSharp.Core/Repository/FileRepository.cs b/src/Infrastructure/BotSharp.Core/Repository/FileRepository.cs index 2ac5e5f6..8df8a1ee 100644 --- a/src/Infrastructure/BotSharp.Core/Repository/FileRepository.cs +++ b/src/Infrastructure/BotSharp.Core/Repository/FileRepository.cs @@ -694,6 +694,23 @@ public class FileRepository : IBotSharpRepository } } + public void UpdateConversationStatus(string conversationId, string status) + { + var convDir = FindConversationDirectory(conversationId); + if (!string.IsNullOrEmpty(convDir)) + { + var convFile = Path.Combine(convDir, "conversation.json"); + if (File.Exists(convFile)) + { + var json = File.ReadAllText(convFile); + var conv = JsonSerializer.Deserialize(json, _options); + conv.Status = status; + conv.UpdatedTime = DateTime.UtcNow; + File.WriteAllText(convFile, JsonSerializer.Serialize(conv, _options)); + } + } + } + public Conversation GetConversation(string conversationId) { var convDir = FindConversationDirectory(conversationId); diff --git a/src/Plugins/BotSharp.Plugin.MongoStorage/Repository/MongoRepository.cs b/src/Plugins/BotSharp.Plugin.MongoStorage/Repository/MongoRepository.cs index 2daec39a..abdf3479 100644 --- a/src/Plugins/BotSharp.Plugin.MongoStorage/Repository/MongoRepository.cs +++ b/src/Plugins/BotSharp.Plugin.MongoStorage/Repository/MongoRepository.cs @@ -683,6 +683,21 @@ public class MongoRepository : IBotSharpRepository _dc.Conversations.UpdateOne(filter, update); } + public void UpdateConversationStatus(string conversationId, string status) + { + if (string.IsNullOrEmpty(conversationId) || string.IsNullOrEmpty(status)) return; + + var filter = Builders.Filter.Eq(x => x.Id, conversationId); + var foundConv = _dc.Conversations.Find(filter).FirstOrDefault(); + if (foundConv == null) return; + + var update = Builders.Update + .Set(x => x.Status, status) + .Set(x => x.UpdatedTime, DateTime.UtcNow); + + _dc.Conversations.UpdateOne(filter, update); + } + public Conversation GetConversation(string conversationId) { if (string.IsNullOrEmpty(conversationId)) return null;