using System.ComponentModel.DataAnnotations; using Nuuru.Server.DTOs.Booru; namespace Nuuru.Server.DTOs.Admin { public class TagAliasDto { public Guid Id { get; set; } public TagDto AliasTag { get; set; } = null!; public TagDto TargetTag { get; set; } = null!; public DateTime CreatedAt { get; set; } public string? CreatedByUsername { get; set; } public bool IsActive { get; set; } } public class TagImplicationDto { public Guid Id { get; set; } public TagDto AntecedentTag { get; set; } = null!; public TagDto ConsequentTag { get; set; } = null!; public DateTime CreatedAt { get; set; } public string? CreatedByUsername { get; set; } public bool IsActive { get; set; } } public class BulkOperationResult { public bool Success { get; set; } public string Message { get; set; } = string.Empty; public int AffectedPosts { get; set; } public int AffectedTags { get; set; } public int ModifiedRelations { get; set; } } public class MassTagRenameRequest { [Required] [MaxLength(250)] public string CurrentName { get; set; } = string.Empty; [Required] [MaxLength(250)] public string NewName { get; set; } = string.Empty; public List? PostIds { get; set; } public List? ExcludedPostIds { get; set; } public string? SearchQuery { get; set; } } public class MassTagDeleteRequest { [Required] [MaxLength(250)] public string TagName { get; set; } = string.Empty; public List? PostIds { get; set; } public List? ExcludedPostIds { get; set; } public string? SearchQuery { get; set; } } public class MassTagMergeRequest { [Required] [MaxLength(250)] public string SourceTagName { get; set; } = string.Empty; [Required] [MaxLength(250)] public string TargetTagName { get; set; } = string.Empty; public List? PostIds { get; set; } public List? ExcludedPostIds { get; set; } public string? SearchQuery { get; set; } } public class MassTagAddRequest { [Required] [MaxLength(250)] public string TagName { get; set; } = string.Empty; public List? PostIds { get; set; } public List? ExcludedPostIds { get; set; } public string? SearchQuery { get; set; } } public class MassTagRatingRequest { [Required] public string Rating { get; set; } = string.Empty; public List? PostIds { get; set; } public List? ExcludedPostIds { get; set; } public string? SearchQuery { get; set; } } public class MassTagUpdateRequest { public List PostIds { get; set; } = new List(); public List TagsToAdd { get; set; } = new List(); public List TagsToRemove { get; set; } = new List(); } public class CreateTagAliasRequest { [Required] [MaxLength(250)] public string AliasTagName { get; set; } = string.Empty; [Required] [MaxLength(250)] public string TargetTagName { get; set; } = string.Empty; } public class CreateTagImplicationRequest { [Required] [MaxLength(250)] public string AntecedentTagName { get; set; } = string.Empty; [Required] [MaxLength(250)] public string ConsequentTagName { get; set; } = string.Empty; } }