package model

import "encoding/json"

// NeHost 网元主机表 ne_host
type NeHost struct {
	HostID     string `json:"hostId" gorm:"column:host_id"`                                      // 主机主键
	HostType   string `json:"hostType" gorm:"column:host_type" binding:"oneof=ssh telnet"`       // 主机类型 ssh telnet
	GroupID    string `json:"groupId" gorm:"column:group_id"`                                    // 分组（0默认 1网元 2系统）
	Title      string `json:"title" gorm:"column:title"`                                         // 标题名称
	Addr       string `json:"addr" gorm:"column:addr" binding:"required"`                        // 主机地址
	Port       int64  `json:"port" gorm:"column:port" binding:"required,number,max=65535,min=1"` // SSH端口
	User       string `json:"user" gorm:"column:user" binding:"required"`                        // 主机用户名
	AuthMode   string `json:"authMode" gorm:"column:auth_mode" binding:"oneof=0 1"`              // 认证模式（0密码 1主机私钥）
	Password   string `json:"password" gorm:"column:password"`                                   // 认证密码
	PrivateKey string `json:"privateKey" gorm:"column:private_key"`                              // 认证私钥
	PassPhrase string `json:"passPhrase" gorm:"column:pass_phrase"`                              // 认证私钥密码
	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"`                              // 更新时间
}

// TableName 表名称
func (NeHost) TableName() string {
	return "ne_host"
}

// CopyTo 网元主机信息将josn同key名的结构体复制给另一个结构体
func (m *NeHost) CopyTo(to interface{}) error {
	b, err := json.Marshal(m)
	if err != nil {
		return err
	}
	if err = json.Unmarshal(b, to); err != nil {
		return err
	}
	return nil
}
