ETCD后台服务
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

67 lines
2.2 KiB

package models
import (
"encoding/json"
"fmt"
)
// EtcdServersModel etcd 服务列表
type EtcdServersModel struct {
ID int32 `json:"id" gorm:"column:id;primary_key"`
Version string `json:"version" gorm:"column:version"`
Name string `json:"name" gorm:"column:name"`
Address string `json:"address" gorm:"column:address"`
TlsEnable string `json:"tls_enable" gorm:"column:tls_enable"`
CertFile string `json:"cert_file" gorm:"column:cert_file"`
KeyFile string `json:"key_file" gorm:"column:key_file"`
CaFile string `json:"ca_file" gorm:"column:ca_file"`
Username string `json:"username" gorm:"column:username"`
Password string `json:"password" gorm:"column:password"`
Desc string `json:"desc" gorm:"column:desc"`
CreatedAt JSONTime `gorm:"column:created_at" json:"created_at"` // 添加时间
UpdatedAt JSONTime `gorm:"column:updated_at" json:"updated_at"` // 更新时间
}
// TableName 表名
func (EtcdServersModel) TableName() string {
return "etcd_servers"
}
// All 获取全部
func (m *EtcdServersModel) All(name string, roleId int32) (list []*EtcdServersModel, err error) {
re := new(RoleEtcdServersModel).TableName()
err = client.Table(m.TableName()+" as e").Select("DISTINCT e.id, e.*").
Joins("LEFT JOIN "+re+" as re on re.etcd_server_id = e.id").
Where("e.name like ? and re.role_id = ?", fmt.Sprintf("%%%s%%", name), roleId).
Scan(&list).Error
return
}
// FirstById 根据id查询一个etcd服务
func (m *EtcdServersModel) FirstById(id int32) (one *EtcdServersModel, err error) {
one = new(EtcdServersModel)
err = client.Model(m).Where("id = ?", id).First(one).Error
return
}
// Insert 添加
func (m *EtcdServersModel) Insert() (err error) {
err = client.Create(m).Error
return
}
// Update 修改
func (m *EtcdServersModel) Update() (err error) {
edit := make(map[string]interface{}, 0)
js, _ := json.Marshal(m)
json.Unmarshal(js, &edit)
err = client.Model(new(EtcdServersModel)).Where("id = ?", m.ID).Updates(edit).Error
return
}
// Del 删除
func (m *EtcdServersModel) Del(id int32) (err error) {
err = client.Table(m.TableName()).Where("id = ?", id).Delete(m).Error
new(RoleEtcdServersModel).DelByEtcdId(id)
return
}