summaryrefslogtreecommitdiffstats
path: root/internal/formatter/account.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/formatter/account.go')
-rw-r--r--internal/formatter/account.go53
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
+}