mirror of
https://github.com/marcominerva/SqlDatabaseVectorSearch.git
synced 2026-06-20 12:23:10 +00:00
Add FluentValidation for Question model validation
- Updated `AskEndpoints.cs` to include `MinimalHelpers.FluentValidation` and standardize endpoint descriptions. - Integrated FluentValidation in `Program.cs` and registered validators. - Modified `SqlDatabaseVectorSearch.csproj` to add necessary package references for FluentValidation. - Created `QuestionValidator` class to enforce validation rules on the `Question` model.
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
|
||||
using System.ComponentModel;
|
||||
using System.ComponentModel;
|
||||
using MinimalHelpers.FluentValidation;
|
||||
using SqlDatabaseVectorSearch.Models;
|
||||
using SqlDatabaseVectorSearch.Services;
|
||||
|
||||
@@ -15,6 +15,7 @@ public class AskEndpoints : IEndpointRouteHandlerBuilder
|
||||
var response = await vectorSearchService.AskQuestionAsync(question, reformulate, cancellationToken);
|
||||
return TypedResults.Ok(response);
|
||||
})
|
||||
.WithValidation<Question>()
|
||||
.WithSummary("Asks a question")
|
||||
.WithDescription("The question will be reformulated taking into account the context of the chat identified by the given ConversationId.")
|
||||
.WithTags("Ask");
|
||||
@@ -35,6 +36,7 @@ public class AskEndpoints : IEndpointRouteHandlerBuilder
|
||||
|
||||
return Stream();
|
||||
})
|
||||
.WithValidation<Question>()
|
||||
.WithSummary("Asks a question and gets the response as streaming")
|
||||
.WithDescription("The question will be reformulated taking into account the context of the chat identified by the given ConversationId.")
|
||||
.WithTags("Ask");
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using System.Net.Mime;
|
||||
using System.Text.Json.Serialization;
|
||||
using FluentValidation;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.SemanticKernel;
|
||||
using SqlDatabaseVectorSearch.Components;
|
||||
@@ -82,6 +83,9 @@ builder.Services.AddOpenApi(options =>
|
||||
options.AddDefaultProblemDetailsResponse();
|
||||
});
|
||||
|
||||
ValidatorOptions.Global.LanguageManager.Enabled = false;
|
||||
builder.Services.AddValidatorsFromAssemblyContaining<Program>();
|
||||
|
||||
builder.Services.AddDefaultProblemDetails();
|
||||
builder.Services.AddDefaultExceptionHandler();
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
<PackageReference Include="DocumentFormat.OpenXml" Version="3.3.0" />
|
||||
<PackageReference Include="EFCore.SqlServer.VectorSearch" Version="9.0.0-preview.2" />
|
||||
<PackageReference Include="EntityFrameworkCore.Exceptions.SqlServer" Version="8.1.3" />
|
||||
<PackageReference Include="FluentValidation.DependencyInjectionExtensions" Version="12.0.0" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.4" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="9.0.4" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="9.0.4">
|
||||
@@ -25,6 +26,7 @@
|
||||
<PackageReference Include="Microsoft.ML.Tokenizers.Data.O200kBase" Version="1.0.2" />
|
||||
<PackageReference Include="Microsoft.SemanticKernel" Version="1.48.0" />
|
||||
<PackageReference Include="MimeMapping" Version="3.1.0" />
|
||||
<PackageReference Include="MinimalHelpers.FluentValidation" Version="1.1.3" />
|
||||
<PackageReference Include="MinimalHelpers.Routing.Analyzers" Version="1.1.3" />
|
||||
<PackageReference Include="PdfPig" Version="0.1.10" />
|
||||
<PackageReference Include="Swashbuckle.AspNetCore.SwaggerUI" Version="8.1.1" />
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
using FluentValidation;
|
||||
using SqlDatabaseVectorSearch.Models;
|
||||
|
||||
namespace SqlDatabaseVectorSearch.Validators;
|
||||
|
||||
public class QuestionValidator : AbstractValidator<Question>
|
||||
{
|
||||
public QuestionValidator()
|
||||
{
|
||||
RuleFor(x => x.Text).NotEmpty().MaximumLength(4096).WithName("Question Text");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user