// UpdateLabelInfo updates project label information, returns false if the project does not exist. func UpdateLabelInfo(path string, label string, add bool) bool { // Connect to database. q := connDb() defer q.Close() info := new(hv.PkgInfo) err := q.WhereEqual("path", path).Find(info) if err != nil { return false } i := strings.Index(info.Labels, "$"+label+"|") switch { case i == -1 && add: // Add operation and does not contain. info.Labels += "$" + label + "|" _, err = q.Save(info) if err != nil { beego.Error("models.UpdateLabelInfo -> add:", path, err) } case i > -1 && !add: // Delete opetation and contains. info.Labels = strings.Replace(info.Labels, "$"+label+"|", "", 1) _, err = q.Save(info) if err != nil { beego.Error("models.UpdateLabelInfo -> delete:", path, err) } } return true }