using Yes.Application.Installs; namespace Yes.Blog.Endpoints.Blogs { public class InstallEndpoint : BlogEndpointScheme, IEndpoint { public void Map(IEndpointRouteBuilder app) => app.MapPost("install", Handle).WithRequestValidation(); public record Request( string DatabaseType, string DatabaseServer, string DatabaseUser, string DatabasePassword, string DatabaseName, bool UseDefaultAdmin ); public class RequestValidator : AbstractValidator { public RequestValidator() { RuleFor(x => x.DatabaseName).NotEmpty().WithMessage("数据库名不能为空!"); RuleFor(x => x.DatabaseServer).NotEmpty().WithMessage("数据库地址不能为空!"); RuleFor(x => x.DatabaseUser).NotEmpty().WithMessage("数据库用户不能为空!"); RuleFor(x => x.DatabasePassword).NotEmpty().WithMessage("数据库密码不能为空!"); } } private async Task Handle( [FromBody] Request request, IMediator mediator, IMapper mapper, CancellationToken cancellationToken) { var command = mapper.Map(request); var response = await mediator.Send(command, cancellationToken); if (response.Success) { return Result.Ok(); } else { return Result.Error(response.ErrorMessage); } } } }