diff options
Diffstat (limited to 'internal/formatter/account.go')
| -rw-r--r-- | internal/formatter/account.go | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/internal/formatter/account.go b/internal/formatter/account.go new file mode 100644 index 0000000..67f92bb --- /dev/null +++ b/internal/formatter/account.go @@ -0,0 +1,53 @@ +package formatter + +import ( + "encoding/json" + "fmt" + "git.db.org.ai/dborg/internal/models" + "strings" +) + +func FormatAccountStats(stats *models.AccountStatsResponse, jsonOutput bool) (string, error) { + if jsonOutput { + data, err := json.Marshal(stats) + if err != nil { + return "", fmt.Errorf("failed to marshal account stats: %w", err) + } + return string(data), nil + } + + var output strings.Builder + + if stats.Account != nil { + output.WriteString("Account Information:\n") + output.WriteString(fmt.Sprintf(" Name: %s\n", stats.Account.Name)) + output.WriteString(fmt.Sprintf(" API Key: %s\n", stats.Account.APIKey)) + output.WriteString(fmt.Sprintf(" Credits: %d\n", stats.Account.Credits)) + output.WriteString(fmt.Sprintf(" Unlimited: %t\n", stats.Account.Unlimited)) + output.WriteString(fmt.Sprintf(" Premium: %t\n", stats.Account.IsPremium)) + output.WriteString(fmt.Sprintf(" Admin: %t\n", stats.Account.IsAdmin)) + output.WriteString("\n") + } + + if stats.UsageStats != nil && len(stats.UsageStats) > 0 { + output.WriteString("Usage Statistics:\n") + for service, count := range stats.UsageStats { + output.WriteString(fmt.Sprintf(" %s: %d\n", service, count)) + } + output.WriteString("\n") + } + + if stats.TotalRequests > 0 { + output.WriteString(fmt.Sprintf("Total Requests: %d\n", stats.TotalRequests)) + } + + if stats.CreditsUsed > 0 { + output.WriteString(fmt.Sprintf("Credits Used: %d\n", stats.CreditsUsed)) + } + + if stats.Message != "" { + output.WriteString(fmt.Sprintf("Message: %s\n", stats.Message)) + } + + return output.String(), nil +} |
