ChatApi/Services/Bot/Structs/ChatPersistence.cs
2024-11-28 22:49:03 -03:00

46 lines
1.4 KiB
C#

using ChatApi.Services.Classifier;
using MongoDB.Driver;
namespace ChatApi.Services.Bot.Structs
{
public class ChatPersistence
{
private readonly IMongoCollection<ChatState> _collection;
private string _botName;
private ChatPersistence(DomvsDatabaseSettings config)
{
var client = new MongoClient(config.ConnectionString);
var database = client.GetDatabase(config.DatabaseName);
_collection = database.GetCollection<ChatState>(config.ChatBotRHCollectionName);
}
public static ChatPersistence Create(DomvsDatabaseSettings config)
{
return new ChatPersistence(config);
}
public ChatPersistence SetBotName(string botName)
{
_botName = botName;
return this;
}
public ChatState GetState(string usuarioId)
{
return _collection.Find(x => x.UsuarioId == usuarioId).FirstOrDefault();
}
public void DeleteState(string usuarioId)
{
_collection.DeleteOne(x => x.UsuarioId == usuarioId);
}
public void SaveState(ChatState estado)
{
var filtro = Builders<ChatState>.Filter.Eq(x => x.UsuarioId, estado.UsuarioId);
_collection.ReplaceOne(filtro, estado, new ReplaceOptions { IsUpsert = true });
}
}
}