This repository has been archived on 2026-04-03. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
core/server/crypto/status.go
Jeffrey Smith 680ec3b897
All checks were successful
CI/CD / detect-changes (push) Successful in 3s
CI/CD / test-frontend (push) Successful in 5s
CI/CD / test-go-pg (push) Successful in 2m34s
CI/CD / test-sqlite (push) Successful in 2m46s
CI/CD / build-and-deploy (push) Successful in 1m55s
Feat rebrand armature (#43)
Co-authored-by: Jeffrey Smith <jasafpro@gmail.com>
Co-committed-by: Jeffrey Smith <jasafpro@gmail.com>
2026-03-31 23:25:37 +00:00

47 lines
1.2 KiB
Go

package crypto
import (
"database/sql"
"fmt"
)
// VaultStatusInfo holds vault health information for admin display.
type VaultStatusInfo struct {
EncryptionKeySet bool `json:"encryption_key_set"`
EncryptedKeys int `json:"encrypted_keys"` // provider_configs with api_key_enc
VaultUsers int `json:"vault_users"` // users with vault_set = true
}
// VaultStatus gathers vault health metrics from the database.
// Used by both the CLI (`armature vault status`) and the admin API endpoint.
func VaultStatus(db *sql.DB, encryptionKey string) (*VaultStatusInfo, error) {
if db == nil {
return nil, fmt.Errorf("database not available")
}
info := &VaultStatusInfo{
EncryptionKeySet: encryptionKey != "",
}
// Count encrypted provider keys (global + team + personal)
err := db.QueryRow(`
SELECT COUNT(*) FROM provider_configs
WHERE api_key_enc IS NOT NULL
`).Scan(&info.EncryptedKeys)
if err != nil {
return nil, fmt.Errorf("count encrypted keys: %w", err)
}
// Count users with active vaults
err = db.QueryRow(`
SELECT COUNT(*) FROM users
WHERE vault_set = true
`).Scan(&info.VaultUsers)
if err != nil {
// vault_set column might not exist on very old installs
info.VaultUsers = 0
}
return info, nil
}