删除订阅
(addr string, targetID int64, targetType int64)
| 158 | |
| 159 | // 删除订阅 |
| 160 | func (d *db) deleteSubscribe(addr string, targetID int64, targetType int64) (err error) { |
| 161 | if d == nil { |
| 162 | return errDBConn |
| 163 | } |
| 164 | if addr == "" || targetID == 0 || targetType == 0 { |
| 165 | return errParam |
| 166 | } |
| 167 | d.subscribeLock.Lock() |
| 168 | defer d.subscribeLock.Unlock() |
| 169 | // 检查是否存在 |
| 170 | if err = d.sdb.Model(&serverSubscribe{}).Where("server_addr = ? and target_id = ? and target_type = ?", addr, targetID, targetType).First(&serverSubscribe{}).Error; err != nil { |
| 171 | if gorm.IsRecordNotFoundError(err) { |
| 172 | return errors.New("未找到订阅") |
| 173 | } |
| 174 | // logrus.Errorln(logPrefix+"deleteSubscribe ERROR: ", err) |
| 175 | return |
| 176 | } |
| 177 | |
| 178 | if err = d.sdb.Where("server_addr = ? and target_id = ? and target_type = ?", addr, targetID, targetType).Delete(&serverSubscribe{}).Error; err != nil { |
| 179 | // logrus.Errorln(logPrefix+"deleteSubscribe ERROR: ", err) |
| 180 | return |
| 181 | } |
| 182 | |
| 183 | // 扫描是否还有订阅,如果没有则删除服务器状态 |
| 184 | var cnt int |
| 185 | err = d.sdb.Model(&serverSubscribe{}).Where("server_addr = ?", addr).Count(&cnt).Error |
| 186 | if err != nil { |
| 187 | // logrus.Errorln(logPrefix+"deleteSubscribe ERROR: ", err) |
| 188 | return |
| 189 | } |
| 190 | if cnt == 0 { |
| 191 | _ = d.delServerStatus(addr) |
| 192 | } |
| 193 | return |
| 194 | } |
| 195 | |
| 196 | // 获取所有订阅 |
| 197 | func (d *db) getAllSubscribes() (subs []serverSubscribe, err error) { |