diff options
| author | sinner <[email protected]> | 2026-08-05 01:21:17 +0000 |
|---|---|---|
| committer | sinner <[email protected]> | 2026-08-05 01:21:17 +0000 |
| commit | 4c6c8e86565ac49d1bd1c64e17c1404f4517d200 (patch) | |
| tree | 9f079e106a3f01f5d227c407e3d984a38bb2a8e9 /internal/client/admin.go | |
| parent | 2875e578f5e22ae0971d057819f1ab4362b4d115 (diff) | |
| download | dborg-4c6c8e86565ac49d1bd1c64e17c1404f4517d200.tar.gz dborg-4c6c8e86565ac49d1bd1c64e17c1404f4517d200.zip | |
Diffstat (limited to 'internal/client/admin.go')
| -rw-r--r-- | internal/client/admin.go | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/internal/client/admin.go b/internal/client/admin.go index c776b7c..707af7f 100644 --- a/internal/client/admin.go +++ b/internal/client/admin.go @@ -159,3 +159,74 @@ func (c *Client) GetAccountStats() (*models.AccountStatsResponse, error) { return &response, nil } + +// GetCreditUsageLogs fetches raw credit_usage_log rows. +// accountID=0 means all accounts. +func (c *Client) GetCreditUsageLogs(accountID int, limit int) (*models.CreditUsageLogsResponse, error) { + params := url.Values{} + if accountID > 0 { + params.Set("account_id", fmt.Sprintf("%d", accountID)) + } + if limit > 0 { + params.Set("limit", fmt.Sprintf("%d", limit)) + } + + data, err := c.Get("/admin/usage/logs", params) + if err != nil { + return nil, err + } + + var response models.CreditUsageLogsResponse + if err := json.Unmarshal(data, &response); err != nil { + return nil, fmt.Errorf("failed to parse usage logs response: %w", err) + } + return &response, nil +} + +// GetCreditUsageByEndpoint fetches per-endpoint aggregate stats. +func (c *Client) GetCreditUsageByEndpoint(from, to string) (*models.CreditUsageByEndpointResponse, error) { + params := url.Values{} + if from != "" { + params.Set("from", from) + } + if to != "" { + params.Set("to", to) + } + + data, err := c.Get("/admin/usage/by-endpoint", params) + if err != nil { + return nil, err + } + + var response models.CreditUsageByEndpointResponse + if err := json.Unmarshal(data, &response); err != nil { + return nil, fmt.Errorf("failed to parse usage by-endpoint response: %w", err) + } + return &response, nil +} + +// GetCreditUsageByAccount fetches per-account per-endpoint aggregate stats. +// accountID=0 means all accounts. +func (c *Client) GetCreditUsageByAccount(accountID int, from, to string) (*models.CreditUsageByAccountResponse, error) { + params := url.Values{} + if accountID > 0 { + params.Set("account_id", fmt.Sprintf("%d", accountID)) + } + if from != "" { + params.Set("from", from) + } + if to != "" { + params.Set("to", to) + } + + data, err := c.Get("/admin/usage/by-account", params) + if err != nil { + return nil, err + } + + var response models.CreditUsageByAccountResponse + if err := json.Unmarshal(data, &response); err != nil { + return nil, fmt.Errorf("failed to parse usage by-account response: %w", err) + } + return &response, nil +} |
