Skip to content

Commit e632f96

Browse files
authored
Merge pull request #1300 from iceljc/master
fix conv file mongo doc id and add time
2 parents 4cf1fa2 + e1c9b66 commit e632f96

3 files changed

Lines changed: 39 additions & 16 deletions

File tree

src/Infrastructure/BotSharp.Abstraction/Conversations/Models/ConversationFile.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,16 @@ namespace BotSharp.Abstraction.Conversations.Models;
22

33
public class ConversationFile
44
{
5+
[JsonPropertyName("conversation_id")]
56
public string ConversationId { get; set; }
7+
8+
[JsonPropertyName("thumbnail")]
9+
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
610
public string? Thumbnail { get; set; }
11+
12+
[JsonPropertyName("created_time")]
13+
public DateTime CreatedTime { get; set; } = DateTime.UtcNow;
14+
15+
[JsonPropertyName("updated_time")]
16+
public DateTime UpdatedTime { get; set; } = DateTime.UtcNow;
717
}

src/Plugins/BotSharp.Plugin.MongoStorage/Collections/ConversationFileDocument.cs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,17 @@ public class ConversationFileDocument : MongoBase
66
{
77
public string ConversationId { get; set; }
88
public string? Thumbnail { get; set; }
9+
public DateTime CreatedTime { get; set; }
10+
public DateTime UpdatedTime { get; set; }
911

1012
public static ConversationFile ToDomainModel(ConversationFileDocument model)
1113
{
1214
return new ConversationFile
1315
{
1416
ConversationId = model.ConversationId,
15-
Thumbnail = model.Thumbnail
17+
Thumbnail = model.Thumbnail,
18+
CreatedTime = model.CreatedTime,
19+
UpdatedTime = model.UpdatedTime
1620
};
1721
}
1822

@@ -21,7 +25,9 @@ public static ConversationFileDocument ToMongoModel(ConversationFile model)
2125
return new ConversationFileDocument
2226
{
2327
ConversationId = model.ConversationId,
24-
Thumbnail = model.Thumbnail
28+
Thumbnail = model.Thumbnail,
29+
CreatedTime = model.CreatedTime,
30+
UpdatedTime = model.UpdatedTime
2531
};
2632
}
2733
}

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

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -805,21 +805,28 @@ public async Task<bool> SaveConversationFiles(List<ConversationFile> files)
805805
try
806806
{
807807
var builder = Builders<ConversationFileDocument>.Filter;
808-
var operations = files.Where(x => !string.IsNullOrEmpty(x.ConversationId))
809-
.Select(file =>
810-
{
811-
var fileDoc = ConversationFileDocument.ToMongoModel(file);
812-
var filter = builder.Eq(x => x.ConversationId, file.ConversationId);
813-
return new ReplaceOneModel<ConversationFileDocument>(filter, fileDoc)
814-
{
815-
IsUpsert = true
816-
};
817-
})
818-
.ToList();
819-
820-
if (!operations.IsNullOrEmpty())
808+
var ops = files.Where(x => !string.IsNullOrEmpty(x.ConversationId))
809+
.Select(file =>
810+
{
811+
var updateBuilder = Builders<ConversationFileDocument>.Update
812+
.Set(y => y.Thumbnail, file.Thumbnail)
813+
.Set(y => y.UpdatedTime, DateTime.UtcNow)
814+
.SetOnInsert(y => y.Id, Guid.NewGuid().ToString())
815+
.SetOnInsert(y => y.ConversationId, file.ConversationId)
816+
.SetOnInsert(y => y.CreatedTime, DateTime.UtcNow);
817+
818+
var filter = builder.Eq(y => y.ConversationId, file.ConversationId);
819+
820+
return new UpdateOneModel<ConversationFileDocument>(
821+
filter,
822+
updateBuilder
823+
) { IsUpsert = true };
824+
})
825+
.ToList();
826+
827+
if (!ops.IsNullOrEmpty())
821828
{
822-
await _dc.ConversationFiles.BulkWriteAsync(operations, new BulkWriteOptions { IsOrdered = false });
829+
await _dc.ConversationFiles.BulkWriteAsync(ops, new BulkWriteOptions { IsOrdered = false });
823830
}
824831

825832
return true;

0 commit comments

Comments
 (0)