Files
Inboxintel/src/InboxIntel.Application/DTOs/EmailDtos.cs
T
cesnimda c0c1777d3f
CI / backend (push) Successful in 48s
CI / frontend (push) Successful in 13s
Deploy Staging / deploy (push) Successful in 25s
Security / secrets (push) Successful in 3s
Security / dependencies (push) Successful in 55s
CI / backend (pull_request) Successful in 49s
CI / frontend (pull_request) Successful in 12s
Security / secrets (pull_request) Successful in 3s
Security / dependencies (pull_request) Successful in 53s
feat(search): fuzzy/typo tolerance (pg_trgm) (#16)
2026-07-01 22:45:10 +02:00

63 lines
1.7 KiB
C#

using InboxIntel.Domain.Enums;
namespace InboxIntel.Application.DTOs;
/// <summary>
/// Row summary for search/list results. <c>MatchHighlight</c> is a "why this matched" body
/// fragment (ts_headline) with matched terms wrapped in U+E000/U+E001 sentinels — NOT HTML;
/// the client renders them as escaped &lt;mark&gt; elements, so untrusted email content can
/// never inject markup. Null unless the search had a free-text query; optional/last so other
/// DTO constructors are unaffected.
/// </summary>
public record EmailSummaryDto(
Guid Id,
string GmailMessageId,
string? Subject,
string? Snippet,
string SenderAddress,
string? SenderDisplayName,
DateTimeOffset SentAtUtc,
bool IsUnread,
bool IsStarred,
bool HasAttachments,
long SizeEstimateBytes,
EmailCategory Category,
bool HasListUnsubscribe,
bool SupportsOneClick,
string? MatchHighlight = null);
/// <summary>Full single-email view, including body text, for the detail pane.</summary>
public record EmailDetailDto(
Guid Id,
string GmailMessageId,
string? Subject,
string? Snippet,
string? BodyText,
string SenderAddress,
string? SenderDisplayName,
DateTimeOffset SentAtUtc,
bool IsUnread,
bool IsStarred,
bool HasAttachments,
long SizeEstimateBytes,
EmailCategory Category,
bool HasListUnsubscribe,
bool SupportsOneClick);
public record SenderStatDto(
Guid SenderId,
string Address,
string? DisplayName,
string Domain,
int EmailCount,
int UnreadCount,
long TotalSizeBytes,
bool HasUnsubscribe,
DateTimeOffset? LastReceivedUtc);
public record AttachmentDto(
Guid Id,
string FileName,
string? MimeType,
long SizeBytes);