Files
Yi.Admin/Yi.Furion.Net6/Yi.Framework.Module/WebFirstManager/Domain/CodeFileManager.cs

54 lines
2.0 KiB
C#
Raw Normal View History

2023-09-21 19:55:55 +08:00
using Furion.DependencyInjection;
using Yi.Framework.Infrastructure.Ddd.Repositories;
using Yi.Framework.Module.WebFirstManager.Entities;
2023-09-21 00:04:55 +08:00
using Yi.Framework.Module.WebFirstManager.Handler;
namespace Yi.Framework.Module.WebFirstManager.Domain
{
/// <summary>
2023-09-24 00:42:09 +08:00
/// 代码文件领域服务,与代码文件生成相关web to code
2023-09-21 00:04:55 +08:00
/// </summary>
2023-09-24 00:42:09 +08:00
public class CodeFileManager : ITransient
2023-09-21 00:04:55 +08:00
{
2023-09-21 19:55:55 +08:00
private IEnumerable<ITemplateHandler> _templateHandlers;
private IRepository<TemplateEntity> _repository;
private IRepository<FieldEntity> _fieldRepository;
2023-09-24 00:42:09 +08:00
public CodeFileManager(IEnumerable<ITemplateHandler> templateHandlers, IRepository<FieldEntity> fieldRepository, IRepository<TemplateEntity> repository)
2023-09-21 19:55:55 +08:00
{
_templateHandlers = templateHandlers;
_repository = repository;
_fieldRepository = fieldRepository;
}
2023-09-24 00:42:09 +08:00
public async Task BuildWebToCodeAsync(TableAggregateRoot tableEntity)
2023-09-21 19:55:55 +08:00
{
var templates = await _repository.GetListAsync();
foreach (var template in templates)
{
2023-09-27 18:01:10 +08:00
var handledTempalte = new HandledTemplate();
handledTempalte.TemplateStr= template.TemplateStr;
handledTempalte.BuildPath = template.BuildPath;
2023-09-21 19:55:55 +08:00
foreach (var templateHandler in _templateHandlers)
{
templateHandler.SetTable(tableEntity);
2023-09-27 18:01:10 +08:00
handledTempalte = templateHandler.Invoker(handledTempalte.TemplateStr, handledTempalte.BuildPath);
2023-09-21 19:55:55 +08:00
}
2023-09-27 18:01:10 +08:00
await BuildToFileAsync(handledTempalte);
2023-09-21 19:55:55 +08:00
}
}
2023-09-21 00:04:55 +08:00
2023-09-27 18:01:10 +08:00
private async Task BuildToFileAsync(HandledTemplate handledTemplate)
2023-09-21 00:04:55 +08:00
{
2023-09-27 18:01:10 +08:00
if (!Directory.Exists(Path.GetDirectoryName(handledTemplate.BuildPath)))
{
Directory.CreateDirectory(Path.GetDirectoryName(handledTemplate.BuildPath));
}
await File.WriteAllTextAsync(handledTemplate.BuildPath,handledTemplate.TemplateStr);
2023-09-21 00:04:55 +08:00
}
2023-09-24 00:42:09 +08:00
2023-09-21 00:04:55 +08:00
}
}