Merge pull request #217 from iceljc/features/add-delete-conversation

add delete conversation
This commit is contained in:
Haiping 2023-11-26 10:36:31 -06:00 committed by GitHub
commit 80e157ae06
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 38 additions and 6 deletions

View file

@ -10,7 +10,7 @@ public interface IConversationService
Task<List<Conversation>> GetConversations();
Task<Conversation> UpdateConversationTitle(string id, string title);
Task<List<Conversation>> GetLastConversations();
Task DeleteConversation(string id);
Task<bool> DeleteConversation(string id);
/// <summary>
/// Send message to LLM

View file

@ -28,6 +28,7 @@ public interface IBotSharpRepository
#region Conversation
void CreateNewConversation(Conversation conversation);
bool DeleteConversation(string conversationId);
List<DialogElement> GetConversationDialogs(string conversationId);
void AppendConversationDialogs(string conversationId, List<DialogElement> dialogs);
List<StateKeyValue> GetConversationStates(string conversationId);

View file

@ -32,10 +32,13 @@ public partial class ConversationService : IConversationService
_logger = logger;
}
public Task DeleteConversation(string id)
public async Task<bool> DeleteConversation(string id)
{
throw new NotImplementedException();
var db = _services.GetRequiredService<IBotSharpRepository>();
var isDeleted = db.DeleteConversation(id);
return await Task.FromResult(isDeleted);
}
public async Task<Conversation> UpdateConversationTitle(string id, string title)
{
var db = _services.GetRequiredService<IBotSharpRepository>();

View file

@ -121,6 +121,11 @@ public class BotSharpDbContext : Database, IBotSharpRepository
throw new NotImplementedException();
}
public bool DeleteConversation(string conversationId)
{
throw new NotImplementedException();
}
public Conversation GetConversation(string conversationId)
{
throw new NotImplementedException();

View file

@ -5,7 +5,6 @@ using BotSharp.Abstraction.Users.Models;
using BotSharp.Abstraction.Agents.Models;
using MongoDB.Driver;
using BotSharp.Abstraction.Routing.Models;
namespace BotSharp.Core.Repository;
public class FileRepository : IBotSharpRepository
@ -625,6 +624,17 @@ public class FileRepository : IBotSharpRepository
}
}
public bool DeleteConversation(string conversationId)
{
if (string.IsNullOrEmpty(conversationId)) return false;
var dir = Path.Combine(_dbSettings.FileRepository, _conversationSettings.DataDir, conversationId);
if (!Directory.Exists(dir)) return false;
Directory.Delete(dir, true);
return true;
}
public List<DialogElement> GetConversationDialogs(string conversationId)
{
var dialogs = new List<DialogElement>();

View file

@ -83,9 +83,11 @@ public class ConversationController : ControllerBase, IApiAdapter
}
[HttpDelete("/conversation/{conversationId}")]
public async Task DeleteConversation([FromRoute] string conversationId)
public async Task<bool> DeleteConversation([FromRoute] string conversationId)
{
var service = _services.GetRequiredService<IConversationService>();
var conversationService = _services.GetRequiredService<IConversationService>();
var response = await conversationService.DeleteConversation(conversationId);
return response;
}
[HttpPost("/conversation/{agentId}/{conversationId}")]

View file

@ -627,6 +627,17 @@ public class MongoRepository : IBotSharpRepository
_dc.ConversationDialogs.InsertOne(dialog);
}
public bool DeleteConversation(string conversationId)
{
if (string.IsNullOrEmpty(conversationId)) return false;
var filterConv = Builders<ConversationCollection>.Filter.Eq(x => x.Id, conversationId);
var filterDialog = Builders<ConversationDialogCollection>.Filter.Eq(x => x.ConversationId, conversationId);
var dialogDeleted = _dc.ConversationDialogs.DeleteMany(filterDialog);
var convDeleted = _dc.Conversations.DeleteMany(filterConv);
return convDeleted.DeletedCount > 0 || dialogDeleted.DeletedCount > 0;
}
public List<DialogElement> GetConversationDialogs(string conversationId)
{
var dialogs = new List<DialogElement>();