package model

// NeInfo 网元信息对象 ne_info
type NeInfo struct {
	ID         string `json:"id" gorm:"id"`
	NeType     string `json:"neType" gorm:"ne_type" binding:"required"`
	NeId       string `json:"neId" gorm:"ne_id" binding:"required"`
	RmUID      string `json:"rmUid" gorm:"rm_uid"`
	NeName     string `json:"neName" gorm:"ne_name"`
	IP         string `json:"ip" gorm:"ip" binding:"required"`
	Port       int64  `json:"port" gorm:"port" binding:"required,number,max=65535,min=1"`
	PvFlag     string `json:"pvFlag" gorm:"pv_flag" binding:"oneof=PNF VNF"` // ''PNF'',''VNF''
	Province   string `json:"province" gorm:"province"`                      // 省份地域
	VendorName string `json:"vendorName" gorm:"vendor_name"`
	Dn         string `json:"dn" gorm:"dn"`
	NeAddress  string `json:"neAddress" gorm:"ne_address"`   // MAC地址
	HostIDs    string `json:"hostIds" gorm:"host_ids"`       // 网元主机ID组 数据格式(ssh,telnet) UDM(ssh,telnet,redis) UPF(ssh,telnet,telnet)
	Status     string `json:"status" gorm:"status"`          // 0离线 1在线 2配置待下发
	Remark     string `json:"remark" gorm:"remark"`          // 备注
	CreateBy   string `json:"createBy" gorm:"create_by"`     // 创建者
	CreateTime int64  `json:"createTime" gorm:"create_time"` // 创建时间
	UpdateBy   string `json:"updateBy" gorm:"update_by"`     // 更新者
	UpdateTime int64  `json:"updateTime" gorm:"update_time"` // 更新时间

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

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

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