using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace ServicesDAO.models { /// /// Catálogo estático de cómo se consume cada tecnología. Una o varias filas por /// servicio (una por componente); no la escribe ningún proceso automático. /// [Table("service_connection_info")] public class ServiceConnectionInfo { [Key] [Column("ServiceConnectionInfoID")] public int ServiceConnectionInfoID { get; set; } [Column("services_id")] public int ServicesId { get; set; } /// Empata con service_endpoints.resource_role. NULL = aplica a todos los componentes. [Column("component")] public string? Component { get; set; } /// 'cli' | 'web' | 'gui'. [Column("kind")] public string Kind { get; set; } /// /// Cómo se combinan N endpoints en una cadena: 'first' (un punto de entrada /// aunque haya varios nodos), 'join' (todos los endpoints en una sola cadena, /// como los bootstrap servers de Kafka) o 'each' (un acceso distinto por /// componente, como Hadoop+Spark). /// [Column("endpoint_strategy")] public string EndpointStrategy { get; set; } /// /// El puerto que se le ofrece al cliente, no el puerto del Service: un mismo /// Service puede publicar varios y sólo uno ser el correcto. /// [Column("default_port")] public int? DefaultPort { get; set; } /// NULL = usar el usuario que capturó el cliente en el alta. [Column("default_user")] public string? DefaultUser { get; set; } /// /// Texto plano con marcadores ({HOSTNAME}, {PORT}, {USER}, {CONTRASEÑA}…), /// nunca HTML: su contenido termina insertado en el DOM del navegador y el /// marcado lo pone la vista. /// [Column("template")] public string? Template { get; set; } [Column("notes")] public string? Notes { get; set; } [Column("sort_order")] public int SortOrder { get; set; } [Column("active")] public bool Active { get; set; } } }