err=DB.Where("`group` = ? and model = ? and enabled = 1",group,model).Order("CASE WHEN priority <> 0 THEN priority ELSE RANDOM() END DESC ").Limit(1).First(&ability).Error
maxPrioritySubQuery:=DB.Model(&Ability{}).Select("MAX(priority)").Where("`group` = ? and model = ? and enabled = 1",group,model)
err=DB.Where("`group` = ? and model = ? and enabled = 1 and priority = (?)",group,model,maxPrioritySubQuery).Order("RANDOM()").Limit(1).First(&ability).Error
}else{
err=DB.Where("`group` = ? and model = ? and enabled = 1",group,model).Order("CASE WHEN priority <> 0 THEN priority ELSE RAND() END DESC").Limit(1).First(&ability).Error
maxPrioritySubQuery:=DB.Model(&Ability{}).Select("MAX(priority)").Where("group = ? and model = ? and enabled = 1",group,model)
err=DB.Where("`group` = ? and model = ? and enabled = 1 and priority = (?)",group,model,maxPrioritySubQuery).Order("RAND()").Limit(1).First(&ability).Error