Added basic search implementation with display components

This commit is contained in:
Vincent Allen
2025-10-16 09:24:52 -04:00
852 changed files with 6519 additions and 29467 deletions

View File

@@ -1,4 +1,6 @@
using System.ComponentModel.DataAnnotations;
using NpgsqlTypes;
using Persic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Diagnostics.CodeAnalysis;
using System.Text;
@@ -11,8 +13,8 @@ public class ArtifactGrouping
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string? ArtifactGroupingIdentifier
{
public string? ArtifactGroupingIdentifier
{
get
{
return ModelHelpers.MakeIdentifier(IdentifierFields.Values, Category.FieldSeparator, null);
@@ -36,7 +38,8 @@ public class ArtifactGrouping
public required ArchiveCategory Category { get; set; }
private IdentifierFields _identifierFields;
public required IdentifierFields IdentifierFields {
public required IdentifierFields IdentifierFields
{
get => _identifierFields;
set
{
@@ -45,7 +48,7 @@ public class ArtifactGrouping
throw new ArgumentException(nameof(IdentifierFields), $"The number of field values must be equal to the field count of the {nameof(ArchiveCategory)}");
}
_identifierFields = value;
_identifierFields = value;
}
}
@@ -95,7 +98,7 @@ public class ArtifactGrouping
{
continue;
}
// Only yield a tag if we have not yielded it yet
foreach (ArtifactEntryTag tag in tags)
{
@@ -110,4 +113,38 @@ public class ArtifactGrouping
}
}
}
/// <summary>
/// Enables searching using postgres full text search
/// </summary>
///
public string AllSearchString { get; set; } = "";
public NpgsqlTsVector? AllSearchVector { get; set; }
public string TagsSearchString { get; set; } = "";
public NpgsqlTsVector? TagsSearchVector { get; set; }
public string DefectsSearchString { get; set; } = "";
public NpgsqlTsVector? DefectsSearchVector { get; set; }
public string ListedNamesSearchString { get; set; } = "";
public NpgsqlTsVector? ListedNamesSearchVector { get; set; }
public string TitleSearchString { get; set; } = "";
public NpgsqlTsVector? TitleSearchVector { get; set; }
public string DescriptionSearchString { get; set; } = "";
public NpgsqlTsVector? DescriptionSearchVector { get; set; }
public string FilenamesSearchString { get; set; } = "";
public NpgsqlTsVector FilenamesSearchVector { get; set; }
public string FileContentSearchString { get; set; } = "";
public NpgsqlTsVector FileContentSearchVector { get; set; }
}