ListKeysInGroupQuery builds a query to list all keys within a specific group, filtered by status.
(groupID uint, statusFilter string, searchHash string)
| 291 | |
| 292 | // ListKeysInGroupQuery builds a query to list all keys within a specific group, filtered by status. |
| 293 | func (s *KeyService) ListKeysInGroupQuery(groupID uint, statusFilter string, searchHash string) *gorm.DB { |
| 294 | query := s.DB.Model(&models.APIKey{}).Where("group_id = ?", groupID) |
| 295 | |
| 296 | if statusFilter != "" { |
| 297 | query = query.Where("status = ?", statusFilter) |
| 298 | } |
| 299 | |
| 300 | if searchHash != "" { |
| 301 | query = query.Where("key_hash = ?", searchHash) |
| 302 | } |
| 303 | |
| 304 | orderBy := "last_used_at desc, id desc" |
| 305 | if s.DB.Dialector.Name() == "postgres" { |
| 306 | orderBy = "last_used_at desc nulls last, id desc" |
| 307 | } |
| 308 | |
| 309 | query = query.Order(orderBy) |
| 310 | |
| 311 | return query |
| 312 | } |
| 313 | |
| 314 | // TestMultipleKeys handles a one-off validation test for multiple keys. |
| 315 | func (s *KeyService) TestMultipleKeys(group *models.Group, keysText string) ([]keypool.KeyTestResult, error) { |