package nodeconfig import ( "github.com/gogf/gf/v2/database/gdb" "github.com/gogf/gf/v2/frame/g" "golang.org/x/net/context" "nodeMonitor/internal/dao" "nodeMonitor/internal/model" "nodeMonitor/internal/model/do" "nodeMonitor/internal/model/entity" "nodeMonitor/internal/service" ) type ( sNodeConfig struct{} ) func init() { service.RegisterNodeConfig(New()) } func New() *sNodeConfig { return &sNodeConfig{} } func (c *sNodeConfig) GetAll(ctx context.Context) (nodeConfig []*model.NodeConfigItem, err error) { var node []*model.NodeConfigItem err = dao.Node.Ctx(ctx).OrderDesc("create_at").ScanList(&node, "Node") if err != nil { return nil, err } err = dao.Nodeconfig.Ctx(ctx).Where("serverid", gdb.ListItemValuesUnique(node, "Node", "Id")).ScanList(&node, "NodeConfig", "Node", "serverid=id") if err != nil { return nil, err } nodeConfig = node return } // Get 获取节点配置 func (c *sNodeConfig) Get(ctx context.Context, id int) (nodeConfig *entity.Nodeconfig, err error) { var node = new(entity.Nodeconfig) err = dao.Nodeconfig.Ctx(ctx).Where("serverid", id).Scan(&node) nodeConfig = node return } // Create 创建节点配置 func (c *sNodeConfig) Create(ctx context.Context, input model.NodeConfigAndEditCreateInput) error { return dao.Nodeconfig.Transaction(ctx, func(ctx context.Context, tx gdb.TX) error { _, err := dao.Nodeconfig.Ctx(ctx).Data(do.Nodeconfig{ Serverid: input.ServerId, Sshcommand: input.SshCom, Sshpassword: input.SshPass, Sshusername: input.SshUser, }).Insert() return err }) } // Edit 编辑节点配置 func (c *sNodeConfig) Edit(ctx context.Context, input model.NodeConfigAndEditCreateInput) error { _, err := dao.Nodeconfig.Ctx(ctx).Where("serverid", input.ServerId).Update(g.Map{ "sshcommand": input.SshCom, "sshpassword": input.SshPass, "sshusername": input.SshUser, }) return err } // IsExist 节点是否存在 func (c *sNodeConfig) IsExist(ctx context.Context, serverid int) (bool, error) { count, err := dao.Nodeconfig.Ctx(ctx).Where(g.Map{ "serverid": serverid, }).Count() if err != nil { return false, err } return count == 0, nil } // Delete 节点是否存在 func (c *sNodeConfig) Delete(ctx context.Context, serverid int) error { _, err := dao.Nodeconfig.Ctx(ctx).Where(g.Map{ "serverid": serverid, }).Delete() return err }