Skip to content

Commit cee7956

Browse files
authored
Merge pull request #1255 from yileicn/master
optimize CreateNewConversation use async method
2 parents 6eaecca + 99818b1 commit cee7956

File tree

4 files changed

+20
-12
lines changed

4 files changed

+20
-12
lines changed

src/Infrastructure/BotSharp.Abstraction/Repositories/IBotSharpRepository.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ bool DeleteAgentCodeScripts(string agentId, List<AgentCodeScript>? scripts = nul
127127
#endregion
128128

129129
#region Conversation
130-
void CreateNewConversation(Conversation conversation)
130+
Task CreateNewConversation(Conversation conversation)
131131
=> throw new NotImplementedException();
132132
bool DeleteConversations(IEnumerable<string> conversationIds)
133133
=> throw new NotImplementedException();

src/Infrastructure/BotSharp.Core/Conversations/Services/ConversationService.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ public async Task<Conversation> NewConversation(Conversation sess)
112112
record.Tags = sess.Tags;
113113
record.Title = string.IsNullOrEmpty(record.Title) ? "New Conversation" : record.Title;
114114

115-
db.CreateNewConversation(record);
115+
await db.CreateNewConversation(record);
116116

117117
var hooks = _services.GetHooks<IConversationHook>(record.AgentId);
118118

src/Infrastructure/BotSharp.Core/Repository/FileRepository/FileRepository.Conversation.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ public partial class FileRepository
88
private static readonly object _dialogLock = new object();
99
private static readonly object _stateLock = new object();
1010

11-
public void CreateNewConversation(Conversation conversation)
11+
public async Task CreateNewConversation(Conversation conversation)
1212
{
1313
var utcNow = DateTime.UtcNow;
1414
conversation.CreatedTime = utcNow;
@@ -24,31 +24,31 @@ public void CreateNewConversation(Conversation conversation)
2424
var convFile = Path.Combine(dir, CONVERSATION_FILE);
2525
if (!File.Exists(convFile))
2626
{
27-
File.WriteAllText(convFile, JsonSerializer.Serialize(conversation, _options));
27+
await File.WriteAllTextAsync(convFile, JsonSerializer.Serialize(conversation, _options));
2828
}
2929

3030
var dialogFile = Path.Combine(dir, DIALOG_FILE);
3131
if (!File.Exists(dialogFile))
3232
{
33-
File.WriteAllText(dialogFile, "[]");
33+
await File.WriteAllTextAsync(dialogFile, "[]");
3434
}
3535

3636
var stateFile = Path.Combine(dir, STATE_FILE);
3737
if (!File.Exists(stateFile))
3838
{
39-
File.WriteAllText(stateFile, "[]");
39+
await File.WriteAllTextAsync(stateFile, "[]");
4040
}
4141

4242
var latestStateFile = Path.Combine(dir, CONV_LATEST_STATE_FILE);
4343
if (!File.Exists(latestStateFile))
4444
{
45-
File.WriteAllText(latestStateFile, "{}");
45+
await File.WriteAllTextAsync(latestStateFile, "{}");
4646
}
4747

4848
var breakpointFile = Path.Combine(dir, BREAKPOINT_FILE);
4949
if (!File.Exists(breakpointFile))
5050
{
51-
File.WriteAllText(breakpointFile, "[]");
51+
await File.WriteAllTextAsync(breakpointFile, "[]");
5252
}
5353
}
5454

src/Plugins/BotSharp.Plugin.MongoStorage/Repository/MongoRepository.Conversation.cs

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ namespace BotSharp.Plugin.MongoStorage.Repository;
66

77
public partial class MongoRepository
88
{
9-
public void CreateNewConversation(Conversation conversation)
9+
public async Task CreateNewConversation(Conversation conversation)
1010
{
1111
if (conversation == null) return;
1212

@@ -49,9 +49,17 @@ public void CreateNewConversation(Conversation conversation)
4949
UpdatedTime = utcNow
5050
};
5151

52-
_dc.Conversations.InsertOne(convDoc);
53-
_dc.ConversationDialogs.InsertOne(dialogDoc);
54-
_dc.ConversationStates.InsertOne(stateDoc);
52+
try
53+
{
54+
await _dc.Conversations.InsertOneAsync(convDoc);
55+
await _dc.ConversationDialogs.InsertOneAsync(dialogDoc);
56+
await _dc.ConversationStates.InsertOneAsync(stateDoc);
57+
}
58+
catch (MongoWriteException ex) when (ex.WriteError?.Code == 11000)
59+
{
60+
//11000 duplicate key error
61+
return;
62+
}
5563
}
5664

5765
public bool DeleteConversations(IEnumerable<string> conversationIds)

0 commit comments

Comments
 (0)