package controllers import ( "basic.com/dbapi.git" "github.com/gin-gonic/gin" "webserver/extend/code" "webserver/extend/util" ) type ClusterController struct { } type Cluster struct { ClusterId string `json:"cluster_id"` ClusterName string `json:"cluster_name"` Password string `json:"password"` VirtualIp string `json:"virtual_ip"` } type Node struct { Id string `json:"id"` ClusterId string `json:"cluster_id"` NodeName string `json:"node_name"` NodeId string `json:"node_id"` NodeIp string `json:"node_ip"` CreateTime string `json:"create_time"` IsAlive int } type ClusterVo struct { ClusterInfo Cluster `json:"clusterInfo"` Nodes []Node `json:"nodes"` } type ClusterCreateVo struct { Password string `json:"password"` ClusterName string `json:"clusterName"` ClusterId string `json:"clusterId"` } type ClusterSearchVo struct { Password string `json:"password"` SearchNum string `json:"searchNum"` } type ClusterJoinVo struct { ClusterId string `json:"clusterId"` Password string `json:"password"` NodeIps []string `json:"nodeIps"` } // @Summary 创建集群 // @Description 创建集群 // @Accept json // @Produce json // @Tags cluster // @Param clusterArg body controllers.ClusterCreateVo true "集群创建参数" // @Success 200 {string} json "{"code":200, success:true, msg:"", data:""}" // @Failure 500 {string} json "{"code":500, success:false, msg:"",data:""}" // @Router /data/api-v/cluster/create [post] func (cc ClusterController) Create(c *gin.Context) { var clusterVo ClusterCreateVo err := c.BindJSON(&clusterVo) if err !=nil || clusterVo.Password == "" || clusterVo.ClusterName == "" { util.ResponseFormat(c,code.RequestParamError, "参数有误") return } var api dbapi.ClusterApi b, d := api.Create(clusterVo.ClusterName, clusterVo.Password) if b { util.ResponseFormat(c,code.Success, d) } else { util.ResponseFormat(c,code.ComError,"创建失败") } } // @Summary 搜索集群 // @Description 搜索集群 // @Accept json // @Produce json // @Tags cluster // @Param searchArg body controllers.ClusterSearchVo true "集群搜索参数" // @Success 200 {string} json "{"code":200, success:true, msg:"", data:""}" // @Failure 500 {string} json "{"code":500, success:false, msg:"",data:""}" // @Router /data/api-v/cluster/search [post] func (cc ClusterController) Search(c *gin.Context) { var csv ClusterSearchVo err := c.BindJSON(&csv) if err !=nil || csv.Password == ""{ util.ResponseFormat(c,code.RequestParamError, "参数有误") return } var api dbapi.ClusterApi b,d := api.Search(csv.SearchNum, csv.Password) if b { util.ResponseFormat(c,code.Success, d) } else { util.ResponseFormat(c,code.ComError,"搜索失败") } } // @Summary 通过searchNum异步获取集群节点信息 // @Description 通过searchNum异步获取集群节点信息 // @Accept json // @Produce json // @Tags cluster // @Success 200 {string} json "{"code":200, success:true, msg:"", data:""}" // @Failure 500 {string} json "{"code":500, success:false, msg:"",data:""}" // @Router /data/api-v/cluster/getNodesByNum [get] func (cc ClusterController) GetSearchNodes(c *gin.Context) { var api dbapi.ClusterApi b, d := api.GetSearchNodes() if b { util.ResponseFormat(c,code.Success,d) } else { util.ResponseFormat(c,code.ClusterNodesEmpty,[]interface{}{}) } } // @Summary 通过searchNum停止搜索 // @Description 通过searchNum停止搜索 // @Produce json // @Tags cluster // @Param searchNum query string true "搜索编号" // @Success 200 {string} json "{"code":200, success:true, msg:"", data:""}" // @Failure 500 {string} json "{"code":500, success:false, msg:"",data:""}" // @Router /data/api-v/cluster/stopSearching [post] func (cc ClusterController) StopSearching(c *gin.Context) { searchNum := c.Query("searchNum") if searchNum == "" { util.ResponseFormat(c,code.RequestParamError, "参数有误") return } var api dbapi.ClusterApi b, d := api.StopSearching(searchNum) if b { util.ResponseFormat(c,code.Success, d) } else { util.ResponseFormat(c,code.ComError,"停止失败") } } // @Summary 加入集群 // @Description 加入集群 // @Accept json // @Produce json // @Tags cluster // @Param clusterArg body controllers.ClusterCreateVo true "集群创建参数" // @Success 200 {string} json "{"code":200, success:true, msg:"", data:""}" // @Failure 500 {string} json "{"code":500, success:false, msg:"",data:""}" // @Router /data/api-v/cluster/joinCluster [post] func (cc ClusterController) JoinCluster(c *gin.Context) { var arg ClusterJoinVo err := c.BindJSON(&arg) if err!=nil || arg.ClusterId == "" || arg.Password == "" || len(arg.NodeIps) == 0{ util.ResponseFormat(c,code.RequestParamError, "参数有误") return } var api dbapi.ClusterApi paramBody := util.Struct2Map(arg) b, d := api.JoinCluster(paramBody) if b { util.ResponseFormat(c,code.Success,d) } else { util.ResponseFormat(c,code.ComError,"加入失败") } }