chatMessageUsage builds a ChatMessageUsage from the database row, returning nil when no token fields are populated.
(m database.ChatMessage)
| 1587 | // chatMessageUsage builds a ChatMessageUsage from the database row, |
| 1588 | // returning nil when no token fields are populated. |
| 1589 | func chatMessageUsage(m database.ChatMessage) *codersdk.ChatMessageUsage { |
| 1590 | inputTokens := nullInt64Ptr(m.InputTokens) |
| 1591 | outputTokens := nullInt64Ptr(m.OutputTokens) |
| 1592 | totalTokens := nullInt64Ptr(m.TotalTokens) |
| 1593 | reasoningTokens := nullInt64Ptr(m.ReasoningTokens) |
| 1594 | cacheCreationTokens := nullInt64Ptr(m.CacheCreationTokens) |
| 1595 | cacheReadTokens := nullInt64Ptr(m.CacheReadTokens) |
| 1596 | contextLimit := nullInt64Ptr(m.ContextLimit) |
| 1597 | |
| 1598 | if inputTokens == nil && outputTokens == nil && totalTokens == nil && |
| 1599 | reasoningTokens == nil && cacheCreationTokens == nil && |
| 1600 | cacheReadTokens == nil && contextLimit == nil { |
| 1601 | return nil |
| 1602 | } |
| 1603 | |
| 1604 | return &codersdk.ChatMessageUsage{ |
| 1605 | InputTokens: inputTokens, |
| 1606 | OutputTokens: outputTokens, |
| 1607 | TotalTokens: totalTokens, |
| 1608 | ReasoningTokens: reasoningTokens, |
| 1609 | CacheCreationTokens: cacheCreationTokens, |
| 1610 | CacheReadTokens: cacheReadTokens, |
| 1611 | ContextLimit: contextLimit, |
| 1612 | } |
| 1613 | } |
| 1614 | |
| 1615 | // ChatQueuedMessage converts a queued message to its SDK representation. |
| 1616 | func ChatQueuedMessage(message database.ChatQueuedMessage) codersdk.ChatQueuedMessage { |
no test coverage detected