37 lines
1.3 KiB
C#
37 lines
1.3 KiB
C#
using ChatServerSpace.Models;
|
|
using MongoDB.Driver;
|
|
|
|
namespace ChatServerSpace.Services
|
|
{
|
|
public class MongoDbChatHistoryService : IChatHistoryService
|
|
{
|
|
private readonly IMongoCollection<ChatMessage> _messages;
|
|
|
|
public MongoDbChatHistoryService(IConfiguration config)
|
|
{
|
|
var connectionString = config["MongoDB:ConnectionString"];
|
|
var databaseName = config["MongoDB:DatabaseName"];
|
|
var collectionName = config["MongoDB:CollectionName"];
|
|
|
|
var client = new MongoClient(connectionString);
|
|
var database = client.GetDatabase(databaseName);
|
|
_messages = database.GetCollection<ChatMessage>(collectionName);
|
|
}
|
|
|
|
public async Task SaveMessageAsync(ChatMessage message)
|
|
{
|
|
await _messages.InsertOneAsync(message);
|
|
}
|
|
|
|
public async Task<List<ChatMessage>> GetSessionHistoryAsync(string sessionId)
|
|
{
|
|
var filter = Builders<ChatMessage>.Filter.Eq(m => m.SessionId, sessionId);
|
|
var sort = Builders<ChatMessage>.Sort.Ascending(m => m.Timestamp);
|
|
|
|
return await _messages.Find(filter)
|
|
.Sort(sort)
|
|
.ToListAsync();
|
|
}
|
|
}
|
|
}
|