refine code
This commit is contained in:
parent
326bcd2355
commit
9ea4b0209a
|
|
@ -95,9 +95,7 @@ public partial class FileRepository
|
|||
UpdatedDateTime = DateTime.UtcNow
|
||||
};
|
||||
|
||||
var prefix = "#metadata";
|
||||
var postfix = "/metadata";
|
||||
var fileContent = $"{prefix}\n{JsonSerializer.Serialize(model, _options)}\n{postfix}\n\n{task.Content}";
|
||||
var fileContent = $"{AGENT_TASK_PREFIX}\n{JsonSerializer.Serialize(model, _options)}\n{AGENT_TASK_SUFFIX}\n\n{task.Content}";
|
||||
File.WriteAllText(taskFile, fileContent);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -33,6 +33,8 @@ public partial class FileRepository : IBotSharpRepository
|
|||
private const string STATE_FILE = "state.json";
|
||||
private const string EXECUTION_LOG_FILE = "execution.log";
|
||||
private const string PLUGIN_CONFIG_FILE = "config.json";
|
||||
private const string AGENT_TASK_PREFIX = "#metadata";
|
||||
private const string AGENT_TASK_SUFFIX = "/metadata";
|
||||
|
||||
public FileRepository(
|
||||
IServiceProvider services,
|
||||
|
|
@ -293,7 +295,8 @@ public partial class FileRepository : IBotSharpRepository
|
|||
var fileName = taskFile.Split(Path.DirectorySeparatorChar).Last();
|
||||
var id = fileName.Split('.').First();
|
||||
var data = File.ReadAllText(taskFile);
|
||||
var metaData = Regex.Match(data, @"#metadata.+/metadata", RegexOptions.Singleline);
|
||||
var pattern = $@"{AGENT_TASK_PREFIX}.+{AGENT_TASK_SUFFIX}";
|
||||
var metaData = Regex.Match(data, pattern, RegexOptions.Singleline);
|
||||
|
||||
if (!metaData.Success) return null;
|
||||
|
||||
|
|
@ -301,8 +304,9 @@ public partial class FileRepository : IBotSharpRepository
|
|||
if (task == null) return null;
|
||||
|
||||
task.Id = id;
|
||||
var content = Regex.Match(data, @"/metadata.+", RegexOptions.Singleline).Value;
|
||||
task.Content = content.Substring(9).Trim();
|
||||
pattern = $@"{AGENT_TASK_SUFFIX}.+";
|
||||
var content = Regex.Match(data, pattern, RegexOptions.Singleline).Value;
|
||||
task.Content = content.Substring(AGENT_TASK_SUFFIX.Length).Trim();
|
||||
return task;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -335,100 +335,6 @@ public partial class MongoRepository
|
|||
return agent.Templates?.FirstOrDefault(x => x.Name == templateName.ToLower())?.Content ?? string.Empty;
|
||||
}
|
||||
|
||||
|
||||
#region Task
|
||||
public PagedItems<AgentTask> GetAgentTasks(AgentTaskFilter filter)
|
||||
{
|
||||
var pager = filter.Pager ?? new Pagination();
|
||||
var builder = Builders<AgentTaskDocument>.Filter;
|
||||
var filters = new List<FilterDefinition<AgentTaskDocument>>() { builder.Empty };
|
||||
|
||||
if (!string.IsNullOrEmpty(filter.AgentId))
|
||||
{
|
||||
filters.Add(builder.Eq(x => x.AgentId, filter.AgentId));
|
||||
}
|
||||
|
||||
var filterDef = builder.And(filters);
|
||||
var sortDef = Builders<AgentTaskDocument>.Sort.Descending(x => x.CreatedTime);
|
||||
var totalTasks = _dc.AgentTasks.CountDocuments(filterDef);
|
||||
var taskDocs = _dc.AgentTasks.Find(filterDef).Sort(sortDef).Skip(pager.Offset).Limit(pager.Size).ToList();
|
||||
|
||||
var agentIds = taskDocs.Select(x => x.AgentId).Distinct().ToList();
|
||||
var agents = GetAgents(new AgentFilter { AgentIds = agentIds });
|
||||
|
||||
var tasks = taskDocs.Select(x => new AgentTask
|
||||
{
|
||||
Id = x.Id,
|
||||
Name = x.Name,
|
||||
Description = x.Description,
|
||||
Enabled = x.Enabled,
|
||||
AgentId = x.AgentId,
|
||||
Content = x.Content,
|
||||
CreatedDateTime = x.CreatedTime,
|
||||
UpdatedDateTime = x.UpdatedTime,
|
||||
Agent = agents.FirstOrDefault(a => a.Id == x.AgentId)
|
||||
}).ToList();
|
||||
|
||||
return new PagedItems<AgentTask>
|
||||
{
|
||||
Items = tasks,
|
||||
Count = (int)totalTasks
|
||||
};
|
||||
}
|
||||
|
||||
public AgentTask? GetAgentTask(string agentId, string taskId)
|
||||
{
|
||||
if (string.IsNullOrEmpty(taskId)) return null;
|
||||
|
||||
var taskDoc = _dc.AgentTasks.AsQueryable().FirstOrDefault(x => x.Id == taskId);
|
||||
if (taskDoc == null) return null;
|
||||
|
||||
var agentDoc = _dc.Agents.AsQueryable().FirstOrDefault(x => x.Id == taskDoc.AgentId);
|
||||
var agent = TransformAgentDocument(agentDoc);
|
||||
|
||||
var task = new AgentTask
|
||||
{
|
||||
Id = taskDoc.Id,
|
||||
Name = taskDoc.Name,
|
||||
Description = taskDoc.Description,
|
||||
Enabled = taskDoc.Enabled,
|
||||
AgentId = taskDoc.AgentId,
|
||||
Content = taskDoc.Content,
|
||||
CreatedDateTime = taskDoc.CreatedTime,
|
||||
UpdatedDateTime = taskDoc.UpdatedTime,
|
||||
Agent = agent
|
||||
};
|
||||
|
||||
return task;
|
||||
}
|
||||
|
||||
public void InsertAgentTask(AgentTask task)
|
||||
{
|
||||
var taskDoc = new AgentTaskDocument
|
||||
{
|
||||
Id = Guid.NewGuid().ToString(),
|
||||
Name = task.Name,
|
||||
Description = task.Description,
|
||||
Enabled = task.Enabled,
|
||||
AgentId = task.AgentId,
|
||||
Content = task.Content,
|
||||
CreatedTime = DateTime.UtcNow,
|
||||
UpdatedTime = DateTime.UtcNow
|
||||
};
|
||||
|
||||
_dc.AgentTasks.InsertOne(taskDoc);
|
||||
}
|
||||
|
||||
public bool DeleteAgentTask(string agentId, string taskId)
|
||||
{
|
||||
if (string.IsNullOrEmpty(taskId)) return false;
|
||||
|
||||
var filter = Builders<AgentTaskDocument>.Filter.Eq(x => x.Id, taskId);
|
||||
var taskDeleted = _dc.AgentTasks.DeleteOne(filter);
|
||||
return taskDeleted.DeletedCount > 0;
|
||||
}
|
||||
#endregion
|
||||
|
||||
public void BulkInsertAgents(List<Agent> agents)
|
||||
{
|
||||
if (agents.IsNullOrEmpty()) return;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,101 @@
|
|||
using BotSharp.Abstraction.Repositories.Filters;
|
||||
using BotSharp.Abstraction.Tasks.Models;
|
||||
using BotSharp.Plugin.MongoStorage.Collections;
|
||||
|
||||
namespace BotSharp.Plugin.MongoStorage.Repository;
|
||||
|
||||
public partial class MongoRepository
|
||||
{
|
||||
#region Task
|
||||
public PagedItems<AgentTask> GetAgentTasks(AgentTaskFilter filter)
|
||||
{
|
||||
var pager = filter.Pager ?? new Pagination();
|
||||
var builder = Builders<AgentTaskDocument>.Filter;
|
||||
var filters = new List<FilterDefinition<AgentTaskDocument>>() { builder.Empty };
|
||||
|
||||
if (!string.IsNullOrEmpty(filter.AgentId))
|
||||
{
|
||||
filters.Add(builder.Eq(x => x.AgentId, filter.AgentId));
|
||||
}
|
||||
|
||||
var filterDef = builder.And(filters);
|
||||
var sortDef = Builders<AgentTaskDocument>.Sort.Descending(x => x.CreatedTime);
|
||||
var totalTasks = _dc.AgentTasks.CountDocuments(filterDef);
|
||||
var taskDocs = _dc.AgentTasks.Find(filterDef).Sort(sortDef).Skip(pager.Offset).Limit(pager.Size).ToList();
|
||||
|
||||
var agentIds = taskDocs.Select(x => x.AgentId).Distinct().ToList();
|
||||
var agents = GetAgents(new AgentFilter { AgentIds = agentIds });
|
||||
|
||||
var tasks = taskDocs.Select(x => new AgentTask
|
||||
{
|
||||
Id = x.Id,
|
||||
Name = x.Name,
|
||||
Description = x.Description,
|
||||
Enabled = x.Enabled,
|
||||
AgentId = x.AgentId,
|
||||
Content = x.Content,
|
||||
CreatedDateTime = x.CreatedTime,
|
||||
UpdatedDateTime = x.UpdatedTime,
|
||||
Agent = agents.FirstOrDefault(a => a.Id == x.AgentId)
|
||||
}).ToList();
|
||||
|
||||
return new PagedItems<AgentTask>
|
||||
{
|
||||
Items = tasks,
|
||||
Count = (int)totalTasks
|
||||
};
|
||||
}
|
||||
|
||||
public AgentTask? GetAgentTask(string agentId, string taskId)
|
||||
{
|
||||
if (string.IsNullOrEmpty(taskId)) return null;
|
||||
|
||||
var taskDoc = _dc.AgentTasks.AsQueryable().FirstOrDefault(x => x.Id == taskId);
|
||||
if (taskDoc == null) return null;
|
||||
|
||||
var agentDoc = _dc.Agents.AsQueryable().FirstOrDefault(x => x.Id == taskDoc.AgentId);
|
||||
var agent = TransformAgentDocument(agentDoc);
|
||||
|
||||
var task = new AgentTask
|
||||
{
|
||||
Id = taskDoc.Id,
|
||||
Name = taskDoc.Name,
|
||||
Description = taskDoc.Description,
|
||||
Enabled = taskDoc.Enabled,
|
||||
AgentId = taskDoc.AgentId,
|
||||
Content = taskDoc.Content,
|
||||
CreatedDateTime = taskDoc.CreatedTime,
|
||||
UpdatedDateTime = taskDoc.UpdatedTime,
|
||||
Agent = agent
|
||||
};
|
||||
|
||||
return task;
|
||||
}
|
||||
|
||||
public void InsertAgentTask(AgentTask task)
|
||||
{
|
||||
var taskDoc = new AgentTaskDocument
|
||||
{
|
||||
Id = Guid.NewGuid().ToString(),
|
||||
Name = task.Name,
|
||||
Description = task.Description,
|
||||
Enabled = task.Enabled,
|
||||
AgentId = task.AgentId,
|
||||
Content = task.Content,
|
||||
CreatedTime = DateTime.UtcNow,
|
||||
UpdatedTime = DateTime.UtcNow
|
||||
};
|
||||
|
||||
_dc.AgentTasks.InsertOne(taskDoc);
|
||||
}
|
||||
|
||||
public bool DeleteAgentTask(string agentId, string taskId)
|
||||
{
|
||||
if (string.IsNullOrEmpty(taskId)) return false;
|
||||
|
||||
var filter = Builders<AgentTaskDocument>.Filter.Eq(x => x.Id, taskId);
|
||||
var taskDeleted = _dc.AgentTasks.DeleteOne(filter);
|
||||
return taskDeleted.DeletedCount > 0;
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
Loading…
Reference in a new issue