MCPcopy Index your code
hub / github.com/tbphp/gpt-load / StreamKeysToWriter

Method StreamKeysToWriter

internal/services/key_service.go:342–369  ·  view source on GitHub ↗

StreamKeysToWriter fetches keys from the database in batches and writes them to the provided writer.

(groupID uint, statusFilter string, writer io.Writer)

Source from the content-addressed store, hash-verified

340
341// StreamKeysToWriter fetches keys from the database in batches and writes them to the provided writer.
342func (s *KeyService) StreamKeysToWriter(groupID uint, statusFilter string, writer io.Writer) error {
343 query := s.DB.Model(&models.APIKey{}).Where("group_id = ?", groupID).Select("id, key_value")
344
345 switch statusFilter {
346 case models.KeyStatusActive, models.KeyStatusInvalid:
347 query = query.Where("status = ?", statusFilter)
348 case "all":
349 default:
350 return fmt.Errorf("invalid status filter: %s", statusFilter)
351 }
352
353 var keys []models.APIKey
354 err := query.FindInBatches(&keys, chunkSize, func(tx *gorm.DB, batch int) error {
355 for _, key := range keys {
356 decryptedKey, err := s.EncryptionSvc.Decrypt(key.KeyValue)
357 if err != nil {
358 logrus.WithError(err).WithField("key_id", key.ID).Error("Failed to decrypt key for streaming, skipping")
359 continue
360 }
361 if _, err := writer.Write([]byte(decryptedKey + "\n")); err != nil {
362 return err
363 }
364 }
365 return nil
366 }).Error
367
368 return err
369}

Callers 1

ExportKeysMethod · 0.80

Calls 2

DecryptMethod · 0.65
ErrorMethod · 0.45

Tested by

no test coverage detected