feat: add content navigation readonly endpoints

This commit is contained in:
xiong
2026-07-26 14:08:23 +08:00
parent d5379affba
commit 3221b581c8
9 changed files with 982 additions and 3 deletions

View File

@@ -0,0 +1,71 @@
using System.ComponentModel.DataAnnotations;
using Tiku.Application.Content;
namespace Tiku.Api.Contracts;
public sealed class ContentNavigationQueryDto
{
[StringLength(100)]
public string? TenantCode { get; set; }
public Guid? RegionId { get; set; }
public Guid? EntryId { get; set; }
public Guid? NodeId { get; set; }
public Guid? CollectionId { get; set; }
[StringLength(64)]
[RegularExpression("^(root|[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$")]
public string? ParentId { get; set; }
[StringLength(50)]
public string? EntryType { get; set; }
[StringLength(50)]
public string? CollectionType { get; set; }
[StringLength(50)]
public string? Mode { get; set; }
[StringLength(50)]
public string? MarkerType { get; set; }
[StringLength(100)]
public string? Keyword { get; set; }
public bool IncludeHidden { get; set; }
public bool IncludeInactive { get; set; }
[Range(1, 1000)]
public int? Limit { get; set; }
public ContentNavigationFilter ToFilter(Guid tenantId)
{
var parentWasSpecified = ParentId is not null;
var parentIsRoot = string.Equals(ParentId, "root", StringComparison.OrdinalIgnoreCase);
Guid? parentId = parentIsRoot || string.IsNullOrWhiteSpace(ParentId)
? null
: Guid.Parse(ParentId);
return new ContentNavigationFilter(
tenantId,
RegionId,
EntryId,
NodeId,
CollectionId,
parentId,
parentWasSpecified,
parentIsRoot,
EntryType,
CollectionType,
Mode,
MarkerType,
Keyword,
IncludeHidden,
IncludeInactive,
Limit);
}
}