using GB5Shared.ListQuery; namespace SwDAL.DTO.DbModel; // ── Main entity DTO ──────────────────────────────────────────────────────── public class DbModelDTO { public int DbModelId { get; set; } public string DbModelCode { get; set; } = string.Empty; public string DbModelName { get; set; } = string.Empty; public string? Description { get; set; } public int DbServerId { get; set; } = -1; public string? DatabaseName { get; set; } // Read-only field from JOIN public string? ServerHostName { get; set; } // Standard M-table fields public short Version { get; set; } public byte Status { get; set; } = 1; public short SortOrder { get; set; } = 9999; public int CreatedById { get; set; } public DateTime CreatedOn { get; set; } public int ModifiedById { get; set; } public DateTime ModifiedOn { get; set; } public byte SourceType { get; set; } = 5; public int TenantId { get; set; } } // ── Picklist DTO ─────────────────────────────────────────────────────────── public class DbModelPickListDTO { public int DbModelId { get; set; } public string DbModelCode { get; set; } = string.Empty; public string DbModelName { get; set; } = string.Empty; } // ── List infrastructure ──────────────────────────────────────────────────── public sealed class DbModelListCriteria : ICriteria { [CriteriaField("ouid")] public int? OUId { get; set; } [CriteriaField("dbserverid")] public int? DbServerId { get; set; } [CriteriaField("searchtext")] public string? SearchText { get; set; } [CriteriaField("sortby")] public string? SortBy { get; set; } [CriteriaField("sortdesc")] public bool SortDesc { get; set; } [CriteriaField("pagesize")] public int PageSize { get; set; } = 100; [CriteriaField("pageoffset")] public int PageOffset { get; set; } = 0; } public sealed record DbModelListQuery(DbModelListCriteria Criteria) : IListQuery; public sealed class DbModelListDTO { public int DbModelId { get; set; } public string DbModelCode { get; set; } = string.Empty; public string DbModelName { get; set; } = string.Empty; public int TotalCount { get; set; } }