using GB5Shared.ListQuery; namespace SwDAL.DTO.DbServer; // ── Main entity DTO ──────────────────────────────────────────────────────── public class DbServerDTO { public int DbServerId { get; set; } public string? HostName { get; set; } public int Port { get; set; } = 1433; public byte DbType { get; set; } = 0; // 0=SqlServer,1=PostgreSQL,2=MySQL,3=Oracle public string DbUsername { get; set; } = string.Empty; // credential — never log public string DbPassword { get; set; } = string.Empty; // credential — never log, never cache public string? ServerDesc { get; set; } public string DatabaseName { get; set; } /// Join-only, populated by DbServerQB.GET_DATABASE_LIST_BY_HOSTNAME — the specific /// ClientDatabase row this DatabaseName came from (a single DbServerId can back several /// ClientDatabase rows, so this is the field that actually identifies which one). Null /// everywhere else this DTO is used. public int? ClientDbId { 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 DbServerPickListDTO { public int DbServerId { get; set; } public string HostName { get; set; } = string.Empty; public string DbUserName { get; set; } } public class GetServerHostNameDTO { public string HostName { get; set; } public string DbUserName { get; set; } } // ── List infrastructure ──────────────────────────────────────────────────── public sealed class DbServerListCriteria : ICriteria { [CriteriaField("ouid")] public int? OUId { get; set; } [CriteriaField("dbtype")] public byte? DbType { 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 DbServerListQuery(DbServerListCriteria Criteria) : IListQuery; public sealed class DbServerListDTO { public int DbServerId { get; set; } public string HostName { get; set; } = string.Empty; public int Port { get; set; } public byte DbType { get; set; } public int TotalCount { get; set; } }