package model

// NeInfo 网元信息对象 ne_info
type NeInfo struct {
	ID         int64  `json:"id" gorm:"column:id;primaryKey;autoIncrement"`
	NeType     string `json:"neType" gorm:"column:ne_type" binding:"required"`                   // 网元类型
	NeId       string `json:"neId" gorm:"column:ne_id" binding:"required"`                       // 网元ID
	RmUID      string `json:"rmUid" gorm:"column:rm_uid"`                                        // 网元资源唯一标识
	NeName     string `json:"neName" gorm:"column:ne_name"`                                      // 网元名称
	IP         string `json:"ip" gorm:"column:ip" binding:"required"`                            // 网元服务IP
	Port       int64  `json:"port" gorm:"column:port" binding:"required,number,max=65535,min=1"` // 端口
	PvFlag     string `json:"pvFlag" gorm:"column:pv_flag" binding:"omitempty,oneof=PNF VNF"`    // 网元虚拟化标识 物理PNF 虚拟VNF
	Province   string `json:"province" gorm:"column:province"`                                   // 省份地域
	VendorName string `json:"vendorName" gorm:"column:vendor_name"`                              // 厂商名称
	Dn         string `json:"dn" gorm:"column:dn"`                                               // 网络标识
	NeAddress  string `json:"neAddress" gorm:"column:ne_address"`                                // MAC地址
	HostIDs    string `json:"hostIds" gorm:"column:host_ids"`                                    // 网元主机ID组 数据格式(ssh,telnet) UDM(ssh,telnet,redis) UPF(ssh,telnet,telnet)
	Status     int64  `json:"status" gorm:"column:status"`                                       // 网元状态 0离线 1在线 2配置待下发 3备用模式
	Remark     string `json:"remark" gorm:"column:remark"`                                       // 备注
	CreateBy   string `json:"createBy" gorm:"column:create_by"`                                  // 创建者
	CreateTime int64  `json:"createTime" gorm:"column:create_time"`                              // 创建时间
	UpdateBy   string `json:"updateBy" gorm:"column:update_by"`                                  // 更新者
	UpdateTime int64  `json:"updateTime" gorm:"column:update_time"`                              // 更新时间

	// ====== 非数据库字段属性 ======

	// 服务状态
	ServerState map[string]any `json:"serverState,omitempty" gorm:"-"`

	// 主机对象组
	Hosts []NeHost `json:"hosts,omitempty" gorm:"-"`
}

// TableName 表名称
func (*NeInfo) TableName() string {
	return "ne_info"
}
