46 lines
1.4 KiB
C#
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 });
|
|
}
|
|
}
|
|
}
|