34 lines
1.0 KiB
C#
34 lines
1.0 KiB
C#
using ChatBot.Common.Constants;
|
|
using ChatBot.Models.Dto;
|
|
using FluentValidation;
|
|
|
|
namespace ChatBot.Models.Validation
|
|
{
|
|
/// <summary>
|
|
/// Validator for ChatMessage
|
|
/// </summary>
|
|
public class ChatMessageValidator : AbstractValidator<ChatMessage>
|
|
{
|
|
public ChatMessageValidator()
|
|
{
|
|
RuleFor(x => x.Content)
|
|
.NotEmpty()
|
|
.WithMessage("Message content cannot be empty")
|
|
.MaximumLength(10000)
|
|
.WithMessage("Message content is too long (max 10000 characters)");
|
|
|
|
RuleFor(x => x.Role)
|
|
.NotEmpty()
|
|
.WithMessage("Message role cannot be empty")
|
|
.Must(role =>
|
|
role == ChatRoles.System
|
|
|| role == ChatRoles.User
|
|
|| role == ChatRoles.Assistant
|
|
)
|
|
.WithMessage(
|
|
$"Invalid message role. Must be one of: {ChatRoles.System}, {ChatRoles.User}, {ChatRoles.Assistant}"
|
|
);
|
|
}
|
|
}
|
|
}
|