add update conversation status

This commit is contained in:
Jicheng Lu 2023-11-15 12:35:24 -06:00
parent 0e6fd94526
commit 1527cb1065
4 changed files with 38 additions and 0 deletions

View file

@ -32,6 +32,7 @@ public interface IBotSharpRepository
void UpdateConversationDialog(string conversationId, string dialogs);
List<StateKeyValue> GetConversationStates(string conversationId);
void UpdateConversationStates(string conversationId, List<StateKeyValue> states);
void UpdateConversationStatus(string conversationId, string status);
Conversation GetConversation(string conversationId);
List<Conversation> GetConversations(string userId);
List<Conversation> GetLastConversations();

View file

@ -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<string> logs)
{
throw new NotImplementedException();

View file

@ -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<Conversation>(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);

View file

@ -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<ConversationCollection>.Filter.Eq(x => x.Id, conversationId);
var foundConv = _dc.Conversations.Find(filter).FirstOrDefault();
if (foundConv == null) return;
var update = Builders<ConversationCollection>.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;