in server/cluster_handler.go [71:114]
func handleClusterListCmd(w http.ResponseWriter, t *clusterInfoReq) error {
var err error
var cond string
var args = make([]interface{}, 0)
cond, args = state.AddSQLCond(cond, args, "AND", "name", "=", t.Name)
cond, args = state.AddSQLCond(cond, args, "AND", "host", "=", t.Host)
cond, args = state.AddSQLCond(cond, args, "AND", "user", "=", t.User)
if t.Port != 0 {
cond, args = state.AddSQLCond(cond, args, "AND", "port", "=", fmt.Sprintf("%+v", t.Port))
}
cond, args = addFilter(cond, args, []string{"name", "host", "user"}, t.Filter)
if cond != "" {
cond = " WHERE " + cond
}
if t.Offset != 0 || t.Limit != 0 {
if t.Limit == 0 && t.Offset != 0 {
t.Limit = int64((^uint64(0)) >> 1) //MaxInt
}
cond += fmt.Sprintf(" LIMIT %v,%v", t.Offset, t.Limit)
}
var rows []db.Addr
if rows, err = state.GetClusterInfo(cond, args...); err == nil {
var resp []byte
for _, v := range rows {
var b []byte
if b, err = json.Marshal(&db.Addr{Name: v.Name, Host: v.Host, Port: v.Port, User: v.User}); err != nil {
break
}
resp = append(resp, b...)
resp = append(resp, '\n')
}
if err == nil {
_, err = w.Write(resp)
}
}
return err
}