using BotSharp.Platform.Abstraction; using BotSharp.Platform.Models; using DotNetToolkit; using Microsoft.Extensions.Configuration; using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace BotSharp.Core { public abstract class PlatformBuilderBase where TAgent : AgentBase { public IAgentStorage Storage { get; set; } public IConfiguration PlatformConfig { get; set; } public List GetAllAgents() { GetStorage(); return Storage.Query(); } public TAgent GetAgentById(string agentId) { GetStorage(); return Storage.FetchById(agentId); } public TAgent GetAgentByName(string agentName) { GetStorage(); return Storage.FetchByName(agentName); } public virtual bool SaveAgent(TAgent agent) { GetStorage(); // default save agent in FileStorage Storage.Persist(agent); return true; } private IAgentStorage GetStorage() { if (Storage == null) { string storageName = PlatformConfig.GetValue("AgentStorage"); switch (storageName) { case "AgentStorageInRedis": Storage = Activator.CreateInstance>(); break; case "AgentStorageInMemory": Storage = Activator.CreateInstance>(); break; } } return Storage; } } }