using System.Linq;
using xAiModels.Models;
using xCommons.Extensions;
using xAiModels.Models.Dtos;
using xAiModels.Models.Entities;
namespace xAiModels.Extensions
{
///
/// Extensions Methods for XAiModels ...
///
public static class XAiModelsExtensions
{
///
/// Validate a Project for Add Or Update ...
///
///
///
public static bool IsValidForAddOrUpdate(this XAiProject source)
{
//
var result =
!source.IsNullOrDefault() &&
!source.OwnerId.IsNullOrEmpty() &&
!source.Title.IsNullOrEmpty() &&
!source.Prompt.IsNullOrEmpty();
//
return result;
}
public static bool IsValidForAddOrUpdate(this XAiProjectDto source)
{
//
var result =
!source.IsNullOrDefault() &&
!source.OwnerId.IsNullOrEmpty() &&
!source.Title.IsNullOrEmpty() &&
!source.Prompt.IsNullOrEmpty();
//
return result;
}
///
/// Validate a Conversation for Add Or Update ...
///
///
///
public static bool IsValidForAddOrUpdate(this XAiConversation source)
{
//
var result =
!source.IsNullOrDefault() &&
!source.OwnerId.IsNullOrEmpty() &&
!source.Title.IsNullOrEmpty() &&
!source.ProjectId.IsNull() &&
!source.ProjectId.IsDefaultGuid();
//
return result;
}
public static bool IsValidForAddOrUpdate(this XAiConversationDto source)
{
//
var result =
!source.IsNullOrDefault() &&
!source.OwnerId.IsNullOrEmpty() &&
!source.Title.IsNullOrEmpty() &&
!source.ProjectId.IsNull() &&
!source.ProjectId.IsDefaultGuid();
//
return result;
}
///
/// Validate a Message for Add Or Update ...
///
///
///
public static bool IsValidForAddOrUpdate(this XAiMessage source)
{
//
var result =
!source.IsNullOrDefault() &&
!source.OwnerId.IsNullOrEmpty() &&
source.Role.IsValid() &&
!source.ConversationId.IsNull() &&
!source.ConversationId.IsDefaultGuid() &&
!source.Content.IsNullOrEmpty();
//
return result;
}
public static bool IsValidForAddOrUpdate(this XAiMessageDto source)
{
//
var result =
!source.IsNullOrDefault() &&
!source.OwnerId.IsNullOrEmpty() &&
source.Role.IsValid() &&
!source.ConversationId.IsNull() &&
!source.ConversationId.IsDefaultGuid() &&
!source.Content.IsNullOrEmpty();
//
return result;
}
///
/// Validate a Model Descriptor ...
///
///
///
public static bool IsValid(this XAiModelDescriptor source)
{
//
var result =
!source.IsNullOrDefault() &&
!source.Name.IsNullOrEmpty() &&
!source.Url.IsNullOrEmpty() &&
source.Url.IsValidUrl() &&
!source.LLM.IsNullOrEmpty() &&
source.Provider != Constants.XAiModelProviderType.None;
//
return result;
}
///
/// Validate Specified Param ...
///
///
///
public static bool IsValid(this XAiPromptParam source)
{
//
var result =
!source.IsNullOrDefault() &&
!source.Name.IsNullOrEmpty() &&
!source.Param.IsNullOrEmpty();
//
return result;
}
///
/// Validate Specified Prompt ...
///
///
///
public static bool IsValid(this XAiPromptDescriptor source)
{
//
var result =
!source.IsNullOrDefault() &&
!source.Name.IsNullOrEmpty() &&
!source.Template.IsNullOrEmpty();
if (!result)
{
return result;
}
//
if (source.Params.HasChild())
{
result =
result &&
source.Params.All(x => x.IsValid());
}
//
return result;
}
}
}