From 76d0cff639988ca506b1dc6e848841944c96b263 Mon Sep 17 00:00:00 2001 From: s Date: Sun, 16 Nov 2025 02:40:58 -0500 Subject: docs: add comprehensive api endpoints documentation and expand cli functionality --- internal/formatter/account.go | 53 +++++++++++++++++++++++++++++++++++++++++++ internal/formatter/github.go | 29 +++++++++++++++++++++++ 2 files changed, 82 insertions(+) create mode 100644 internal/formatter/account.go create mode 100644 internal/formatter/github.go (limited to 'internal/formatter') 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 +} diff --git a/internal/formatter/github.go b/internal/formatter/github.go new file mode 100644 index 0000000..1d28af5 --- /dev/null +++ b/internal/formatter/github.go @@ -0,0 +1,29 @@ +package formatter + +import ( + "encoding/json" + "fmt" + "git.db.org.ai/dborg/internal/models" + "strings" +) + +func FormatGitHubLeads(lead *models.GitHubLeadsStreamResponse, jsonOutput bool) (string, error) { + if jsonOutput { + data, err := json.Marshal(lead.Lead) + if err != nil { + return "", fmt.Errorf("failed to marshal GitHub lead: %w", err) + } + return string(data), nil + } + + var output strings.Builder + output.WriteString(fmt.Sprintf("Repository: %s\n", lead.Lead.Repository)) + output.WriteString(fmt.Sprintf("Author: %s\n", lead.Lead.Author)) + output.WriteString(fmt.Sprintf("Email: %s\n", lead.Lead.Email)) + output.WriteString(fmt.Sprintf("Commit: %s\n", lead.Lead.Commit)) + output.WriteString(fmt.Sprintf("Date: %s\n", lead.Lead.Date)) + output.WriteString(fmt.Sprintf("Message: %s\n", lead.Lead.Message)) + output.WriteString("---\n") + + return output.String(), nil +} -- cgit v1.2.3