using BotSharp.Platform.Abstraction; using BotSharp.Platform.Models; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace BotSharp.Core.AgentStorage { /// /// Save agent instance into memory. /// Caution: Data will be lost once application restarts. /// public class AgentStorageInMemory : IAgentStorage where TAgent : AgentBase { private static Dictionary agents; public AgentStorageInMemory() { if (agents == null) agents = new Dictionary(); } public async Task FetchById(string agentId) { if (agents.ContainsKey(agentId)) { return agents[agentId]; } else { return null; } } public async Task FetchByName(string agentName) { var data = agents.FirstOrDefault(x => x.Value.Name == agentName); return data.Value; } public async Task Persist(TAgent agent) { if (String.IsNullOrEmpty(agent.Id)) { agent.Id = Guid.NewGuid().ToString(); agents[agent.Id] = agent; } else { agents[agent.Id] = agent; } return true; } public async Task PurgeAllAgents() { int count = agents.Count; agents.Clear(); return count; } public async Task> Query() { return agents.Select(x => x.Value).ToList(); } } }